本来打算自己写一波 ansible 系列的,后来发现一老哥写的太好了,「点击此处直达」,我这里也就边看边对该系列文章做下笔记,方便以后查阅,ansible 入门的话墙裂建议阅读前方链接博文~~~
ansible 主机清单默认配置文件:/etc/ansible/hosts
。
配置格式可分为两类,一类是 INI 格式配置,一类是 YAML 格式配置。
INI 格式
普通配置
10.0.1.201 ansible_port=22 ansible_user=root ansible_ssh_pass=root1234
10.0.1.202 ansible_port=22 ansible_user=root ansible_ssh_pass=root1234
ansible_port
:用于配置对应主机上的 sshd 服务端口号,在实际的生产环境中,各个主机的端口号通常不会使用默认的 22 号端口,所以用此参数指定对应端口,为 22 时可省略;ansible_user
:用于配置连接到对应主机时所使用的用户名称;ansible_ssh_pass
用于配置对应用户的连接密码;
对指定主机进行操作时直接指定 IP:
$ ansible 10.0.1.201 -m ping
使用别名
B ansible_host=10.0.1.201 ansible_port=22 ansible_user=root ansible_ssh_pass=root1234
C ansible_host=10.0.1.202 ansible_port=22 ansible_user=root ansible_ssh_pass=root1234
注意:上述配置参数都是 ansible 2.0 版本以后的写法,2.0 版本之前,应遵从如下写法:
ansible_port
应该写成ansible_ssh_port
;ansible_user
应该写成ansible_ssh_user
;ansible_host
应该写成ansible_ssh_host
;可以使用
ansible --version
来查看你当前安装的 ansible 版本,我这里使用的是 ansible 2.9.6,所以就使用新的写法了。
对指定主机进行操作时直接指定别名即可:
$ ansible B -m ping
主机分组
将 B、C 主机归为 test_group
组。
[test_group]
B ansible_host=10.0.1.201
C ansible_host=10.0.1.202
指定组名则会对该组下的所有主机进行操作:
$ ansible test_group -m ping
父子组
使用 children
关键字创建父组 parent_group
,其包含两个子组分别是 group1
、group2
。
[group1]
B ansible_host=10.0.1.201
[group2]
C ansible_host=10.0.1.202
[parent_group:children]
group1
group2
指定父组名则会对该父组的所有子组包含的主机进行操作:
$ ansible parent_group -m ping
YAML 格式
分组
创建一个名为 test_group
的组,该组中包含 10.0.1.201
、10.0.1.202
两台主机:
test_group:
hosts:
10.0.1.201:
10.0.1.202:
相当于如下 INI 格式配置:
[test_group]
10.0.1.201
10.0.1.202
父子组
创建一个名为 parent_group
的父组,其包含 group1
、group2
的子组:
parent_group:
children:
group1:
hosts:
10.0.1.201
group2:
hosts:
10.0.1.202
相当于如下 INI 格式配置:
[group1]
10.0.1.201
[group2]
10.0.1.202
[parent_group:children]
group1
group2
使用别名
创建两个组分别名为 group1
和 group2
,group1
组下有一别名为 B
的主机,group2
组下有一别名为 C
的主机:
group1:
hosts:
B:
ansible_host: 10.0.1.201
group2:
hosts:
C:
ansible_host: 10.0.1.202
相当于如下 INI 格式配置:
group1:
hosts:
B:
ansible_host: 10.0.1.201
group2:
hosts:
C:
ansible_host: 10.0.1.202
评论区