You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible playbook在Windows域及工作组主机执行异常问题求助

问题根因

你遇到的Ansible默认走SSH连接的问题,核心是连接类变量未被正确加载,常见原因包括:

  • 运行playbook时未正确加载修改后的清单文件
  • ini格式清单内的组变量存在格式错误(如行首空格、变量名拼写错误)
  • 存在其他更高优先级的变量覆盖了ansible_connection配置

解决方案

方案1:优化现有ini清单配置

将公共WinRM配置抽离为父组变量,减少重复配置同时避免格式错误:
修改common_inventory内容如下:

[win_domain]
10.1.2.3
10.1.2.4

[win_workgroup]
10.1.2.5
10.1.2.6

# 配置父组统一管理Windows主机通用连接参数
[windows:children]
win_domain
win_workgroup

[windows:vars]
ansible_connection: winrm
ansible_winrm_transport: credssp
ansible_port: '5986'
ansible_winrm_scheme: 'https'
ansible_winrm_server_cert_validation: 'ignore'
ansible_winrm_operation_timeout_sec: 60
ansible_winrm_read_timeout_sec: 70

[win_domain:vars]
ansible_user: 'WINDOMAIN\ansmgmt'
ansible_password: 'Ansa123!'

[win_workgroup:vars]
ansible_user: 'ansalocal'
ansible_password: 'Welcome!1'

配置完成后先执行命令验证变量是否正确加载:
ansible-inventory -i common_inventory --list --vars
确认输出中两组主机的ansible_connection值为winrm后再运行playbook,若ansible.cfg中已配置inventory = ./common_inventory,可省略-i参数。

方案2:使用group_vars目录管理变量(更易维护)

在playbooks根目录新建group_vars目录,按分组拆分变量文件,目录结构如下:

playbooks/
├── group_vars/
│   ├── windows/
│   │   └── main.yml  # 存放所有Windows主机通用WinRM配置
│   ├── win_domain/
│   │   └── main.yml  # 存放域主机专属账号配置
│   └── win_workgroup/
│       └── main.yml  # 存放工作组主机专属账号配置
├── ansible.cfg
├── common_inventory
├── servers.yml
└── roles/

各文件内容如下:
group_vars/windows/main.yml:

ansible_connection: winrm
ansible_winrm_transport: credssp
ansible_port: '5986'
ansible_winrm_scheme: 'https'
ansible_winrm_server_cert_validation: 'ignore'
ansible_winrm_operation_timeout_sec: 60
ansible_winrm_read_timeout_sec: 70

group_vars/win_domain/main.yml:

ansible_user: 'WINDOMAIN\ansmgmt'
ansible_password: 'Ansa123!'

group_vars/win_workgroup/main.yml:

ansible_user: 'ansalocal'
ansible_password: 'Welcome!1'

common_inventory仅保留主机分组配置即可:

[win_domain]
10.1.2.3
10.1.2.4

[win_workgroup]
10.1.2.5
10.1.2.6

[windows:children]
win_domain
win_workgroup

该方案变量加载优先级更高,后续调整连接参数或账号信息更清晰,无需修改清单文件。

排障提示

如果仍然出现SSH连接报错,运行playbook时添加-vvv参数,查看ansible_connection变量的加载来源,排查是否有全局变量、host_vars文件或其他角色变量覆盖了该配置。

内容的提问来源于stack exchange,提问作者Kelvin A. Vasquez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:48:03