
Verwenden von Packer zum Erstellen eines AMI basierend auf Windows Server 2019 und Ansible als Provisioner.
Dies ist der provisioners
Teil von mir 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"]
}
]
Das ist mein 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
Das kann ich zumindest bestätigen update_system.yml
und install_dependencies.yml
erfolgreich ausführen.
Das ist mein create_user.yml
:
---
- name: Ensure user jenkins is present
ansible.windows.win_user:
name: jenkins
password: ***REDACTED***
state: present
groups:
- Users
.
.
.
An dieser Stelle erhalte ich eine Fehlermeldung:
amazon-ebs: TASK [Sicherstellen, dass Benutzer Jenkins anwesend ist] ******************************************
amazon-ebs: fatal: [default]: UNREACHABLE! => {"changed": false, "msg": "basic: Unzulässiger Vorgang an einem Registrierungsschlüssel, der zum Löschen markiert wurde. (erweiterte Fehlerdaten: {'transport_message': 'Ungültige HTTP-Antwort vom Server zurückgegeben. Code 500', 'http_status_code': 500, 'wsmanfault_code': '2147943418', 'fault_code': 's:Receiver', 'fault_subcode': 'w:InternalError'})", "unreachable": true}
Die Google-Suche nach „Ansible: Unzulässiger Vorgang an einem zum Löschen markierten Registrierungsschlüssel versucht“ hat nichts Nützliches ergeben.
Beim Schreiben dieser Frage habe ich versucht, das Problem zu reproduzieren. Um schnellere Ergebnisse zu erzielen, habe ich ansible_playbook.yml
Folgendes geändert:
---
- name: Jenkins node playbook
hosts: all
tasks:
- include_tasks: update_system.yml
- include_tasks: install_dependencies.yml
- include_tasks: create_user.yml
Zu
---
- name: Jenkins node playbook
hosts: all
tasks:
- include_tasks: create_user.yml
- include_tasks: update_system.yml
- include_tasks: install_dependencies.yml
also create_user.yml
an erster Stelle setzen.
Ergebnis: Der Fehler war nicht mehr reproduzierbar.
Anschließend habe ich die ursprüngliche Konfiguration wiederhergestellt und auch bei mir trat der Fehler nicht mehr auf.
Das ergibt für mich überhaupt keinen Sinn und ich vertraue dem nicht. Klingt wie einHeisenbugmir.
Was ist das für ein Fehler und wie kann ich absolut sichergehen, dass er nicht noch einmal auftritt?
@Semikolonfragte in den Kommentaren nach dem Inhalt von update_system.yml
und 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