一、自动化运维介绍
1、SSH自动化运维
2003-2012年,通过在管理机创建统一的秘钥对,然后把公钥留在管理机上,公钥发到所有被管理的机器上,然后开发脚本实现批量管理。
2、CFEngine自动化运维
2007-2008年,流行的时间不长。
3、Puppet自动化运维
2011年开始,主要是一些传统的银行在使用。
4、Saltstack和ansible自动化运维
2012年开始,Python开发。
二、Ansible软件介绍
1、什么是ansible
ansible是一个可以同时管理多个远程主机的软件。ansible通过ssh协议实现管理节点与远程节点之间的通信。理论上,只要是能通过ssh登录到远程主机来完成的操作,都可用通过ansible实现自动化操作。
ansible可以管理的操作:批量复制,批量删除,批量修改,批量查看文件和目录,批量安装软件,批量启动服务等。
2、ansible好处
简单方便容易学习 功能强大。
ansible有配置文件,可用多线程直接实现,不需要脚本,类似实时复制sersync。
ansible的编排引擎可以出色地完成配置管理,流程管理,资源部署等多方面的工作。
在云计算时代的浪潮中,基础架构必须满足按需自动伸缩、按使用量计费的基本特性,IT自动化运维软件就是最重要的必备工具之一。
三、ansible实践部署
1、服务器环境准备



2、安装软件
1)m01服务器:
安装软件前最好先检查一下是否已经安装:
#rpm -qa epel-release ansible libselinux-python
#yum install epel-release -y #<==安装epel源。
#yum install ansible -y #<==安装批量管理Ansible软件。
#yum install libselinux-python -y #<==python依赖包软件。
查看ansible软件安装了哪些文件:
[root@m01 ~]# rpm -ql ansible
/etc/ansible #<==Ansible软件程序目录。
/etc/ansible/ansible.cfg #<==Ansible软件程序主配置文件,默认配置即可。
/etc/ansible/hosts #<==Ansible软件程序被管理节点主机列表清单文件。
/usr/bin/ansible #<==Ansible软件程序批量管理命令。
/usr/bin/ansible-playbook #<==Ansible软件程序剧本执行命令。
2)nfs01、backup服务器:
#rmp -qa libselinux-python #<==先检查一下是否安装
#yum install libselinux-python
3、配置文件
1)m01服务器
①主机配置文件
#cp /etc/ansible/hosts{,.ori} #<==先备份配置文件。
#cat >/etc/ansible/hosts<<EOF
[ansitest]
172.16.1.31
172.16.1.41
EOF
②ansible的配置文件
#cat /etc/ansible/ansible.cfg #<==默认即可,不用修改。
③修改yum.conf
#vim /etc/yum.conf
keepcache=1
2)nfs01、backup服务器
①修改yum.conf
#vim /etc/yum.conf
keepcache=1

4、测试:执行远程管理命令
1)#ansible ansitest -m command -a "free -m"
都要输入密码,非常麻烦。如何不输入密码。
查看管理机本地存放秘钥文件:
#cat ~/.ssh/known_hosts #没有nfs01,backup服务器的秘钥。
分发公钥信息:
#shpass -p123456 ssh-copy-id -f -i ~/.ssh/id_rsa.pub "-o StrictHostKeyCheck-ing=no" 172.16.1.41
#shpass -p123456 ssh-copy-id -f -i ~/.ssh/id_rsa.pub "-o StrictHostKeyCheck-ing=no" 172.16.1.31
如果机器非常多,可以用脚本批量处理。
再测试:#ansible ansitest -m command -a "free -m"

2)#ansible ansitest -m command -a "cat /etc/hat-release" -k -u root
利用ansible命令,指定批量管理oldboy组中主机,利用-m指定模块,-a指定执行的命令,-u指定以什么身份远程登录。-k采用密码方式登录;
解决方法:加上密码
#vim /etc/ansible/hosts
[ansitest_pass]
172.16.1.31 ansible_ssh_user=root ansible_ssh_pass=123456
172.16.1.41 ansible_ssh_user=root ansible_ssh_pass=123456
在主机配置文件里指定用户和密码,执行命令时就不需要密码了。去掉-k -u root参数。# ansible ansitest -m command -a "cat /etc/redhat-release"




