ansible-inventory-hostvars-groupvars

host_vars 目录可以将 Hosts 文件一同放置在/var/ansible 目录下,也可以与 Playbook 文件放在同一个目录下, host_vars 目录内
放置和主机同名的 YAML 文件, 用来为主机设置变量。
group_vars 目录管理组变量的方法与 host_vars 目录非常相似, 存放路径也是在/etc/ansible 目录下或者与所要执行的 Playbook 相同的目录下, 用于定义组变量的文件也要使用 YAML 语法, 且文件应以主机组
名来命名。

host_vars

1
2
3
4
5
6
hostedapachesolr/
host_vars/
nyc1.hostedapachesolr.com
inventory/
hosts
main.yml
1
2
3
4
5
6
7
8
# cat hostedapachesolr/inventory/hosts
[solr]
nyc1.hostedapachesolr.com
nyc2.hostedapachesolr.com
jap1.hostedapachesolr.com
...
[log]
log.hostedapachesolr.com

在 Ansible 运行时, Ansible 会搜索 hostedapachesolr/host_vars/nyc1.hostedapachesolr.com 或者 hostedapachesolr/inventory/ host_vars/nyc1.hostedapachesolr.com(本例中未使用该文件), 在这两个文件中定义的变量只对文件名所对应的主机名生效, 并且将覆盖在其他任何 Playbook 和 Role 中定义的同名变量的值。

1
2
3
# cat hostedapachesolr/host_vars/nyc1.hostedapachesolr.com
---
tomcat_xmx: "1024m"

默认情况下, tomcat_xmx 的值为 640m, 我们在 nyc1.hostedapachesolr.com 进行的设置, 将会覆盖其默认值, 使其最终结果为 1024m。

group_vars

目录如下:

1
2
3
4
5
6
7
8
hostedapachesolr/
group_vars/
solr
host_vars/
nyc1.hostedapachesolr.com
inventory/
hosts
main.yml

在文件 group_vars/solr 中, 使用 YAML 语法为主机组 slor 定义组变量, 内容如下:

1
2
3
---
do_something_amazing=true
foo=bar