自动化运维管理工Ansible安装与配置

互联网的快速发展导致产品更新换代速度加快,按照传统维护操作使得工作效率低下,自动化运维以尽可能安全高效的完成工作为目的,实现代替传统工作方式。

自动化运维工具划分为两类:

一是需要使用代理工具的,也就是基于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 //角色目录

自动化运维管理工Ansible安装与配置

2.2、配置主机清单

vim /etc/ansible/hosts

[webserver]      //主机分类组名
192.168.144.111  //主机IP地址或者是域名

[mysql]
192.168.144.114

2.3、利用SSH实现登录

控制服务器上操作,为了避免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安装与配置

三、Ansible应用命令模块 3.1、ansible命令格式

命令格式:ansible [主机] [-m 模块] [-a args]

ansible-doc -l //列出所有已安装的模块 注:按q退出

ansible-doc -s user //-s列出user模块描述信息和操作动作

自动化运维管理工Ansible安装与配置

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模块

3.2、cron模块

两种状态,present表示添加,默认状态,absent表示移除

ansible-doc -s cron //查看cron模块信息
ansible webserver -m cron -a 'minute="*/1" job="/bin/echo heihei"'

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c549fb769d857c0bf0f1f19c5967082a.html