Ansible 具有许多专为 Windows 操作系统设计的模块,它使得自动化 Windows 任务变得简单。下面我将介绍一些常用的 Ansible Windows 模块,以及如何配置 Ansible 以管理 Windows 主机。
更详细的用法请参考:Using Ansible and Windows --- Ansible Community Documentation
配置 Ansible 以管理 Windows
在开始使用 Ansible 管理 Windows 主机之前,需要进行一些配置:
-
安装必要的 Python 库:
- 确保在你的控制节点上安装
pywinrm
和requests-kerberos
或requests-ntlm
库,用于远程管理 Windows 主机。
bashpip install pywinrm requests-kerberos requests-ntlm
- 确保在你的控制节点上安装
-
更新 Ansible 配置文件:
- 在
ansible.cfg
文件中,添加以下内容以配置 Ansible 使用 WinRM 连接到 Windows 主机:
ini[defaults] inventory = hosts remote_user = your_user_name [inventory] enable_plugins = host_list, script, yaml, ini, auto, toml [winrm] transport = ntlm
- 在
-
配置 Windows 主机:
- 确保 Windows 主机上启用了 WinRM 服务,并且配置正确。这可以通过运行以下 PowerShell 脚本来完成:
powershell# Configure LCM for Ansible [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Set-ExecutionPolicy RemoteSigned -Force ConfigureRemotingForAnsible.ps1
常用的 Windows 模块
文件和目录管理
- win_file: 管理文件和目录的存在性、权限等属性。
yaml
- name: Ensure a file exists
ansible.windows.win_file:
path: C:\path\to\file.txt
state: touch
- name: Ensure a directory is present
ansible.windows.win_file:
path: C:\path\to\directory
state: directory
软件管理
- win_package: 安装或卸载软件包。
yaml
- name: Install a package
ansible.windows.win_package:
name: "Google Chrome"
path: "C:\\path\\to\\chrome_installer.exe"
state: present
- name: Uninstall a package
ansible.windows.win_package:
name: "Google Chrome"
state: absent
服务管理
- win_service: 管理 Windows 服务的状态。
yaml
- name: Ensure a service is running
ansible.windows.win_service:
name: wuauserv
state: started
- name: Ensure a service is stopped
ansible.windows.win_service:
name: wuauserv
state: stopped
用户和组管理
- win_user: 管理 Windows 系统中的用户。
yaml
- name: Create a new user
ansible.windows.win_user:
name: johndoe
password: "SecurePassword123!"
state: present
- name: Delete a user
ansible.windows.win_user:
name: johndoe
state: absent
- win_group: 管理 Windows 系统中的组。
yaml
- name: Create a new group
ansible.windows.win_group:
name: Admins
state: present
- name: Add a user to a group
ansible.windows.win_group_membership:
name: johndoe
groups: Admins
state: present
注册表管理
- win_regedit: 管理 Windows 注册表项和值。
yaml
- name: Add a registry key
ansible.windows.win_regedit:
path: HKLM:\Software\MyCompany
name: TestKey
state: present
- name: Remove a registry key
ansible.windows.win_regedit:
path: HKLM:\Software\MyCompany
name: TestKey
state: absent
系统和环境配置
- win_environment: 管理 Windows 环境变量。
yaml
- name: Set a system environment variable
ansible.windows.win_environment:
name: PATH
value: "C:\path\to\directory"
state: present
level: machine
- name: Remove a system environment variable
ansible.windows.win_environment:
name: OLD_VAR
state: absent
level: machine
示例:简单的 Windows 配置 Playbook
yaml
- name: Example playbook for managing Windows hosts
hosts: windows
tasks:
- name: Ensure C:\temp directory exists
ansible.windows.win_file:
path: C:\temp
state: directory
- name: Install 7-Zip
ansible.windows.win_package:
name: 7-Zip
path: C:\path\to\7zip_installer.exe
state: present
- name: Ensure Windows Update service is running
ansible.windows.win_service:
name: wuauserv
start_mode: auto
state: started
- name: Set a system environment variable
ansible.windows.win_environment:
name: MY_ENV_VAR
value: "MyValue"
state: present
level: machine
通过这些模块和配置方法,你可以使用 Ansible 轻松地管理和自动化 Windows 主机。
Good Good Study, Day Day UP!!