我有一个愚蠢的疑问,让我被困了很长时间。我有一个非常普通的清单文件,其中包含主机和变量:
[lb]
10.112.84.122
[tomcat]
10.112.84.124
[jboss5]
10.112.84.122
...
[tests:children]
lb
tomcat
jboss5
[default:children]
tests
[tests:vars]
data_base_user=NETWIN-4.3
data_base_password=NETWIN
data_base_encrypted_password=
data_base_host=10.112.69.48
data_base_port=1521
data_base_service=ssdenwdb
data_base_url=jdbc:oracle:thin:@10.112.69.48:1521/ssdenwdb
问题是我需要从 group_vars/all 文件访问清单文件中的所有这些主机和变量。
我尝试了以下方式访问主机IP:
{{ lb }}
"{{ hostvars[lb] }}"
"{{ hostvars['lb'] }}"
{{ hostvars[lb] }}
要访问我尝试的主机变量:
"{{ hostvars[tests].['data_base_host'] }}"
都是错的!!!谁能帮我找出访问主机和变量的最佳实践,而不是从剧本而是从变量文件?
编辑:
好的。让我们澄清一下。
问题:在变量文件中使用库存文件中声明的主机,比如说:group_vars/all。
示例:我有一个带有IP:10.112.83.37
.
库存文件:
[db]
10.112.83.37
在 group:vars/all 文件中,我想使用该 IP 来构建一个变量。
group_vars/所有文件:
data_base_url=jdbc:oracle:thin:@{{ db }}:1521/ssdenwdb
在模板中,我使用 group_vars/all 文件中内置的变量。
模板文件:
oracle_url = {{ data_base_url }}
问题是{{ db }}
group_vars/all 文件中的变量没有被 DB 主机 IP 替换。用户只能编辑库存文件。