互联网的快速发展导致产品更新换代速度加快,按照传统维护操作使得工作效率低下,自动化运维以尽可能安全高效的完成工作为目的,实现代替传统工作方式。
自动化运维工具划分为两类:
一是需要使用代理工具的,也就是基于agent程序来实现管理功能,例如puppet、func、zabbix等
二是不需要代理配置工具的,可以直接基于SSH服务来完成管理功能,如ansible,fabric等。
自动化运维工具比较:
工具开发语言结构配置文件格式运行任务Ansible Python 无 YAML 支持命令行
SaltStack Python C/S YAML 支持命令行
Puppet Ruby C/S Ruby语法格式 通过模块实现
Ansible
Ansible基于Python开发,集合了众多优秀运维工具的优点,实现了批量运行命令、部署程序、配置系统等功能。默认通过SSH协议进行远程命令执行或下发配置,无需任何客户端代理软件,从而使得自动化环境部署变得简单,同时支持多台主机并行管理,使得管理主机更加便携。
二、安装部署Ansible服务ansible自动化运维环境有控制主机与被管理主机组成,由于ansible是基于SSH协议进行通信的,所以控制主机安装ansible软件后不需要重启或者运行任何程序,被管理主机也不需要安装或者运行任何代理程序。
2.1、安装部署Ansible 服务器IP地址操作系统组名控制主机 192.168.144.112 CentOS7.3 x86_64 无
被控制主机1 192.168.144.111 centos7.3 x86_64 webserver
被控制主机2 192.168.144.114 centos7.3 x86_64 mysql
1)配置yum源
yum install epel-release
2)安装ansible
yum install ansible -y
yum install tree -y
3)安装完成后,利用tree命令查看配置文件结构。
tree /etc/ansible
/etc/ansible/ ├── ansible.cfg //主配置文件 ├── hosts //管控主机文件 └── roles //角色目录 2.2、配置主机清单vim /etc/ansible/hosts
[webserver] //主机分类组名
192.168.144.111 //主机IP地址或者是域名
[mysql]
192.168.144.114
控制服务器上操作,为了避免ansible下发指令时输入被管理主机的密码,需要使用SSH证书签名达到免密登录效果。使用ssh-keygen产生一对密匙,使用ssh-copy-id来下发公匙。
ssh-keygen -t rsa
ssh-copy-id root@192.168.144.111 //发送公匙给被控服务器
ssh-copy-id root@192.168.144.114
当被控制服务器接收到公匙后,实际已经可以通过ansible进行命令控制,只是,存在每次都需要输入私钥密码交互式验证较为麻烦,因此需要设置免交互代理。
ssh-agent bash
ssh-add //输入私钥密码即可
命令格式:ansible [主机] [-m 模块] [-a args]
ansible-doc -l //列出所有已安装的模块 注:按q退出
ansible-doc -s user //-s列出user模块描述信息和操作动作
3.2、command模块Ansible管理工具默认模块,若省略-m command,ansible默认使用command的模块
ansible 192.168.144.111 -m command -a 'date' //指定ip执行date
ansible webserver -m command -a 'date' //指定分类执行date
ansible mysql -m command -a 'date'
ansible all -m command -a 'date' //所有hosts主机执行date命令
ansible all -a 'ls -l /' 如果不加-m模块,则默认运行command模块
两种状态,present表示添加,默认状态,absent表示移除
ansible-doc -s cron //查看cron模块信息
ansible webserver -m cron -a 'minute="*/1" job="/bin/echo heihei"'