Ansible2.7批量管理Windows

栏目: 服务器 · 发布时间: 5年前

内容简介:Ansible是一款轻量级的开源的自动化运维工具,支持linux和windows(只支持client,并且部分模块),利用Ansible可以简单批量的配置系统,安装软件,或者更高级的运维任务(比如滚动升级)。Ansible之类的运维工具对运维工作进行抽象及规范,能够极大的降低运维难度。本文只是为了演示如何通过ansible 的各模块对windows进行传输文件,管理账号,执行脚本等批量自动化管理工作注意:如果是实验目的,建议用Vmware,并且在关键操作时备份快照(比如,刚装完环境,升级完PS和.Net后)

Ansible是一款轻量级的开源的自动化运维工具,支持 linux 和windows(只支持client,并且部分模块),利用Ansible可以简单批量的配置系统,安装软件,或者更高级的运维任务(比如滚动升级)。

Ansible之类的运维 工具 对运维工作进行抽象及规范,能够极大的降低运维难度。本文只是为了演示如何通过ansible 的各模块对windows进行传输文件,管理账号,执行脚本等批量自动化管理工作

实验环境

类型 系统 ip
Server Ubuntu Server 16.04.5 LTS X64 192.168.0.22
Client Windows Server 2008 R2 SP1 192.168.0.23

注意:如果是实验目的,建议用Vmware,并且在关键操作时备份快照(比如,刚装完环境,升级完PS和.Net后),这样能够及时,干净的还原现场,节省每次重装系统导致的时间浪费

Windows 被控端(Ansible Client)

Ansible 只支持Powershell 4.0及以上(用3.0会报 Process is terminated due to StackOverflowException. ),所以要求最低要求Win7,或者Win server 2008,详见 Ansible Doc host requirements

升级PowerShell 和.Net Framework

官方文档要求升级至ps3.0即可,但是实验发现,3.0会报错

Win+R -> PowerShell 打开PowerShell

输入 $PSVersionTable 查看 PSVersion 确保大于等于4.0(PowerShell 4.0),以及 CLRVersion 大于等于4.0(.NET Framework 4.0) ,如果版本过低,则执行下面代码,直接复制到PowerShell 执行即可

注意:

  • 注意用户名密码改成管理员的用户名密码
  • 确保能够访问外网
  • PowerShell以管理员模式打开
  • 安装成功后会自动重启服务器,注意别影响其他服务
$url = "https://raw.githubusercontent.com/jborean93/ansible-windows/master/scripts/Upgrade-PowerShell.ps1"
$file = "$env:temp\Upgrade-PowerShell.ps1"
$username = "管理员用户名"
$password = "管理员密码"

(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force

# PowerShell 版本,只能用 3.0, 4.0 和 5.1 
# Win Server 2008 最高只能用4.0
&$file -Version 4.0 -Username $username -Password $password -Verbose

重启后,再次打开PS ,输入 $PSVersionTable 查看版本

安装WinRM,并且配置监听

## 配置WinRM
$url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
$file = "$env:temp\ConfigureRemotingForAnsible.ps1"
(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
powershell.exe -ExecutionPolicy ByPass -File $file

## 设置允许非加密远程连接,不太安全
winrm set winrm/config/service/auth '@{Basic="true"}'
winrm set winrm/config/service '@{AllowUnencrypted="true"}'

使用非加密连接,有安全隐患,此处不作为实验重点,感兴趣的,可以参考 PowerShell 配置winrm使用HTTPS

Linux主控端(Ansible Server)

安装Ansible和pywinrm

参考 Installing the Control Machine

$ sudo apt-get update
$ sudo apt-get install -y software-properties-common
$ sudo apt-add-repository --yes --update ppa:ansible/ansible
$ sudo apt-get install -y ansible
$ ansible --version
ansible 2.7.7
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.12 (default, Nov 12 2018, 14:36:49) [GCC 5.4.0 20160609]

$ pip install "pywinrm>=0.3.0"

配置Inventory

参考 Working with Inventory

默认是 Inventory /etc/ansible/hosts ,此处改为手动指定,Ansible的Inventory支持ini格式和yaml格式,本文采用yaml格式

$ mkdir ansible
$ tee ansible/test_hosts.yaml <<-'EOF'
winserver:
  hosts: 
    192.168.0.23:
  vars:
    ansible_user: Administrator
    ansible_password: 密码
    ansible_connection: winrm
    ansible_winrm_transport: basic
    ansible_port: 5985
EOF

探测主机是否存活

$ ansible -i ansible/test_hosts.yaml winserver -m win_ping
 192.168.0.23 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

更多实验,参见参考资料中的两篇51cto中的博文

可用的Windows模块

根据 What modules are available? 绝大部分Module都是针对Linux编写的,大部分在windows下不能正常使用,有一些专用的windows module 使用ps编写的,可用在windows下使用,详细列表参见 Windows modules

Windows常见问题

官方文档中列举了Ansible windows常见问题,建议仔细阅读

Ansible Playbook

Ansible配合 playbook 食用更佳,上述中的 ansible 命令是 adhoc命令模式 ,类似在bash中手动执行命令,多用于简单,并且不需要复用场景,而 ansible-playbook 类似 bash脚本,但是更强大,适合复杂任务编排场景。

考虑后期出一个playbook的文章

推荐配合 vscodeansible 插件(github repo 地址 https://github.com/VSChina/vscode-ansible )

效果如下所示,比idea的ansible强大很多。

Ansible2.7批量管理Windows

参考资料

招聘小广告

山东济南的小伙伴欢迎投简历啊 加入我们 , 一起搞事情。

长期招聘,Java程序员,大数据工程师,运维工程师。

谢谢支持

Ansible2.7批量管理Windows 支付宝

Ansible2.7批量管理Windows 微信


以上所述就是小编给大家介绍的《Ansible2.7批量管理Windows》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ruby on Rails 3 Tutorial

Ruby on Rails 3 Tutorial

Michael Hartl / Addison-Wesley Professional / 2010-12-16 / USD 39.99

“Ruby on Rails™ 3 Tutorial: Learn Rails by Example by Michael Hartl has become a must read for developers learning how to build Rails apps.” —Peter Cooper, Editor of Ruby Inside Using Rails ......一起来看看 《Ruby on Rails 3 Tutorial》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试