Ansible:在 Ansible 清单中使用主机范围时如何获取当前"host index"?



给定一个针对特定主机范围的inventory.yml,例如这个

my_role:
hosts:
computer-[1:50].com:
my_role_variable: true

假设我想设置一个变量my_role_variable_2,它依赖于主机范围的"当前迭代器",例如computer-42.com应该得到变量COMPUTER_42,如:

my_role:
hosts:
computer-[1:50].com:
my_role_variable: true
my_role_variable_2: "COMPUTER_{{ ?? index ?? }}"

考虑到特殊变量inventory_hostname的存在,我想我可以使用类似regex_search:的东西

my_role:
hosts:
computer-[1:50].com:
my_role_variable: true
my_role_variable_2: "COMPUTER_{{ inventory_hostname | regex_search('computer-(d+).com') }}"

但肯定有更好的方法吗?

过滤器"regex_replace"应该完成的工作

var2: "COMPUTER_{{ inventory_hostname|regex_replace('computer-(\d+).com', '\1') }}"

下一个选项是"split((">

var2: "COMPUTER_{{ inventory_hostname.split('.').0.split('-').1 }}"

最新更新