
使用 Packer 建立基於 Windows Server 2019 的 AMI,並使用 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:致命:[預設]:無法存取! => {“changed”:false,“msg”:“basic:嘗試對已標記為刪除的註冊表項進行非法操作。(擴展故障資料:{'transport_message':'從伺服器傳回錯誤的HTTP回應。 500 ', 'http_status_code': 500, 'wsmanfault_code': '2147943418', 'fault_code': 's:Receiver', 'fault_subcode': 'w:InternalError'})", "無法存取": true}
谷歌搜尋「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