我在docker容器中运行packer以在AWS中配置Windows服务器。我正在使用winrm连接到打包器构建器,但是在我的打包器构建中运行ansible playbook步骤时遇到了问题。
似乎packer启动了一个ssh代理,然后通过winrm(来自日志)将命令转发到我的远程机器:
packer: 2017/11/09 09:33:37 SSH proxy: serving on 127.0.0.1:45145
再往下一点,我看到了:
<127.0.0.1> ESTABLISH SSH CONNECTION FOR USER: root[0m
<127.0.0.1> SSH: EXEC ssh -C -o ControlMaster=auto
-o ControlPersist=60s
-o StrictHostKeyChecking=no
-o 'IdentityFile="/tmp/ansible-key835953388"'
-o KbdInteractiveAuthentication=no
-o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey
-o PasswordAuthentication=no
-o User=root
-o ConnectTimeout=10
-o ControlPath=/root/.ansible/cp/842df7d42c 127.0.0.1 'PowerShell -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -EncodedCommand <redacted>'
<127.0.0.1> (255, '', 'ssh: connect to host 127.0.0.1 port 22: Connection refused\r\n')
我看到一个明显的问题:
“SSH代理:在127.0.0.1上提供服务: 45145 ”---&gt; “ssh:连接到主机127.0.0.1端口 22 ”
Packer每次使用一个“随机”端口 - 而ansible使用默认端口。
如何让打包器使用与ansible相同的端口?
答案 0 :(得分:0)
看起来我只需要为打包器提供配置设置:
https://www.packer.io/docs/provisioners/ansible.html#local_port
local_port(string) - 尝试侦听SSH连接的端口。这个值是一个起点。供应商将尝试从local_port开始,在第一个可用的十个端口上侦听SSH连接。当local_port丢失或为空时,使用系统选择的端口。