
Uso de Packer para crear una AMI basada en Windows Server 2019 y Ansible como aprovisionador.
Esta es la provisioners
parte de mi 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 es mi 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
Puedo confirmar eso al menos update_system.yml
y install_dependencies.yml
ejecutarlo correctamente.
Este es mi create_user.yml
:
---
- name: Ensure user jenkins is present
ansible.windows.win_user:
name: jenkins
password: ***REDACTED***
state: present
groups:
- Users
.
.
.
Recibo un error en este punto:
amazon-ebs: TAREA [Asegúrese de que el usuario jenkins esté presente] **************************************** ****
amazon-ebs: fatal: [predeterminado]: ¡INALCANCE! => {"changed": false, "msg": "basic: Se intentó una operación ilegal en una clave de registro que se ha marcado para su eliminación. (datos de error extendidos: {'transport_message': 'Respuesta HTTP incorrecta devuelta por el servidor. Código 500 ', 'http_status_code': 500, 'wsmanfault_code': '2147943418', 'fault_code': 's:Receiver', 'fault_subcode': 'w:InternalError'})", "inalcanzable": verdadero}
Buscar en Google "intento de operación ilegal ansible en una clave de registro que ha sido marcada para eliminación" no arrojó nada útil.
Mientras escribía esta pregunta, intenté reproducir el problema y, para obtener resultados más rápidos, cambié 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
a
---
- name: Jenkins node playbook
hosts: all
tasks:
- include_tasks: create_user.yml
- include_tasks: update_system.yml
- include_tasks: install_dependencies.yml
así que poniendo create_user.yml
primero.
Resultado: el error ya no se pudo reproducir.
Luego restauré la configuración original y ya no tuve el error.
Eso no tiene ningún sentido para mí y no confío en ello. Suena como unHeisenbuga mi.
¿Qué es este error y cómo puedo estar absolutamente seguro de que no vuelva a ocurrir?
@Punto y comapreguntó en los comentarios sobre el contenido de update_system.yml
y 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