自动化运维神器Ansible,你会用它批量管理Windows服务器吗?
Posted 学神IT教育
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化运维神器Ansible,你会用它批量管理Windows服务器吗?相关的知识,希望对你有一定的参考价值。
学神IT教育:XueGod-IT
最负责任的线上直播教育平台
Ansible 是一款开源的轻量级自动化运维工具,支持 Linux 和 Windows(只支持 Client,并且部分模块)。利用 Ansible 可以简单批量的配置系统、安装软件、或者更高级的运维任务(比如:滚动升级)。
实验环境
类型 | 系统 | 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后)。这样能够及时干净的还原现场,节省每次重装系统导致的时间浪费。
升级 PowerShell 和 .Net Framework
输入 $PSVersionTable 查看 PSVersion 确保大于等于 4.0 ( PowerShell 4.0 ),以及 CLRVersion 大于等于4.0 ( .NET Framework 4.0 ) 。
如果版本过低,则执行下面代码,直接复制到 PowerShell 执行即可。 (建议使用 PowerShell 5.1)
$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
&$file -Version 5.1 -Username $username -Password $password -Verbose
a.) hotfixv4.trafficmanager.net dont work (http://t.cn/Eafk9dz)
b.) 安装和配置 WMF 5.1 (http://t.cn/Eafk8oA)
注意事项:
注意用户名密码改成管理员的用户名密码。
确保能够访问外网。
PowerShell 以管理员模式打开。
PowerShell 不能直升 PowerShell,需要卸载 PowerShell 3或者保存 PSModulePath。
安装 PowerShell 5 需要先打最新 SP 补丁。
PowerShell 5 要求 .NET Framework 不低于 4.5.2。
安装成功后会自动重启服务器,注意别影响其他服务。
安装 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"}'
Linux 主控端 (Ansible Server)
安装 Ansible 和 pywinrm
$ 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
$ 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"
}
-
一些简单的使用实例
$ ansible winserver -m raw -a "ipconfig"
192.168.0.23 | SUCCESS | rc=0 >>
Windows IP Configuration
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::c55d:90f1:8d60:5d97%11
IPv4 Address. . . . . . . . . . . : 192.168.0.23
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : fe80::daae:90ff:fe02:9d81%11
192.168.0.1
.....省略.....
$ ansible winserver -m win_copy -a "src=/etc/issue dest=D:\issue"
192.168.0.23 | SUCCESS => {
"attempts": 1,
"changed": true,
"checksum": "5c76e3b565c91e21bee303f15c728c71e6b39540",
"dest": "D:\\issue",
"failed": false,
"operation": "file_copy",
"original_basename": "issue",
"size": 23,
"src": "issue"
}
c.) 在被管理主机上增加一个用户
$ ansible winserver -m win_user -a "name=san2 passwd=123.c0m groups=Administrators"
192.168.0.23 | SUCCESS => {
"account_disabled": false,
"account_locked": false,
"attempts": 1,
"changed": true,
"description": "",
"failed": false,
"fullname": "san2",
"groups": [
{
"name": "Administrators",
"path": "WinNT://WORKGROUP/VIRTUAL_SAN/Administrators"
}
],
"name": "san2",
"password_expired": true,
"password_never_expires": false,
"path": "WinNT://WORKGROUP/VIRTUAL_SAN/san2",
"sid": "S-1-5-21-2708087092-4192450616-382865091-1004",
"state": "present",
"user_cannot_change_password": false
}
Github 地址: https://github.com/VSChina/vscode-ansible
来源:家的博客
原文:http://t.cn/EafuE4h
Linux云计算学起来不难!
免费课程、学习资料,扫码添加老师微信领取:
Linux运维好课,点击【阅读原文】订阅
以上是关于自动化运维神器Ansible,你会用它批量管理Windows服务器吗?的主要内容,如果未能解决你的问题,请参考以下文章