使用 Ansible 管理 Windows - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
wsgzao

使用 Ansible 管理 Windows

  •  
  •   wsgzao
    wsgzao May 21, 2018 2580 views
    This topic created in 2900 days ago, the information mentioned may be changed or developed.

    前言

    本文主要介绍在如何使用 Ansible 管理 Windows 客户端,Ansible 官方提供了一个很方便的安装脚本,对于外网用户来说安装真的很轻松,可惜我遇到的问题是如何在内网部署,有相同烦恼的小伙伴不妨参考下

    轻轻松松使用 Ansible 管理 Windows 客户端

    更新历史

    2018 年 05 月 21 日 - 初稿

    阅读原文 - https://wsgzao.github.io/post/ansible-windows/

    扩展阅读

    Ansible Windows Guides - http://docs.ansible.com/ansible/latest/user_guide/windows.html


    Ansible Windows Support

    Ansible 在 2.3 版本之前对于 Windows 支持的并不算很友好,从 2.4 版本开始已经可以使用原生模块实现很多需求

    Because Windows is a non-POSIX-compliant operating system, there are differences between how Ansible interacts with them and the way Windows works. These guides will highlight some of the differences between Linux/Unix hosts and hosts running Windows.

    • Ansible ’ s supported Windows versions generally match those under current and extended support from Microsoft. Supported desktop OSs include Windows 7, 8.1, and 10, and supported server OSs are Windows Server 2008, 2008 R2, 2012, 2012 R2, and - 2016.
    • Ansible requires PowerShell 3.0 or newer and at least .NET 4.0 to be installed on the Windows host.
    • A WinRM listener should be created and activated. More details for tis can be found below.

    image

    Ansible does not support managing Windows XP or Server 2003 hosts. The supported operating system versions are:

    Windows Server 2008 Windows Server 2008 R2 Windows Server 2012 Windows Server 2012 R2 Windows Server 2016 Windows 7 Windows 8.1 Windows 10

    1. 在官方文档中已经提到了在 Windows 中使用 Ansible 的最要前提,WinRM
    2. WinRM 依赖 Powershell 3.0 以上版本的支持,牵扯出 PowerShell 2.0 to PowerShell 3.0/5.0 的问题
    3. 而 Powershell 升级则带来.Net Framework 是否跟随升级至 4.6.2/4.7.2 的选择
    4. 关于 WinRM 的参数配置可以参考下面的链接 Setting up a Windows Host

    https://github.com/ansible/ansible/blob/devel/examples/scripts/upgrade_to_ps3.ps1 https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1

    Setting up a Windows Host http://docs.ansible.com/ansible/latest/user_guide/windows_setup.html

    .NET Framework 4.7.2/4.6.2 https://www.microsoft.com/net/download/dotnet-framework-runtime

    Powershell 3.0 https://www.microsoft.com/en-us/download/details.aspx?id=34595

    Powershell 5.1 https://www.microsoft.com/en-us/download/details.aspx?id=54616

    我个人目前的建议是 Win7/2008 升级至 Powershell 3.0,.Net Framework 升级至 4.6.2,其他情况需要可以参考官方文档后做决定

    Ansible Windows Guides - http://docs.ansible.com/ansible/latest/user_guide/windows.html

    客户端

    1.客户端配置 windows 主机,以管理员身份打开 powershell, 并查看当前 ps 版本 get-host 2.系统自带的 powershell 版本是 2.0,需要更新至 powershell 3 以上版本 https://www.microsoft.com/net/download/dotnet-framework-runtime https://www.microsoft.com/en-us/download/details.aspx?id=34595 3.安装完重启服务器查看 powershell 版本

    .NET Framework 4.6 以上版本无法建立到信任根颁发机构的证书链 原因:系统缺少信任 Microsoft Root Certificate Authority 2011 根证书 下载:MicrosoftRootCertificateAuthority2011.cer http://go.microsoft.com/fwlink/?LinkID=747875&clcid=0x409 运行 certmgr.msc 导入证书到“受信任的根证书颁发机构”

    image

    # 配置 winrm mkdir C:\temp cd C:\temp # 下载 ConfigureRemotingForAnsible.ps1 https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 # 开启 WinRM 服务 powershell -ExecutionPolicy RemoteSigned .\ConfigureRemotingForAnsible.ps1 -SkipNetworkProfileCheck 

    服务端

    # 服务端使用 pip 安装 pywinrm pip install pywinrm # 功能测试,配置 ansible 控制机 vi /etc/ansible/hosts [windows] 192.168.67.139 [windows:vars] ansible_user=Administrator ansible_password=Admin123 ansible_port=5986 ansible_cOnnection=winrm ansible_winrm_server_cert_validation=ignore # 要注意的是端口方面 ssl 即 https 方式的使用 5986,http 使用 5985 # 测试 ping 通信 ansible windows -m win_ping # 查看 ip 地址 ansible windows -m win_command -a "ipconfig" 

    网盘下载

    Windows 作为客户端所需的软件包我上传到百度网盘,.Net Framework 安装失败提示证书错误记得手动导入 MicrosoftRootCertificateAuthority2011.cer

    https://pan.baidu.com/s/1JNV2pXjwUn14ojAtdEH_Sg

    1. 安装 .Net Framework 4.6.2 ( NDP462-KB3151800-x86-x64-AllOS-ENU.exe )

    2. 升级 Windows 7 SP1 和 Windows 2008 R2 SP1 的 PowerShell 版本从 2.0 至 3.0 ( Windows6.1-KB2506143-x64.msu )

    3. 执行.\ConfigureRemotingForAnsible.ps1 脚本开启 WinRM 远程管理服务

      powershell -ExecutionPolicy RemoteSigned .\ConfigureRemotingForAnsible.ps1 -SkipNetworkProfileCheck

    2 replies    2018-05-31 13:40:28 +08:00
    reboot51
        1
    reboot51  
       May 31, 2018
    您好,您的这个方法不错,请问可以分享转载?(会注明作者+原文链接)
    wsgzao
        2
    wsgzao  
    OP
       May 31, 2018
    @reboot51 #1 可以
    About     Help     Advertise     Blog     API     FAQ     Solana     5408 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 45ms UTC 08:27 PVG 16:27 LAX 01:27 JFK 04:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86