ansible自动化管理windows系统实战

  

一、简述

  

<强> 1,说明
日常系统自动化运维过程中难免会有windows系列服务器,就开源软件来说目前大多的对windows批量管理兼容性不太好,不像Linux系统便捷,但现实中确实有些业务需要跑在windows上,搜索查找折腾一番后,发现python开发的ansible(已经被redhat收购)有比较好的解决方案,通过一番折腾,整理出来,以备忘交流;

  

<强> 2,实验环境
服务器端:
CentOS7.4_x64自带python 2.7.5 ip: 172.16.3.167
源码安装ansible

  

被管理windows端:
win7sp1_x32需要powershell 3.0 + ip: 172.16.3.188并开启winrm服务开启防火墙规则

  

<强> 3,实验目标
能通过ansible的各模块对windows进行传输文件,管理账号,执行脚本等批量自动化管理工作,

  

二,ansible配置

  

<强> 1,简介
Ansible从1.7 +版本开始支持Windows,但管理机必须为Linux系统,远程主机的通信方式也由Linux下的SSH变为PowerShell,管理机需要安装Python的pywinrm模块,但PowerShell需3.0 +版本且管理框架3.0 +版本,实测Windows 7 SP1和Windows Server 2008 R2及以上版本系统经简单配置可正常与Ansible通信。
<强> 2,环境准备
以下配置在CentOS7.4_x64下
安装pip及相关依赖

  
 <代码>下载皮普
  # wget https://bootstrap.pypa.io/get-pip.py
  # python get-pip.py
  安装依赖
  # pip安装pywinrm paramiko PyYAML Jinja2 httplib2 6
   
  

<强> 3,源码安装ansible

  
 <代码> # git克隆git://github.com/ansible/ansible.git——递归的
  # cd。/ansible
  #来源。/黑客/env-setup  
  

运行了env-setup脚本,就意味着Ansible基于源码运行起来了。默认的库存文件是/etc/ansible/hosts
猫/etc/ansible/hosts
注:可以把这步添加到开机自启中,

  
 <代码>[这个]
  172.16.3.188 ansible_ssh_user=靶槟狻盿nsible_ssh_pass=拔易约骸!盿nsible_ssh_port=5985 ansible_connection=皐inrm”ansible_winrm_server_cert_validation=忽视
   
  

注意上信息在一行,以空格隔开,[这个]是这台主机的标题;下面的是ip和连接信息等;
以上ansible管理端已经配置好,被管理端这个主题还没有配置,相对来说稍稍麻烦点

  这个主题

三,被管理端配置

  

<强> 1,环境简介
和Linux稍有区别,被管理端系统如果是Windows系列时,需预先有以下配置:
安装框架3.0 +(有可能需要下载)
配置powershell策略为remotesigned(需要修改)
升级powershell至3.0 +(这个默认是2.0)
设置窗户远端管理,英文全称WS-Management (WinRM)

  

<强> 2,环境配置
,升级或安装Framework 4.5
如果框架版不满足请至微软官方下载
b,修改powershell策略为remotesigned
如图:
 ansible自动化管理windows系统实战

  

c,升级PowerShell至3.0
保存以下脚本为upgrade_to_ps3.ps1

  
 <代码> # Powershell脚本升级Powershell Powershell 3.0 2.0系统
  #基础alt=" ansible自动化管理windows系统实战”> 
重启后查看powershell信息
 ansible自动化管理windows系统实战

  

d,设置窗户远端管理(WS-Management WinRM)服务
WinRM服务默认都是未启用的状态;注意以下操作在cmd中执行,而非powershell中
对WinRM服务进行基础配置:

  
 <代码> winrm quickconfig
  C:\Users\ san02> winrm quickconfig
  已在此计算机上运行WinRM服务。
  WinRM没有设置成为了管理此计算机而允许对其进行远程访问。
  必须进行以下更改:
  在HTTP://*上创建WinRM侦听程序接受WS-Man对此机器上任意IP的请求。
  启用WinRM防火墙异常。
  执行这些更改吗(y/n) ?y
  WinRM已经进行了更新,以用于远程管理。
  在HTTP://*上创建WinRM侦听程序接受WS-Man对此机器上任意IP的请求。
  WinRM防火墙异常已启用。
  
  查看winrm服务侦听器
  winrm e winrm/config/侦听器
  C:\Users\ san02> winrm e winrm/config/侦听器
  侦听器
  地址=*
  运输=HTTP
  端口=5985
  主机名
  启用=true
  URLPrefix=wsman
  CertificateThumbprint
  ListeningOn=127.0.0.1, 172.16.3.137,:: 1, fe80:: 100:7f: fffe % 13日fe80:: 5场方程
  fe80::: 172.16.3.137 12日4865:97de: bb1f: 877% 11
  
  配置身份验证为真(默认为假)
  winrm winrm/config/服务/身份验证设置@{基本=" true "} C: \ \用户san02> winrm winrm/config/服务/身份验证设置@{基本=" true "}
  身份验证
  基本=true
  Kerberos=true
  谈判=true
  证书=false
  CredSSP=false
  CbtHardeningLevel=放松
  
  配置允许非加密方式
  winrm设置winrm/config/服务@ {AllowUnencrypted=" true "}
  C:\Users\ san02> winrm winrm/config/服务@ {AllowUnencrypted=" true "}
  服务
  RootSDDL=O: NSG:缺点:P (GA;;;;; BA) (;; GR;;; IU) S: P(非盟,FA;遗传算法;;;WD)(非盟;股价;GXGW;
  ;;WD)
  MaxConcurrentOperations=4294967295
  MaxConcurrentOperationsPerUser=1500
  EnumerationTimeoutms=240000
  MaxConnections=300
  MaxPacketRetrievalTimeSeconds=120
  AllowUnencrypted=true
  身份验证
  基本=true
  ……以下省略....... 

ansible自动化管理windows系统实战