Ansible for Windows hosts(ansible.windows 模块介绍)

Ansible 具有许多专为 Windows 操作系统设计的模块,它使得自动化 Windows 任务变得简单。下面我将介绍一些常用的 Ansible Windows 模块,以及如何配置 Ansible 以管理 Windows 主机。

更详细的用法请参考:Using Ansible and Windows --- Ansible Community Documentation

配置 Ansible 以管理 Windows

在开始使用 Ansible 管理 Windows 主机之前,需要进行一些配置:

  1. 安装必要的 Python 库

    • 确保在你的控制节点上安装 pywinrmrequests-kerberosrequests-ntlm 库,用于远程管理 Windows 主机。
    bash 复制代码
    pip install pywinrm requests-kerberos requests-ntlm
  2. 更新 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
  3. 配置 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!!

相关推荐
王维同学23 分钟前
Credential Provider、Filter 与 PLAP 的 CLSID 枚举
c++·windows·安全·注册表
寒水馨2 小时前
Windows下载、安装 Codex CLI(附安装包codex-x86_64-pc-windows-msvc.exe)
windows·rust·codex·终端工具·自动化编程·codex cli·ai编码代理
其实防守也摸鱼5 小时前
镜像校验完成iso完整操作流程(Windows 环境,适配 Ubuntu 22.04 / 24.04)
linux·服务器·windows·学习·ubuntu·教程
像风一样自由202015 小时前
从本地到公网:Windows 下使用 Cloudflare Quick Tunnel 与 Natapp 联调 FastAPI
windows·fastapi
2601_9609067221 小时前
科技“无人区”跋涉,难度高、不确定性大
windows·macos·pycharm·myeclipse
会飞的大鱼人21 小时前
一文搞懂 Java HashSet:把它想成游乐园里只允许一次入场的盖章名单
java·开发语言·windows
ziguo11221 天前
C/C++ 错误处理全解:从 errno 到 C++ 异常
linux·c语言·c++·windows·visual studio
王维同学1 天前
IFEO Debugger、VerifierDlls 与 SilentProcessExit 配置
c++·windows·安全·注册表
您^_^1 天前
使用技巧(十一):Claude Code 最强审问官 —— grill-me 深度指南,装完先别写代码
人工智能·windows·个人开发·claudecode·deepseek v4 pro
酉鬼女又兒1 天前
[特殊字符]零基础入门AI:归纳演绎、假设空间、归纳偏好、NFL、过拟合与欠拟合、模型评估选择、超参数、性能度量、混淆矩阵、P-R曲线和F1
人工智能·windows·python·深度学习·安全·机器学习·矩阵