我有一个虚拟的怀疑,让我坚持了很长的时间。我有一个主机和变量非常平庸的清单文件:Ansible - 读库存主机和变量group_vars /所有的文件
[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 /所有的文件。
我尝试了以下几种方式来访问主机IP:
{{ lb }}
"{{ hostvars[lb] }}"
"{{ hostvars['lb'] }}"
{{ hostvars[lb] }}
要访问主机变量我想:
"{{ hostvars[tests].['data_base_host'] }}"
他们都是错的!谁能帮我找出访问的主机和变量,而不是从剧本,但是从变量文件的最佳做法是什么?
编辑:
确定。让我们澄清一下。
问题:在变量文件中使用库存文件中声明的主机,比如说:group_vars/all。
例如:我有一个DB主机IP:10.112.83.37
。
库存文件:
[db]
10.112.83.37
在组:瓦尔/我想使用IP构建一个变量的所有文件。
group_vars /所有文件:
data_base_url=jdbc:oracle:thin:@{{ db }}:1521/ssdenwdb
在我使用/建于group_vars变量所有文件的模板。
模板文件:
oracle_url = {{ data_base_url }}
的问题是,在group_vars的{{ db }}
变量/所有的文件不被DB主机IP取代。用户只能编辑清单文件。
我不认为你可以。变量可以通过操作和模板进行访问。 我想你从这些变量生成一些配置文件?所以利用它们的地方是在模板中。 你能否解释一下为什么你需要“访问”他们group_vars.all? – leucos
感谢您的回复。好吧,我想有一个中心文件,我把我需要的所有变量。清单文件只包含主机IP,其余的都在group_vars.all文件中。但其中一些变量(在group_vars.all文件中)包含某些主机的IP,这就是为什么我需要访问库存文件中主机的IP。 –
为了完成说明,我的目标是让任何想要配置系统的用户只在库存文件中添加主机IP。剩下的所有其他变量都建立在group_vars.all文件中。谢谢。 –