如何根据 playbook 中定义的 var 访问特定的 NIC IP 地址?

How can I access a specific NIC IP address based on a var defined in my playbook?

我使用相同的角色定义了不同的剧本。 在其中一个 ROLE 模板中,我必须写入特定 NIC 卡的 IP 地址,该地址在我的 playbook 中定义,因为它取决于主机。

所以,在我的剧本中我定义了这个变量:

vars:
      # NIC I want to use
      - nic_card: ens192

在我的 ROLE main.yml 文件中,我尝试这样做:

host_specific_address: "{{ ansible_facts['ansible_{{ nic_card }}']['ipv4']['address'] }}"

如您所见,我尝试使用 ansible_facts 和 [=26= 来定义 host_specific_address ]nic_card变量

不幸的是,它没有按预期工作。我尝试了其他组合,但我认为我走错了路。

如何根据 playbook 中定义的 var 访问特定的 NIC IP 地址?

感谢您的帮助!

specific_address: "{{ ansible_facts[nic_card]['ipv4']['address'] }}"
  • 当您通过 ansible_facts 字典访问事实时,它们没有前缀 'ansible_'
  • 当您使用变量的内容指定字典的键时,您不使用引号或 {{}} 指定文字字符串 = some_dict['key_name'] 与指定基于键的键在存储在变量中的字符串上 = some_dict[var_containing_key_string]