Ansible 管理Windows主机的流程涉及以下几个关键步骤:
准备Ansible主控端
在Linux机器上安装Ansible: Ansible 控制端通常运行在Linux环境中,你需要在你的Linux服务器或工作站上安装Ansible。对于大多数Linux发行版,可以通过包管理器安装,例如在Ubuntu上:
shell
sudo apt update
sudo apt install ansible
安装所需Python库: 为了管理Windows主机,需要安装pywinrm
库:
shell
pip install "pywinrm>=0.3.0"
配置Windows被控端
在Windows主机上启用WinRM服务: 打开PowerShell(以管理员身份运行)并执行以下命令:
powershell
# 启用并配置WinRM服务
winrm quickconfig -q
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force
winrm set winrm/config/service/auth @{Basic="true"}
winrm set winrm/config/service @{AllowUnencrypted="true"} # 开启未加密通信(仅测试环境),生产环境建议使用HTTPS加密通信
Restart-Service WinRM
注意:生产环境中不推荐使用未加密通信,应配置HTTPS并安装适当的证书。
配置Windows防火墙: 确保防火墙允许来自Ansible主控端的WinRM通信,通常需要开放TCP 5985(HTTP)或5986(HTTPS)端口。
添加Windows主机到Ansible库存
在Ansible inventory文件中定义Windows主机: 更新或创建inventory.ini
(或其他Inventory文件),例如:
ini
[windows_hosts]
windows_server ansible_host=192.168.1.100 ansible_connection=winrm ansible_winrm_transport=basic
ansible_user=Administrator ansible_password=mysecretpassword
注意:这里的ansible_connection
设置为winrm
表明使用WinRM进行连接,ansible_winrm_transport
可以设置为basic
(基本身份验证)或其他认证方式,如credssp
(带代理的CredSSP认证)。
运行Ansible Playbook
编写并执行Playbook: 编写一个Ansible Playbook来管理Windows主机,例如一个简单的ping测试任务:
yaml
---
- name: Manage Windows Hosts
hosts: windows_hosts
gather_facts: yes
tasks:
- name: Test connection
win_ping:
执行Playbook:
shell
ansible-playbook my_playbook.yaml -i inventory.ini
高级配置
- 如果使用域账户,确保Ansible主控端有权限访问和使用该账户登录Windows主机。
- 对于较新的Ansible版本,考虑使用
ansible.windows
模块集,它包含了更多针对Windows特性的模块。 - 如果需要处理复杂的权限模型,可以使用Vault加密敏感数据,避免明文存储密码。
- 在大规模部署时,可以考虑使用SSH公钥认证或 Kerberos 认证提高安全性。
请根据实际情况和最新的Ansible官方文档调整上述步骤。