Variables Ansible:我们可以为主机变量文件定制名称吗

Variables Ansible:我们可以为主机变量文件定制名称吗,variables,ansible,ansible-inventory,inventory,Variables,Ansible,Ansible Inventory,Inventory,什么在起作用 我有如下组织的可用库存: ../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

什么在起作用

我有如下组织的可用库存:

../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"
我的库存文件的内容如下:

../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/*文件*的名称基于标记(可能)如-host1、host2等,而不是“inventory_hostsname”ansible变量的值。这将使我能够给出一些特定于函数的名称,如master、slave等。在后一种情况下,即使主机发生变化,文件的名称也可以保持不变。

Ansible提供了按需命名的选项。事实上,这也是首选的方式。您可以像这样在ansible
hosts
(而不是/etc/hosts)文件中定义所有主机

allgrouphost1
allrouphost2

[master]
host1

[slave]
host2
host3
host4
然后可以在
host\u vars/host1.yml
host\u vars/host2.yml
等中定义变量

您可以使用
ansible\u host
变量在
hosts
文件或其特定的主机vars文件中定义主机ip地址

使用
主机
文件

host1 ansible_host=192.0.2.98 ansible_user=deploy
ansible_host: 192.0.2.98
ansible_user: deploy
使用
host\u vars/host1.yml
文件

host1 ansible_host=192.0.2.98 ansible_user=deploy
ansible_host: 192.0.2.98
ansible_user: deploy
括号中的标题是组名(
[master]
[slave]
),用于对主机进行分类,并确定您在什么时候控制哪些主机以及控制的目的

您可以按组名运行playbooks,以便仅在属于该组的主机上执行。您还可以在
group\u vars
文件中定义公共变量

有关更多详细信息和用例,请参阅