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
文件中定义公共变量
有关更多详细信息和用例,请参阅