Я запускаю упаковщик внутри док-контейнера для предоставления сервера Windows в AWS. Я использую winrm для подключения к сборщику упаковщиков, но столкнулся с проблемой при запуске шага ansible playbook в моей сборке упаковщика.
Похоже, упаковщик запускает 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 использует порт по умолчанию.
Как заставить упаковщик использовать тот же порт, что и ansible?
communicator: winrm
в своем шаблоне. Очень трудно понять вашу проблему, если вы не предоставите своиtemplate.json
или очень подробно объясните каждую деталь. - person Rickard von Essen   schedule 09.11.2017