Проблемы с использованием Packer и Ansible с WinRM Connection - PullRequest
0 голосов
/ 02 апреля 2020

Прежде всего, я прошу прощения за длину этого поста, но я подумал, что лучше будет тщательно и подробно описать то, что я пробовал до сих пор. Я также все еще немного новичок в 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, он снова работает нормально.

...