Heisenbug:ansible.windows.win_user 失败,显示“尝试对已标记为删除的注册表项进行非法操作”。

Heisenbug:ansible.windows.win_user 失败,显示“尝试对已标记为删除的注册表项进行非法操作”。

使用 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.ymlinstall_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'})“,”unreachable“: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

相关内容