一:Ansible 简介java
AUTOMATION FOR EVERYONE (摘自Ansible官网),自行理解其中意思,Ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优势,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工做的,自己没有批量部署的能力。真正具备批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1) 链接插件connection plugins:负责和被监控端实现通讯;
(2) host inventory:指定操做的主机,是一个配置文件里面定义监控的主机;
(3) 各类模块核心模块、command模块、自定义模块;
(4) 借助于插件完成记录日志邮件等功能;
(5) playbook:剧本执行多个任务时,非必需可让节点一次性运行多个任务 linux
Ansible的安装方式有不少,能够使用源码安装(github),也能够使用pip安装或者采用yum 安装,此文档采用yum安装git
系统环境:CentOS6.5
软件环境:Python2.6 (Ansible使用Python语言编写,安装Ansible以前请确认服务器已经安装了Python,默认已经安装)github
# yum install ansible
|
成功安装后能够使用ansible -h 命令查看帮助,shell
ansible 查看版本 vim
# ansible --versionwindows
使用rpm -ql ansible 查看相关ansible文件bash
Ansible 的主要配置文件在/etc/ansible 下面(yum 安装的) 服务器
#cd /etc/ansible &&tree #ansible配置文件 #tree命令默认没有,须要安装
|
我这里只对hosts 和ansible.cfg 作了简单的更改,hosts 主要是定义主机的,ansible.cfg 是ansible的主配置文件
下面咱们对本机作个简单的PING测试,执行下面命令网络
echo
-e
"[lo]\n127.0.0.1 ansible_user=root ansible_password=passw0rd ansible_port=40022"
>>hosts
|
注意:若是是默认端口不要填写,Ansible 2.0版本以前的格式有点不同,若是使用YUM安装的话,基本上都是2.0之后的版本,强烈不建议使用明文密码的格式填写,能够使用key或者sudo的方式
# ansible lo -m ping
|
linux 机器的测试请参考linux项目组,我这里主要介绍如何使用Ansible来控制Windows主机
就如你刚所了解到的,Ansible默认是经过SSH协议来管理Linux/Unix服务器.
从1.7版本开始,Ansible也开始支持Windows机器的管理.不过是经过本机的PowerShell来实现远程管理,而不是SSH.
Ansible仍然经过一台Linux系统机器来进行集中管理,使用Python的 "winrm" 模块来和远程主机交互.
在管理的过程是 Ansible无需在远程主机上安装任何额外的软件,Ansible仍然使用 agentless(非c/s架构) 来保证其在 Linux/Unix的流行度
必要条件:
(1) 必须开启以及配置Powershell
https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1
(2)Powershell版本必须3.0 or higer
若是您的系统是window7或者Windows Server 2008,那么PowerShell 2.0已经内置了,能够升级为3.0,4.0
若是您的系统是Windows 8 或者Windows server 2012,那么PowerShell 3.0已经内置了,能够升级为4.0
若是您的系统为Windows 8.1或者Windows server 2012 R2,那默认已是4.0了。
#查看Powershell版本,powershell 界面下输入 $psversiontable
Ansible控制机配置
在Ansible控制机上执行下面指令安装pywinrm模块 pip install "pywinrm>=0.1.1" 我这里已经安装过,版本是0.2.2
被管windows主机配置
开启以及配置Powershell
Ansible 官方提供初始化脚本
https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1
脚本主要完成以下操做:
检查最后安装证书的指纹
配置错误处理
检测Power shell版本
检查/启动WimRM服务
确保WinRM运行以后,检查有PS会话配置
确保有SSL监听
检查基本鉴权
配置防火墙容许WinRM HTTPS连接
本地测试经过网络方式链接是否正常
注意:若是提示系统中禁止执行脚本,能够在Powershell 命令行界面输入 set-ExecutionPolicy RemoteSigned 而后输入Y,在执行脚本就不会报
定义host以及Inventory
Ansible支持windows须要依赖于少许标准变量来代表远程主机的username, password, and connection type (windows).这些变量大部分都很容易被设置好.在 Ansible 中经过用来代替 SSH-keys 或 密码输入
mkdir
-p windows
/group_vars/
cd
!$
|
vim windows.yml
ansible_user: administrator
ansible_password: p@ssw0rd
ansible_port: 5986
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
|
vim host
[windows]
10.200.7.50
|
ansible windows -i host -m win_ping
|
使用ansible-playbook执行相关脚本
# vim ip.yml
- name:
test
script module
hosts: windows
tasks:
- name: run
test
script
script:
/etc/ansible/windows/script/ip
.bat
|
ansible-playbook group_vars
/ip
.yml -i host
|
远程登录客户端验证