如何让Ansible使用与SSH代理打包程序启动时相同的SSH端口?

时间:2017-11-09 10:24:38

标签: ansible ansible-2.x packer winrm

我在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相同的端口?

1 个答案:

答案 0 :(得分:0)

看起来我只需要为打包器提供配置设置:

https://www.packer.io/docs/provisioners/ansible.html#local_port

  

local_port(string) - 尝试侦听SSH连接的端口。这个值是一个起点。供应商将尝试从local_port开始,在第一个可用的十个端口上侦听SSH连接。当local_port丢失或为空时,使用系统选择的端口。