
Usando Packer para construir uma AMI baseada em Windows Server 2019 e Ansible como provisionador.
Esta é a provisioners
parte do meu 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"]
}
]
Este é meu 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
Posso confirmar isso pelo menos update_system.yml
e install_dependencies.yml
executar com sucesso.
Este é meu create_user.yml
:
---
- name: Ensure user jenkins is present
ansible.windows.win_user:
name: jenkins
password: ***REDACTED***
state: present
groups:
- Users
.
.
.
Recebo um erro neste momento:
amazon-ebs: TAREFA [Garantir que o usuário jenkins esteja presente] ************************************** ****
amazon-ebs: fatal: [padrão]: INALECÁVEL! => {"changed": false, "msg": "basic: Tentativa de operação ilegal em uma chave de registro que foi marcada para exclusão. (dados de falha estendidos: {'transport_message': 'Resposta HTTP incorreta retornada do servidor. Código 500 ', 'http_status_code': 500, 'wsmanfault_code': '2147943418', 'fault_code': 's:Receiver', 'fault_subcode': 'w:InternalError'})", "inacessível": verdadeiro}
Pesquisar no Google "tentativa de operação ilegal ansible em uma chave de registro que foi marcada para exclusão" não rendeu nada de útil.
Ao escrever esta pergunta, tentei reproduzir o problema e, para obter resultados mais rápidos, mudei ansible_playbook.yml
de
---
- name: Jenkins node playbook
hosts: all
tasks:
- include_tasks: update_system.yml
- include_tasks: install_dependencies.yml
- include_tasks: create_user.yml
para
---
- name: Jenkins node playbook
hosts: all
tasks:
- include_tasks: create_user.yml
- include_tasks: update_system.yml
- include_tasks: install_dependencies.yml
então colocando create_user.yml
em primeiro lugar.
Resultado: o erro não pôde mais ser reproduzido.
Depois restaurei a configuração original e também não tive mais o erro.
Isso não faz nenhum sentido para mim e não confio nisso. Parece umHeisenbugpara mim.
O que é esse erro e como posso ter certeza absoluta de que ele não ocorrerá novamente?
@Ponto e vírgulaperguntado nos comentários sobre o conteúdo de update_system.yml
e 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