python ansible服务及剧本编写
Python  /  管理员 发布于 7年前   250
第1章 ansible软件概念说明
python语言是运维人员必会的语言,而ansible是一个基于Python开发的自动化运维工具 (saltstack)。其功能实现基于SSH远程连接服务;ansible可以实现批量系统配置、批量软件部署、批量文件拷贝、批量运行命令等功能
ansible软件相关参考链接信息:
http://docs.ansible.com/ansible/intro_installation.htmlhttp://www.ansible.com.cn/http://docs.ansible.com/modules_by_category.htmlhttp://www.ansible.cn/docs/
1.1 软件特点概述
01.不需要单独安装客户端(no agents),基于系统自带的sshd服务,sshd就相当于ansible的客户端
02.不需要服务端(no servers)
03.需要依靠大量的模块实现批量管理
04.配置文件/etc/ansible/ansible.cfg(无需配置)
1.2 企业级生产场景批量管理-自动化管理方案
01.最简单/最常用/最强大的选择是ssh key+shell/pssh方案,一般中小型企业会用(50-100台以下规模企业)
a.利用ssh key执行命令,并将命令放在脚本里面
b.利用ssh key执行命令,将命令放在脚本里面,并加上相应循环语句或判断语句
02.sina cfengine/puppet较早的批量管理工具(现在基本上没有企业用)
03.门户级别比较流行的,puppet批量管理工具(复杂/笨重)
04.saltstack批量管理工具;特点:简单,功能强大(配置复杂)---赶集网/小米/ CDN公司
批量管理路线:ssh key-->cfengine-->puppet-->saltstack/ansible
注意:使用ansible软件的前提是ssh key公钥分发完成
1.3 实现集群规模架构一键部署自动化-步骤说明
01.5台服务器先配置好(kickstart,cobbler无人值守安装),高级实现云计算(按需分配,动态调整)-openstack,kvm
02.linux基本优化,包括ssh服务(可以自动化实现)
03.创建密钥信息(自动化免交互创建)
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1
04.进行批量分发密钥(sshpass,expect自动化实现)
05.ansible软件安装(自动化实现)
06.网络服务自动化安装(ansible实现)
搭建yum仓库,定制rpm包
第2章 ansible软件实践部署
ansible软件部署安装需求
01. 需要有epel源
系统yum源(base epel--pip gem)
sshpass---epel
02. ssh+key免密码环境必须部署完成
2.1 ansible地址规划
服务器名称 | 网卡eth0 | 网卡eth1 | 用途说明 |
m01 | 10.0.0.61 | 172.16.1.61 | 批量管理服务器 |
nfs01 | 10.0.0.31 | 172.16.1.31 | nfs共享存储服务器 |
backup | 10.0.0.41 | 172.16.1.41 | rsync备份服务器 |
web01 | 10.0.0.8 | 172.16.1.8 | web服务器 |
说明:无特殊说明,子网掩码均为255.255.255.0,一个C类网段254台机器规模 |
2.2 ①部署ssh+key免密码登录方式
利用非交互式工具实现批量分发公钥与批量管理服务器
sshpass -p123456 ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostChecking=no 172.16.1.41" sshpass -p123456 ssh -o StrictHostChecking=no [email protected] "uptime" sshpass -p123456 scp -o StrictHostChecking=no /etc/hosts [email protected]:~ <- -p:指定ssh连接用户的密码 <- -o:StrictHostChecking=no 避免第一次登录出现公钥检查
2.3 ②受控端安装ansible相关管理软件
保留yum安装的软件
sed -i.bak 's#keepcache=0#keepcache=1#g' /etc/yum.conf 2 grep keepcache /etc/yum.conf
客户端配置
yum install libselinux-python -y
说明:由于初始我们关闭了selinux安全管理软件,故这里需要操作此步骤。不装这个软件只能关闭selinux,但是无论什么情况也不要开启,工作环境下视情况而定
2.4 ③管理端m01安装ansible软件
yum install ansible -y
2.4.1 查看版本信息
[root@m01 ~]# ansible --version ansible 2.3.2.0 config file = /etc/ansible/ansible.cfg #告知ansible软件配置文静路径 configured module search path = Default w/o overrides python version = 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]
2.4.2 查看软件相关安装信息
[root@m01 ~]# rpm -ql ansible|egrep -v '/usr/share/|/usr/lib'/etc/ansible/etc/ansible/ansible.cfg #ansible配置文件/etc/ansible/hosts #定义ansible可以管理的主机信息/etc/ansible/roles #主要在自动化部署多台主机时应用/usr/bin/ansible/usr/bin/ansible-playbook #执行ansible剧本命令
2.4.3 软件安装目录信息
[root@m01 ~]# tree /etc/ansible/ /etc/ansible/ ├── ansible.cfg #ansible配置 ├── hosts #被ansible管理的主机名单(分组) └── roles
2.5 ④配置/etc/ansible/hosts文件
编辑ansible的主机配置文件hosts,添加主机组banana
cp /etc/ansible/hosts{,.bak}[root@m01 ~]# vim /etc/ansible/hosts #配置文件编写举例[banana] #定义组名称172.16.1.8172.16.1.31172.16.1.41[root@m01 ~]# tail /etc/ansible/hosts
2.6 ⑤实践测试
[root@m01 ~]# ansible banana -m command -a "hostname" #-m指定命令的模块 -a指定参数(action)172.16.1.31 | SUCCESS | rc=0 >> #主机IP|请求状态|返回值(0即成功,否则失败)nfs01 #命令输出结果172.16.1.8 | SUCCESS | rc=0 >>web01172.16.1.41 | SUCCESS | rc=0 >>backup
2.6.1 ansible命令输出信息说明
输出内容为绿色,表示执行成功,仅查询但没有发生任何改变
输出内容为黄色,表示执行成功,但对受控主机产生了影响,发生了配置改变
输出内容为红色:表示执行失败!!!
第3章 ansible有关语法参数总结
3.1 语法格式图示
3.2 软件常用参数表
命令参数 | 参数说明 |
-m MODULE_NAME | 相应名称的模块被执行(默认模块为command); -m后面是模块的的名字 |
-a MODULE_ARGS | 模块参数信息; -a后面是要执行的命令,也可以写一个IP,针对一台机器来执行命令 |
-C,--check | 不做任何改变;反而,只是尝试预言一些可能出现的改变 |
--syntax-check | 执行语法检查在剧本上,但是并不执行剧本 |
第4章 ansible常用模块总结