Прежде всего, я прошу прощения за длину этого поста, но я подумал, что лучше будет тщательно и подробно описать то, что я пробовал до сих пор. Я также все еще немного новичок в Ansible, так что простите, если я делаю что-то глупо, очевидно, неправильно.
Итак, я пытаюсь создать сборщик упаковщика и использовать Ansible для своей конфигурации / установка приложения работает, но у меня возникают некоторые проблемы при попытке использовать разъем WinRM Ansible, и Googling не дал мне никаких реальных ответов, поэтому я надеюсь, что кто-то здесь сможет помочь или указать мне правильное направление .
Перед тем как позвонить ansible, я загрузил и запустил скрипт ConfigureRemotingFor Ansible .ps1, который успешно завершился. При доступе к текущей сборке виртуальной машины я вижу, что она создала сертификат и настроила WinRM с прослушиванием WinRM на портах 5985 и 5986. Встроенный межсетевой экран Windows на этом этапе полностью отключен.
Мой первоначальный вызов упаковщика Ansible был
{
"type": "ansible",
"playbook_file" : "./playbooks/{{user `playbook`}}.yml",
"extra_arguments": [
"--connection", "packer", "-vvv",
"--extra-vars", "ansible_connection=winrm ansible_winrm_server_cert_validation=ignore"
]
},
Однако в разделе «Сбор фактов» произошел сбой с ошибкой
vsphere-iso: fatal: [default]: UNREACHABLE! => {
vsphere-iso: "changed": false,
vsphere-iso: "msg": "ssl: auth method ssl requires a password",
vsphere-iso: "unreachable": true
vsphere-iso: }
Следующим моим шагом было внедрение ansible_username и ansible_password ,
{
"type": "ansible",
"playbook_file" : "./playbooks/{{user `playbook`}}.yml",
"extra_arguments": [
"--connection", "packer", "-vvv",
"--extra-vars", "ansible_connection=winrm ansible_winrm_server_cert_validation=ignore ansible_user=packer ansible_password=password"
]
},
Имя пользователя 'упаковщик' - это имя, указанное в самом упаковщике, и я убедился, что он существует как локальный пользователь и входит в группу локальных администраторов. Набор паролей тот же, что и в самом упаковщике. К сожалению, это не с новой ошибкой,
vsphere-iso: <127.0.0.1> ESTABLISH WINRM CONNECTION FOR USER: packer on PORT 36344 TO 127.0.0.1
==> vsphere-iso: failed to handshake
vsphere-iso: fatal: [default]: UNREACHABLE! => {
vsphere-iso: "changed": false,
vsphere-iso: "msg": "ssl: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:618)",
vsphere-iso: "unreachable": true
vsphere-iso: }
Этот порт неверен, поэтому я добавил ansible_port = 5985 к моему ansible вызову,
{
"type": "ansible",
"playbook_file" : "./playbooks/{{user `playbook`}}.yml",
"extra_arguments": [
"--connection", "packer", "-vvv",
"--extra-vars", "ansible_connection=winrm ansible_winrm_server_cert_validation=ignore ansible_user=packer ansible_password=password ansible_port=5985"
]
},
Однако это не удается с помощью ошибка,
vsphere-iso: <127.0.0.1> ESTABLISH WINRM CONNECTION FOR USER: packer on PORT 5985 TO 127.0.0.1
vsphere-iso: fatal: [default]: UNREACHABLE! => {
vsphere-iso: "changed": false,
vsphere-iso: "msg": "plaintext: ('Connection aborted.', error(111, 'Connection refused'))",
vsphere-iso: "unreachable": true
vsphere-iso: }
Поэтому я не могу понять, почему в соединении отказывают. Имя пользователя и пароль верны, пользователь является локальной учетной записью и членом локальной группы администраторов, Windows Брандмауэр отключен, WinRM, похоже, прослушивает. Так что я в растерянности относительно того, что еще я могу проверить, а что еще может быть не так.
Для справки, я запускаю Playbook, вот что,
---
- hosts: all
become: false
roles:
- myrole1
Как и все из сбоев в разделе Сбор фактов, однако я не думаю, что содержание моих ролей вызывает проблему.
Я должен также указать, что если я сделаю этот ansible вызов,
{
"type": "ansible",
"playbook_file" : "./playbooks/{{user `playbook`}}.yml",
"extra_arguments": [
"--connection", "packer", "-vvv",
"--extra-vars", "ansible_shell_type=powershell ansible_shell_executable=None"
]
},
Тогда соединение идет через S SH и работает абсолютно нормально, но только пока я использую Ansible 2.7. В тот момент, когда я обновляюсь до Ansible 2.9, происходит сбой с этой ошибкой,
vsphere-iso: <127.0.0.1> (1, '', "Warning: Permanently added '[127.0.0.1]:34657' (RSA) to the list of known hosts.\r\nParameter format not correct - ;\r\n")
vsphere-iso: <127.0.0.1> Failed to connect to the host via ssh: Warning: Permanently added '[127.0.0.1]:34657' (RSA) to the list of known hosts.
vsphere-iso: Parameter format not correct - ;
vsphere-iso: fatal: [default]: FAILED! => {
vsphere-iso: "ansible_facts": {},
vsphere-iso: "changed": false,
vsphere-iso: "failed_modules": {
vsphere-iso: "setup": {
vsphere-iso: "failed": true,
vsphere-iso: "module_stderr": "Warning: Permanently added '[127.0.0.1]:34657' (RSA) to the list of known hosts.\r\nParameter format not correct - ;\r\n",
vsphere-iso: "module_stdout": "",
vsphere-iso: "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
vsphere-iso: "rc": 1
vsphere-iso: }
vsphere-iso: },
vsphere-iso: "msg": "The following modules failed to execute: setup\n"
vsphere-iso: }
Но как только я возвращаюсь к Ansible 2.7, он снова работает нормально.