自动化运维—ansible—ansibel清单配置(INI语法&YAML语法)
文章目录
1.ansibel清单配置(INI语法)
- 基本清单配置
将一台服务器添加到清单中:
注意:此时的ansible端要能成功ssh连接server2
cd /etc/ansible/
ls
vim hosts
写入:
172.25.254.2
ansible 172.25.254.2 -m ping #使用ansible的ping模块连接
发现连接失败,是因为ansible并不知道我们要连接的用户和密码
再次编辑ansible清单,写入用户和密码:
vim hosts
写入:
172.25.254.2 ansible_port=22 ansible_user=root ansible_ssh_pass=redhat
ansible 172.25.254.2 -m ping #连接成功
我们还可以不用ip地址去连接,而给每台主机起一个别名:
vim hosts
写入:
server2 ansible_host=172.25.254.2 ansible_port=22 ansible_user=root ansible_ssh_pass=redhat
ansible server2 -m ping #连接成功
其实也可以不必在清单中写入这么多的信息,我们可以做好免密:
ssh-keygen
ssh-copy-id server1
ssh-copy-id server2
ssh-copy-id server3
ssh-copy-id server4
vim hosts
写入:
172.25.254.3
ansible 172.25.254.3 -m ping #连接成功
使用别名连接:
vim hosts
写入:
server3 ansible_host=172.25.254.3
ansible server3 -m ping #连接成功
- ansible的分组功能
使用all关键字管理清单中的所有主机:
vim hosts
写入:
172.25.254.2
172.25.254.3
ansible all -m ping
分组1:
写法1:
[A]
172.25.254.2
172.25.254.3
[B]
172.25.254.4
写法2:
[A]
172.25.254.[2:3]
#172.25.254.3
注意:此处的[2:3]表示2到3,如果你有n台主机,也可以写[2:n]
写法3:使用主机名的方式配置
[A]
#172.25.254.[2:3]
#172.25.254.3
server2
server3
注意:主机名和别名的区别在于,别名要指定ip地址,而主机名必须写好解析
写法4:
[A]
#172.25.254.[2:3]
#172.25.254.3
server[2:3]
#server3
分组2:
[proA]
172.25.254.3
[proB]
172.25.254.4
[pro:children]
proA
proB
注意:此处的[pro:children]表示pro组包含的子组
2.YAML语法
YAML:(Yet Another Markup Language)语言(发音/'jaemal/ )是一个类似XML、JSON的标记性语言。
YAML强调以数据为中心,并不是以标识语言为重点。因而YAML本身的定义比较简单,号称“一种人性化的数据格式语言”。目的就是方便人类读写。它实质上是一种通用的数据串行化格式
我们可以使用YAML编写配置文件,而ansible的清单也支持YAML的语法,所以我们可以使用YAML语法编写清单,从而管理受管主机
3.ansibel清单配置(YAML语法)
默认使用2个空格来表示缩进,而不是tab键
all表示最大的组,而hosts属于all的下一级;而受管主机与hosts之间又用两个空格表示缩进。
示例1:
INI:
172.25.254.2
172.25.254.3
YAML:
all:
hosts:
172.25.254.2:
172.25.254.3:
示例2:
INI:
172.25.254.2
[tset1]
172.25.254.3
[tset2]
172.25.254.4
YAML:
all:
hosts:
172.25.254.2:
children:
test1:
hosts:
172.25.254.3:
test2:
hosts:
172.25.254.4:
示例3:
INI:
[proA]
172.25.254.3
[proB]
172.25.254.4
[pro:children]
proA
proB
YAML:
all:
children:
pro:
children:
proA:
hosts:
172.25.254.3:
proB:
hosts:
172.25.254.4:
示例4:
使用别名的方式配置受管主机:
INI:
172.25.254.2
serverc ansible_host=172.25.254.3
172.25.254.4
YAML:
all:
hosts:
172.25.254.2:
serverc:
ansible_host: 172.25.254.3
172.25.254.4:
注意:ansible_host:后面要有两个空格