【发布时间】:2018-04-22 07:12:54
【问题描述】:
我在 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" ---> "ssh: 连接到主机 127.0.0.1 端口 22"
Packer 每次都使用“随机”端口 - 而 ansible 使用的是默认端口。
如何让 packer 使用与 ansible 相同的端口?
【问题讨论】:
-
你能解释一下你为什么会这样吗?
-
因为我需要 ansible 才能连接到 packer 启动的 SSH 代理 - 目前它不能,因为它使用不同的端口。
-
您是否按照此处的说明进行操作 packer.io/docs/provisioners/ansible.html#winrm-communicator 并在模板中指定了
communicator: winrm。如果您不提供template.json或仔细解释每个细节,真的很难理解您的问题。
标签: ansible ansible-2.x packer winrm