Ansible作为一款自动化IT运维工具,具备非常出色的性能和功能。
安装包:补充进去YUM源进行安装的
ansible-2.4.2.0-2.el7.noarch.rpm
python2-jmespath-0.9.0-3.el7.noarch.rpm
python-httplib2-0.9.2-1.el7.noarch.rpm
python-paramiko-2.1.1-4.el7.noarch.rpm
python-passlib-1.6.5-2.el7.noarch.rpm
sshpass-1.06-2.el7.x86_64.rpm
一、环境准备,关闭firewalld,NetworkManager,selinux
1、准备6台服务器,对应IP为
192.168.1.51 ansible
192.168.1.52 web1
192.168.1.53 web2
192.168.1.54 db1
192.168.1.55 db2
192.168.1.56 cache
2、以ansible为管理节点,其他主机为托管节点。管理节点部署ssh免密登录托管节点
并且同步hosts文件
3、(非必须步骤)部署NTP服务器。做好管理节点与托管节点的时间同步。
二、安装Ansible
yum -y install ansible
三、修改配置,定义主机分组
ls /etc/ansible/
可以看到Ansible的主配置文件和主机定义文件,一般只需要修改主机定义文件
vim /etc/ansible/hosts
最后追加这些内容,web组有XX主机 db组有XX主机等信息,最后的那个是子组,子组里面可以囊括组
四、Ansible的基本操作
格式:
ansible 组 -m 模块 -a ‘调用的命令’
下面是各模块的测试截图
ansible-doc 模块 相当于man帮助,里面会罗列出此模块的介绍信息和例子
这个模块,是会把命令,在指定主机的home目录执行结果,我们登录web1查看,可以看到,tmp目录下并没有生成f100文件,在home目录下生成了
script模块的效果就是当前目录下的shell脚本,执行。
请注意标红的地方。这里有很大的疑问点。请留意。
ansible all -m shell -a 'cat /etc/sysconfig/network-scripts/ifcfg-eth0 > /root/eth0.txt'
所有托管节点的eth0这个文件,复制到root下的eth0.txt
查看一下
ansible all -m shell -a 'cat /root/eth0.txt'
lineinfile模块,通俗说就是行编辑模块,我们的目标是把ONBOOT的值,修改为no
ansible all -m lineinfile -a 'path=/root/eth0.txt regexp="^ONBOOT=" line="ONBOOT=no"'
replace模块,通俗说就是内容修改模块。我通常是把需要保留的字符,处理成一个整体,然后后面跟需要修改的值
NAME=eth0 把这个值改成happy
ansible all -m replace -a 'path=/root/eth0.txt regexp="^(NAME=).*" replace="\1happy"'
ansible all -m yum -a 'name="lftp" state=installed'
YUM模块,安装软件 state=removed 删除软件
ansible web -m yum -a 'name="httpd" state=installed'
ansible web -m service -a 'name="httpd" enabled="yes" state=started'
service模块,服务模块,用于批量启动服务的
基本的Ansible使用,到这里结束