我有一个假的怀疑让我卡住了很长时间。我有一个非常平庸的包含主机和变量的清单文件:
[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。
示例:我有一个DB主机,IP:10.112.83.37
。
库存文件:
[db]
10.112.83.37
data_base_url=jdbc:oracle:thin:@{{ db }}:1521/ssdenwdb
oracle_url = {{ data_base_url }}
问题是group_vars/all文件中的{{db}}
变量没有被db主机IP替换。用户只能编辑库存文件。
- name: host
debug: msg="{{ item }}"
with_items:
- "{{ groups['tests'] }}"
这段代码将提供以下信息:
'10.112.84.122'
'10.112.84.124'
因为组['tests']
基本上返回唯一ip地址列表['10.112.84.122'、'10.112.84.124']
,而组['tomcat'][0]
返回10.112.84.124
。
Ansible清单文件: Ansible Playbook: Ansible group_vars文件:
/inventory/group_vars/directory有 我希望host_1引用/inventory/group_vars/host_1.yml中的变量
正如主题所说。我在主机清单文件中定义了一些主机变量。我如何在我的剧本中访问它们? 这里有一个例子。根据我所有的研究,我希望和是的一部分。我可以将主机特定的变量放在单独的var文件中,但我希望将它们保存在“附加”到主机的清单文件中。我不想在模板中使用它。ansible版本:1.3.2,Ansible_distribution_version:6.4
我一直试图使用Ansible Playbook将主机名添加到我的主机文件中。我的Ansible播放如下所示,我的主机文件位于: Playbook成功执行,但新主机名没有添加到Ansible hosts文件中。有人能帮我吗?
我有一组名为到的主机。它们在Ansible主机目录中被分组为。我想排除一个主机子集,如下所示: 根据Ansible文档,这似乎应该排除到。但是,我得到了“不能匹配主机模式,忽略vm[8-10]-prod”,就像它在读取实际主机名“vm[8-10]-prod”而不是数组一样。 我还尝试了,但也出现了同样的错误。 怎么啦?
Ansible版本:1.9.2 IP是正确的,组名是正确的,但当我检查ansible主机文件时,它没有被修改。我确保在主机文件中包含[group_name]。在运行过程中没有错误,也不确定为什么没有将其添加到文件中。 这个页面上有一个'add_host'的例子:http://docs.ansible.com/ec2_module.html而不是name和groups,而是使用hostname、gr