一、ansible概念*
1、ansible时是一个==“配置管理工具”,也是一个“自动化运维工具”==;
2、ansible能做什么:
可以帮助我们完成一些批量任务,或者经常重复的工作。
eg:同时在100台服务器上安装nginx服务,并启动他们。每当有新服务器机入工作环境中,需要为新服务器部署redis服务等等;
3、幂等性
对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的,不会因为多次点击而产生了副作用。
eg:你想把一个文件拷贝到目标主机目录上,但是不确定此目录是否存在此文件,当使用ansible时,如果此目录存在此文件,ansible便不会进行任何操作,如果不存在,ansible会将文件拷贝到对应目录中,ansible是一个==“以结果为导向”==,指定一个目标状态,ansible会自动判断当前状态是否与目标状态一致。这就是幂等性,当我们重复执行同一项操作时,得到的结果是一样的;
4、ansible通过ssh管理其他受管主机;
二、ansible安装使用
ansible中文官方文档:http://www.ansible.com.cn/docs/
1、通过Yum安装最新发布版本:
Fedora 用户可直接安装Ansible, 但RHEL或CentOS用户,需要 配置 EPEL
ping www.baidu.com #首先虚拟机可以上网
yum install epel-release-latest-7.noarch.rpm #安装epel源
[root@server1 yum.repos.d]# ls
epel.repo epel-testing.repo redhat.repo yum.repo
yum install ansible -y #直接安装,检查好解析及网络yum源
2、尝试通过ip连接被管理机
[root@localhost yum.repos.d]# cd /etc/ansible/ #hosts清单文件
[root@localhost ansible]# ls
ansible.cfg hosts roles
vim hosts #添加被管理主机
ssh root@172.25.1.2 #尝试ssh连接
但是ansible测试不成功,需要添加用户密码等信息
172.25.1.2 ansible_port=22 ansible_user=root ansible_ssh_pass=redhat
ansible 172.25.1.2 -m ping #ansible主机成功ping通管理机
3、通过名称连接
server2 ansible_host=172.25.1.2 ansible_port=22 ansible_user=root ansible_ssh_pass=redhat
ansible server2 -m ping
4、ansible主机间做免密认证
ssh-keygen
ssh-copy-id root@ip
172.25.1.2
ansible 172.25.1.2 -m ping
server2 ansible_host=172.25.1.2
ansible server2 -m ping
5、主机分组管理
ansible all -m ping #一次性操作清单中所有主机
(1)vim /etc/ansible/hosts
[A]
172.25.1.2
172.25.1.3
[B]
172.25.1.1
ansible A -m ping
ansible B -m ping
(2)
vim /etc/ansible/hosts
[A]
172.25.1.[2:3]
[B]
172.25.1.1
ansible A -m ping
(3)
vim /etc/ansible/hosts
[A]
server1
server2
[B]
server3
ansible A -m ping
(4)
vim /etc/ansible/hosts
[proA]
172.25.1.2
[proB]
172.25.1.3
[pro:children]
proA
proB
三、ansible:yaml语法格式
标记性语言,Yaml强调以数据为中心,并不是以标示语言为重点。因而Yaml本身定义比较简单,号称“一种人性化的数据格式语言”,目的是方便人类读写。实质上是一种通用的数据串行化化格式
我们可以使用Yaml编写配置文件和清单,从而管理受管主机。
all: #管理所有主机
hosts:
172.25.1.1:
172.25.1.2:
all:
#1不属于任何组,主机2属于test1组,主机3属于test2组
hosts:
172.25.1.1:
children: #关键字必须有
test1:
hosts:
172.25.1.2:
test2:
hosts:
172.25.1.3
all: #大分组,小分组
children:
pro:
children: #子组
proA:
hosts:
172.25.1.2:
proB:
hosts:
172.25.1.3:
all: #别名管理
hosts:
172.25.1.2:
server3:
ansible_host: 172.25.1.3
172.25.1.1: