
Использование Packer для создания AMI на базе Windows Server 2019 и Ansible в качестве поставщика.
Это provisioners
часть моего packer-build.json
:
"provisioners": [
{
"type": "ansible",
"playbook_file": "./provisioners/ansible/ansible_playbook.yml",
"user": "Administrator",
"use_proxy": false,
"extra_arguments": ["-e", "ansible_winrm_server_cert_validation=ignore"]
}
]
Это мое ansible_playbook.yml
:
---
- name: Jenkins node playbook
hosts: all
tasks:
- include_tasks: update_system.yml
- include_tasks: install_dependencies.yml
- include_tasks: create_user.yml
По крайней мере, я могу это подтвердить update_system.yml
и install_dependencies.yml
это работает успешно.
Это мое create_user.yml
:
---
- name: Ensure user jenkins is present
ansible.windows.win_user:
name: jenkins
password: ***REDACTED***
state: present
groups:
- Users
.
.
.
В этот момент я получаю сообщение об ошибке:
amazon-ebs: ЗАДАЧА [Убедиться, что пользователь jenkins присутствует] ********************************************
amazon-ebs: fatal: [default]: UNREACHABLE! => {"changed": false, "msg": "basic: Попытка выполнения недопустимой операции с разделом реестра, который был помечен для удаления. (расширенные данные об ошибке: {'transport_message': 'От сервера возвращен неверный HTTP-ответ. Код 500', 'http_status_code': 500, 'wsmanfault_code': '2147943418', 'fault_code': 's:Receiver', 'fault_subcode': 'w:InternalError'})", "unreachable": true}
Поиск в Google по запросу «ansible Попытка выполнения недопустимой операции с разделом реестра, помеченным для удаления» ничего полезного не дал.
При написании этого вопроса я попытался воспроизвести проблему и, чтобы получить более быстрые результаты, я изменил ansible_playbook.yml
с
---
- name: Jenkins node playbook
hosts: all
tasks:
- include_tasks: update_system.yml
- include_tasks: install_dependencies.yml
- include_tasks: create_user.yml
к
---
- name: Jenkins node playbook
hosts: all
tasks:
- include_tasks: create_user.yml
- include_tasks: update_system.yml
- include_tasks: install_dependencies.yml
поэтому ставим create_user.yml
на первое место.
Результат: ошибка больше не может быть воспроизведена.
Затем я восстановил исходную конфигурацию, и ошибка также больше не возникала.
Для меня это вообще не имеет никакого смысла, и я этому не доверяю. Звучит какГейзенбагмне.
Что это за ошибка и как я могу быть абсолютно уверен, что она не повторится?
@Точка с запятойв комментариях спрашивали о содержании update_system.yml
и install_dependencies.yml
.
---
- name: Install all critical and security updates
win_updates:
category_names:
- CriticalUpdates
- SecurityUpdates
state: installed
register: update_result
- name: Reboot host if required
win_reboot:
when: update_result.reboot_required
---
- name: Install AWS CLI
win_shell: Import-Module AWSPowerShell
- name: install the Win32-OpenSSH service
win_chocolatey:
name: openssh
package_params: /SSHServerFeature
state: present
- name: Install required software
win_chocolatey:
name: '{{ item }}'
state: present
loop:
- openjdk11
- maven
- git
- ghostscript
- imagemagick
- nodejs
- nuget.commandline
- visualstudio2017buildtools