Ansible报错‘ansible.legacy.setup重定向至ansible.windows.setup无法加载’原因排查
Ansible Windows模块重定向错误原因及解决办法
问题场景
在Windows服务器上执行Ansible剧本时,触发如下错误:
The module ansible.legacy.setup was redirected to ansible.windows.setup, which could not be loaded
剧本内容
--- - name: Test get values hosts: dc gather_facts: true become: true tasks: - name: Value of inventory_hostname debug: var={{ inventory_hostname }} - name: Value of ansible_hostname debug: var={{ ansible_hostname }} - name: Value of ansible_user debug: var={{ ansible_user }}
主机文件内容
[dc] spwawsinfdc01 [dc:vars] ansible_host=10.11.12.13 ansible_user=username ansible_port=5986 ansible_connection=winrm ansible_winrm_scheme=https ansible_winrm_server_cert_validation=ignore ansible_winrm_kerberos_delegation=true
执行命令
ansible-playbook -i hosts main.yaml --ask-pass
错误原因
这个错误的核心是缺少Ansible官方Windows模块集合:
- 当Ansible通过
winrm连接Windows主机时,会自动将通用的ansible.legacy.setup模块重定向到Windows专属的ansible.windows.setup模块,但如果控制节点未安装ansible.windows集合,就会触发模块加载失败。 - Ansible核心包不包含Windows专属模块,这类模块需要单独安装对应的集合包才能使用。
解决办法
- 安装ansible.windows集合
在控制节点执行以下命令完成安装:
ansible-galaxy collection install ansible.windows
- 临时替代方案(不推荐)
如果暂时无法安装集合,可以关闭剧本中的事实收集功能(但会导致ansible_hostname这类依赖事实的变量无法获取):
将剧本内的gather_facts: true修改为gather_facts: false
内容的提问来源于stack exchange,提问作者Brian G
相关产品推荐
相关产品推荐

