环境准备:
各节点网络互通
各节点仓库部署
一,部署网络仓库
#如果安装wget工具失败,检查本地仓库是否挂载成功!
[root@ansible ~]# yum install -y wget
#下载网络仓库配置文件
[root@ansible ~]# wget -O /etc/yum.repos.d/epel-7.repo https://mirrors.aliyun.com/repo/epel-7.repo
[root@ansible ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#清除现有缓存,构建新的仓库缓存
[root@ansible ~]# yum clean all && yum makecache
二,安装ansible
yum install -y ansible
三,配置主控节点和被控节点
(1) , 在/etc/hosts 文件中,做主机名和ip地址映射
[root@ansible ~]# vim /etc/hosts
10.10.10.11 ansible
10.10.10.12 host01
10.10.10.13 host02
10.10.10.14 host03
(2),主控节点和被控节点全部做免密登录
Ansible主控节点,与被控节点,全部做SSH免密认证
[root@ansible ~]# ssh-keygen
[root@ansible ~]# ssh-copy-id host01
[root@ansible ~]# ssh-copy-id host02
[root@ansible ~]# ssh-copy-id host03
四,配置ansible主机清单
Ansible主机清单:
主机清单是Ansible的一个重要内容。在主机清单内,定义了Ansible需要控制的主机有哪些,以及其用户名、密码等信息,这些信息可以使得Ansible通过SSH链接到指定主机上。
Ansible的主机清单默认写在/etc/ansible/hosts文件中。你也可以写在另一个指定文件内,而我们在调用Ansible命令的时候,需要使用-i选项来指定主机清单文件。
在默认情况下,/etc/ansible/hosts文件为空的,我们需要手动的在文件内添加主机清单。
在配置主机清单文件时,我们可以配置某台单独节点,也可以指定主机组(使用中括号可以设置一个主机组名称,中括号下的主机就属于该主机组。)
我们在执行Ansible命令的时候,必须指定目标节点。
[root@ansible ~]# vim /etc/ansible/hosts
以下是ansible主机清单--默认-注释介绍:
# Ex 1: Ungrouped hosts, specify before any group headers.
## 直接写上被控节点的主机名称,或者是节点IP地址
## green.example.com
## blue.example.com
## 192.168.100.1
## 192.168.100.10
# Ex 2: A collection of hosts belonging to the 'webservers' group
## 通过 [主机组名称] 的方式,定义一个主机组,在中括号下面的,默认都是该组的成员节点
## [webservers]
## 主机组成员,可以写IP地址,也可以写映射后的主机名称,反正Ansible都可以识别
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110
# Ex 3: A collection of database servers in the 'dbservers' group
## 这是第二个定义的主机组[dbservers],因为有了新的中括号,所以这是第二个主机组列表,不会和第一个冲突
## [dbservers]
## db01.intranet.mydomain.net
## db02.intranet.mydomain.net
## 10.25.1.56
## 10.25.1.57
将被控节点写入同一个主机组中
[hosts]
host01
## 192.168.1.100
## 192.168.1.110
五,测试
使用ping模块,测试一下主机组之间,网络是否可达:
ansible hosts -m ping
出现这样的就是成功了!!!
host01 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}