使用Ansible管理Windows

作者: 王奥OX | 来源:发表于2018-05-21 15:21 被阅读488次

前言

本文主要介绍在如何使用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 this 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

相关文章

  • 使用Ansible管理Windows

    前言 本文主要介绍在如何使用Ansible管理Windows客户端,Ansible官方提供了一个很方便的安装脚本,...

  • 使用 ansible 批量管理 windows主机

    概述 Ansible是自动化运维工具,基于Python开发,实现了批量系统配置、批量程序部署、批量运行命令等功能。...

  • Ansible windows使用

    这几天搞ansible 在windows下的使用,还是有一点小坑的,为了避免入坑,方便大家参考。 1,客户端的安装...

  • Ansible 管理windwos服务器(一)

    不废话了,开始吧 Ansible管理Windwos需要在windows上执行Powershell脚本,并且Powe...

  • Ansible-playbook 安装windows环境 JDK

    使用Ansible在windows环境下安装Java 使用到的模块 win_copy: 复制软件安装程序到wind...

  • Ansible管理Windows服务器

    环境 Ansible Server:CentOS7 Windows Server:Windows Server 2...

  • ansble管理windows7主机

    前请提示:公司有一批新的windows机器,需要批量管理,于是想到了ansble,ansible是基于Python...

  • 安装ansible

    ansible特点:只要在主控制端部署Ansible环境默认使用SSH协议对设备管理轻量级,无需在客户端安装age...

  • Ansible基于Windows的管理架构

    一、前言 如《第1章Ansible发展史》介绍,作为关注度最高的集中化管理工具,Ansible同样支持Window...

  • ansible

    Ansible通过模块的方式来完成一些远程的管理工作。可以通过ansible-doc -l查看所有模块,可以使用a...

网友评论

  • 小餐包:Hi,谢谢你的分享。用pywinrm的时候遇到一个问题,就是非内置的cmd命令明明执行了但是没有输出,类似如下代码:
    s = winrm.Session('http://10.244.20.44:5985/wsman', auth=('administrator', 'secret'))
    r = s.run_cmd('python', ['--version'])
    print r.std_out
    执行结果:
    Process finished with exit code 0
  • 开发者头条_程序员必装的App:感谢分享!已推荐到《开发者头条》:https://toutiao.io/posts/ljd9vg 欢迎点赞支持!使用开发者头条 App 搜索 4009 即可订阅《HelloDog》

本文标题:使用Ansible管理Windows

本文链接:https://www.haomeiwen.com/subject/htafjftx.html