自动化运维中应该使用也是强烈推荐使用的一个软件是Redhat公司下的一个产品:ansible,该软件的优势毋庸置疑,具有单端,无需客户端安装,运行效率比较高,自动化部署工程以及安装配置生产环境通过剧本,角色这样的高阶方式快速完成,通过客户端分组,可以灵活多样的个性定制客户机,能够满足大部分的生产任务。
那么,ansible是是用Python语言编写的,其工作方式为主机通过ssh方式连接客户端,因此,做好主机的ssh安全基本可以提供一个高效安全的环境(前提是主机不要被攻破了)。通常,我们称呼管理那些客户端机器的主机为堡垒机。
ansible的模块也十分之多,其中常用的模块有,ping,shell,script,copy,file,stat,cron,service,user等等模块,基本涵盖了Linux的所有命令功能。
通常的ansible使用步骤如下:
1.yum安装ansible,yum这种方式安装需要配置epel源
yum install epel*
yum install ansible
2.由于ansible是通过ssh来连接客户端的,并不是一个服务性质的软件,因此,不需要设置什么开机自启什么的,其结构是比较简单的。ssh连接安全性比较高的是通过秘钥连接,因此,一般是秘钥分发给客户端即可。
在主机执行两个命令:
ssh-keygen,该命令生成本机的秘钥
ssh-copy-id 客户端ip地址 该命令将本机的密钥分发至客户端
3.建立客户端清单
一般默认情况下,客户端清单格式为【组名称】
客户端ip地址
客户端ip地址。。。。
该文件位置为/etc/ansible/hosts,vim打开该文件,以上格式末尾添加即可
4.以上步骤完成后,可以使用ansible管理客户端了
例如:ping客户端
ansible all -m ping
ansible -i /etc/ansible/hosts webs -m ping
其中all指的是hosts文件内所有定义的客户端,我只分了一个组,组名是webs,第二个命令是指定hosts文件内的webs并执行ping命令。同理,查看httpd是否安装:
ansible all -m shell -a "rpm -q httpd"
ansible -i /etc/ansible/hosts webs -m shell -a "rpm -q httpd"
执行结果都一样:[WARNING]: Consider using the yum, dnf or zypper module rather than running 'rpm'. If you need to use command because yum, dnf or zypper is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in
ansible.cfg to get rid of this message.
192.168.122.10 | CHANGED | rc=0 >>
httpd-2.4.6-90.el7.centos.x86_64
192.168.122.30 | CHANGED | rc=0 >>
httpd-2.4.6-90.el7.centos.x86_64
报警意思为 建议你使用yum dnf zypper这样的模块比较好,更专业。如果想关闭警告,更改配置文件command_warnings=False' 。配置文件在 /etc/ansible/ansible.cfg.一般忽略即可。
以上为ansible的简单的使用准备和最简单的一点应用。