Ansible管理Windows服务器

环境

  • Ansible Server:CentOS7
  • Windows Server:Windows Server 2012 R2(192.168.xx.xx)

1、Windows Server

1.1 确认Powershell版本

Powershell输入$psversiontable

ansible依赖WinRM管理Windows终端,powershell版本最低为3.0,如低于此版本需要升级powershell,在此不做展开。

Name                           Value                                                                                   
----                           -----                                                                                   
PSVersion                      4.0                                                                                     
WSManStackVersion              3.0                                                                                     
SerializationVersion           1.1.0.1                                                                                 
CLRVersion                     4.0.30319.34209                                                                         
BuildVersion                   6.3.9600.16394                                                                          
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}                                                                    
PSRemotingProtocolVersion      2.2  

1.2 配置ansible脚本

# 创建目录
mkdir c:\ansible
cd c:\ansible
# 下载脚本
wget https://github.com/ansible/ansible/raw/devel/examples/scripts/ConfigureRemotingForAnsible.ps1
# 开启WinRM服务
set-ExecutionPolicy RemoteSigned 
.\ConfigureRemotingForAnsible.ps1 -SkipNetworkProfileCheck

1.3 开启防火墙端口

# 放行5985端口可被访问
netsh advfirewall firewall add rule name="Win-RM-HTTP" dir=in localport=5985 protocol=TCP action=allow

2、Ansible Server

2.1 安装pywinrm

# 安装epel仓库后安装pip,如果有pip可略过
yum install -y epel-release
yum install -y python-pip
# 安装pywinrm
pip install pywinrm
# 配置ansible主机文件
vi /etc/ansible/hosts
# 修改或增加以下配置(YAML格式,注意空格,不可用Tab)
all:
  children:
    windows:
      hosts:
        192.168.xx.xx:
            ansible_user: Administrator
            ansible_password: password #填写服务器密码
            ansible_port: 5985
            ansible_connection: winrm
            ansible_winrm_transport: ntlm  #必须有,不然会报错
            ansible_winrm_server_cert_validation: ignore

在ansible2.0及以后版本,已经将大部分ansible_ssh_xxx属性更改为ansible_xxx

如果Windows服务器为集群,账号密码相同,该如何编写终端文件呢?
引入变量
这里假设我们有11台服务器,其中1台为Hyper-V虚拟机,4台为AD域服务器,6台为exchange服务器,信息如下:

  • Hyper-V:192.168.0.100
  • AD域:192.168.0.1、192.168.0.3、192.168.0.5、 192.168.0.7
  • exchange:192.168.0.10、 192.168.0.11 、192.168.0.21-24
# 注意YAML配置文件,均使用空格进行2位缩进。
all: 
  children:
    kubernetes:
    ……省略
    windows:
      children:
        hyper-v:
          hosts:
            192.168.0.100:
              ansible_user: Administrator
              ansible_password: 密码
              ansible_port: 5985
              ansible_connection: winrm
              ansible_winrm_transport: ntlm
              ansible_winrm_server_cert_validation: ignore
        ad:
          hosts:
            192.168.0.1:
            192.168.0.3:
            192.168.0.5:
            192.168.0.7:
          vars: #此变量仅在ad组生效,故在exchange组仍然需要重新定义一次。
            ansible_user: 域\administrator #把域更换为自己的域名称
            ansible_password: 密码
            ansible_port: 5985
            ansible_connection: winrm
            ansible_winrm_transport: ntlm
            ansible_winrm_server_cert_validation: ignore
        exchange:
          hosts:
            192.168.0.10:
            192.168.0.11:
            192.168.0.[21:24]: #对连续的主机可以简写
          vars:
            ansible_user: 域\administrator
            ansible_password: 密码
            ansible_port: 5985
            ansible_connection: winrm
            ansible_winrm_transport: ntlm
            ansible_winrm_server_cert_validation: ignore

2.2 测试配置

# 测试
ansible windows -m win_ping
# 返回如下信息代表成功
192.168.xx.xx | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

3、踩坑

3.1 plaintext: the specified credentials were rejected by the server

# 返回错误
ansibile windows -m win_ping
192.168.xx.xx | UNREACHABLE! => {
    "changed": false,
    "msg": "plaintext: the specified credentials were rejected by the server",
    "unreachable": true
}
# 解决方法
vi /etc/ansible/hosts
# 编辑主机的配置文件,添加以下字段
ansible_winrm_transport: ntlm

参考资料:https://stackoverflow.com/questions/44183852/ansible-pinging-windows-machine-using-basic-authentication

3.2 Windows返回中文乱码

# 查看IP地址,返回信息中文乱码
ansible windows -m win_command -a 'ipconfig'
# 解决办法
vi /etc/ansible/ansbile.cfg
# 修改为如下样式
#module_lang    = C
#module_set_locale = False

module_lang = zh_CN.UTF-8
module_set_locale = True

实际发现并不能解决乱码问题,后期再研究。


参考文章:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,104评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,816评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,697评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,836评论 1 298
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,851评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,441评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,992评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,899评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,457评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,529评论 3 341
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,664评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,346评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,025评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,511评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,611评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,081评论 3 377
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,675评论 2 359