gpt4 book ai didi

Ansible - 将库存主机和变量读取到 group_vars/all 文件

转载 作者:行者123 更新时间:2023-12-03 10:32:59 26 4
gpt4 key购买 nike

我有一个虚拟的怀疑让我卡住了很长时间。我有一个非常平庸的 list 文件,其中包含主机和变量:

[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 文件访问 list 文件中的所有这些主机和变量。

我尝试了以下方式来访问主机IP:
{{ lb }}
"{{ hostvars[lb] }}"
"{{ hostvars['lb'] }}"
{{ hostvars[lb] }}

要访问我尝试过的主机变量:
"{{ hostvars[tests].['data_base_host'] }}"

都是错的!!!谁能帮我找出访问主机和变量的最佳实践,不是从剧本而是从变量文件?

编辑:

好的。让我们澄清一下。

问题:在变量文件中使用 list 文件中声明的主机,例如: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 文件中的变量不会被数据库主机 IP 替换。用户只能编辑库存文件。

最佳答案

- name: host
debug: msg="{{ item }}"
with_items:
- "{{ groups['tests'] }}"

这段代码将给出以下信息:
'10.112.84.122'
'10.112.84.124'

groups['tests']基本上返回唯一IP地址列表 ['10.112.84.122','10.112.84.124']groups['tomcat'][0]返回 10.112.84.124 .

关于Ansible - 将库存主机和变量读取到 group_vars/all 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21908363/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com