Ansible:我们可以为 host_vars 个文件设置自定义名称吗
Ansible: Can we have custom names for host_vars files
什么有效
我的 ansible 库存整理如下:
../project1
|- group_vars
|- host_vars
|- 10.20.30.1.yml
{{content like remote-endpoint="x.x.x.x", ... a very big var map... ,}}
|- 10.20.30.2.yml
{{content like remote-endpoint="y.y.y.y", ... a very big var map... ,}}
inventory
我的库存文件内容如下:
10.20.30.1 hvar="host1"
10.20.30.2 hvar="host2"
以上按预期工作,我能够访问特定主机的所有主机级变量。
我想做什么?
我想让 host_vars/*files* 的名称基于标签(可能),例如 - host1、host2 等 而不是"inventory_hostsname" ansible 变量的值。这将使我能够给出一些特定于功能的名称,如 master、slave 等 同样在后一种情况下,即使主机发生变化,文件的名称也可以保持不变。
Ansible 提供了随意命名的选项。实际上,这也是首选方式。您可以像这样在 ansible hosts
(不是 /etc/hosts)文件中定义所有主机。
allgrouphost1
allrouphost2
[master]
host1
[slave]
host2
host3
host4
然后您可以在host_vars/host1.yml
、host_vars/host2.yml
等中定义变量。
您可以在 hosts
文件或使用 ansible_host
变量的特定主机 vars 文件中定义主机 IP 地址。
有hosts
个文件
host1 ansible_host=192.0.2.98 ansible_user=deploy
与 host_vars/host1.yml
文件
ansible_host: 192.0.2.98
ansible_user: deploy
括号中的标题是组名([master]
,[slave]
),用于对主机进行分类,并决定您在什么时候以及出于什么目的控制哪些主机。
您可以 运行 按组名编写剧本,这样,这些剧本仅在属于该组的那些主机上执行。您还可以在 group_vars
文件中定义公共变量。
有关详细信息和用例,请参阅 documentation。
什么有效
我的 ansible 库存整理如下:
../project1
|- group_vars
|- host_vars
|- 10.20.30.1.yml
{{content like remote-endpoint="x.x.x.x", ... a very big var map... ,}}
|- 10.20.30.2.yml
{{content like remote-endpoint="y.y.y.y", ... a very big var map... ,}}
inventory
我的库存文件内容如下:
10.20.30.1 hvar="host1"
10.20.30.2 hvar="host2"
以上按预期工作,我能够访问特定主机的所有主机级变量。
我想做什么?
我想让 host_vars/*files* 的名称基于标签(可能),例如 - host1、host2 等 而不是"inventory_hostsname" ansible 变量的值。这将使我能够给出一些特定于功能的名称,如 master、slave 等 同样在后一种情况下,即使主机发生变化,文件的名称也可以保持不变。
Ansible 提供了随意命名的选项。实际上,这也是首选方式。您可以像这样在 ansible hosts
(不是 /etc/hosts)文件中定义所有主机。
allgrouphost1
allrouphost2
[master]
host1
[slave]
host2
host3
host4
然后您可以在host_vars/host1.yml
、host_vars/host2.yml
等中定义变量。
您可以在 hosts
文件或使用 ansible_host
变量的特定主机 vars 文件中定义主机 IP 地址。
有hosts
个文件
host1 ansible_host=192.0.2.98 ansible_user=deploy
与 host_vars/host1.yml
文件
ansible_host: 192.0.2.98
ansible_user: deploy
括号中的标题是组名([master]
,[slave]
),用于对主机进行分类,并决定您在什么时候以及出于什么目的控制哪些主机。
您可以 运行 按组名编写剧本,这样,这些剧本仅在属于该组的那些主机上执行。您还可以在 group_vars
文件中定义公共变量。
有关详细信息和用例,请参阅 documentation。