前言

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

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

更新历史

2018年05月21日 - 初稿

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

扩展阅读

Ansible Windows Guides - http://docs.ansible.com/ansib...

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.

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/an...
https://github.com/ansible/an...

Setting up a Windows Host
http://docs.ansible.com/ansib...

.NET Framework 4.7.2/4.6.2
https://www.microsoft.com/net...

Powershell 3.0
https://www.microsoft.com/en-...

Powershell 5.1
https://www.microsoft.com/en-...

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

Ansible Windows Guides - http://docs.ansible.com/ansib...

客户端

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

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

# 配置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/1JNV2...

  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的更多相关文章

  1. PhoneGap / iOS上的SQLite数据库 – 超过5mb可能

    我误解了什么吗?Phonegap中的sqlitedbs真的有5mb的限制吗?我正在使用Phonegap1.2和iOS5.解决方法您可以使用带有phonegap插件的原生sqliteDB,您将没有任何限制.在iOS5.1中,Websql被认为是可以随时删除的临时数据…

  2. ios – 使用带有NodeJs HTTPS的certificates.cer

    我为IOS推送通知生成了一个.cer文件,我希望将它与NodeJSHTTPS模块一起使用.我发现HTTPS模块的唯一例子是使用.pem和.sfx文件,而不是.cer:有解决方案吗解决方法.cer文件可以使用两种不同的格式进行编码:PEM和DER.如果您的文件使用PEM格式编码,您可以像使用任何其他.pem文件一样使用它(有关详细信息,请参见Node.jsdocumentation):如果您的文件使

  3. 如何在iTunes上获取我的应用统计数据?

    我最近发布了一个iPhone应用程序,但我没有看到任何方法来检查应用程序统计数据,就像在GooglePlay中一样.你能告诉我怎么做吗?

  4. ios – CFNetwork内部错误:URLConnectionLoader.cpp:289

    当我在一段时间后打开我的应用程序时,我收到了日志:440:CFNetworkinternalerror(0xc01a:/buildroot/Library/Caches/com.apple.xbs/Sources/CFNetwork/CFNetwork-758.4.3/Loading/URLConnectionLoader.cpp:289)它从未出现在过去.我的项目使用网络库AFNetworkin

  5. ios – 使用大写符号在字符串swift中获取URL的正则表达式

    我尝试在文本中获取URL.所以,在此之前,我使用了这样一个表达式:但是当用户输入带有大写符号的URL时(例如Http://Google.com,它与它不匹配)我遇到了问题.我试过了:但什么都没发生.解决方法您可以使用正则表达式中的i内联标志关闭区分大小写,有关可用正则表达式功能的详细信息,请参阅FoundationFrameworkReference.(?ismwx-ismwx)Flagsetti

  6. ios – xcode在更新可可豆荚后出现体系结构错误的重复符号

    编辑:执行下面显示的解决方案后,我的项目只编译iPadAir,我不能再存档,我仍然得到相同的错误…

  7. ios – UIWebView中的WebSQL / SQLite数据库的最大大小(phonegap)

    我知道一般来说,Web应用程序的本地存储空间有5MB的限制.本地网页浏览应用程式是否也有这个限制?

  8. ios – 我可以使用自签名SSL证书服务器在空中部署企业应用吗?

    iOS7.1之后,如果我们要通过空中部署我们的Enterprise应用程序,则manifest.plist文件的URL必须是HTTPS.例如:在我的服务器中,我使用自签名SSL证书.当我点击iPhone上的URL时,它表示无法连接到并记录典型的所以,我想知道我是否可以使用自签名SSL证书?如果可以,我如何解决我遇到的问题的问题?

  9. ios – 如何使用YouTube API V3?

    我想知道如何在iOS应用中使用新的YouTubeAPI(第3版),但我不知道如何做.我做了很多关于它的研究,但是我发现所有的例子和老API的代码,所以它们是无效的.现在,我明白了,使用新的API你必须在Google开发者控制台中创建一个项目…使用API2很简单它…

  10. 如何在iOS Couchbase Mobile上使用HTTPS复制?

    我正在使用iOSCouchbaseMobile在iPad上使用一个couchdb服务器,它使用复制与服务器进行同步.cloudant使用HTTPS,当我尝试在iPad上复制时,我只是被错误地垃圾邮件发送.这是一个已知的问题,如thisFAQarticle所示.它建议使用1.0.2修复问题,但是如何知道我是否在ErlangR14上运行?

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部