Как я могу получить доступ к определенному IP-адресу сетевого адаптера на основе переменной, определенной в моей книге воспроизведения? - PullRequest
0 голосов
/ 24 января 2019

У меня определены разные пьесы, использующие одну и ту же роль.В одном из шаблонов ROLE мне нужно записать IP-адрес конкретной карты NIC, который определен в моей книге воспроизведения, поскольку он зависит от хоста.

Итак, в моей книге воспроизведения я определил эту переменную:

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

И в моем файле ROLE main.yml я попытался сделать это:

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

Как вы можете видеть, я попытался определить host_specific_address ansible_facts и nic_card var.

К сожалению, это не сработало, как ожидалось.Я пробовал другие комбинации, но я думаю, что я на неправильном пути.

Как я могу получить доступ к определенному IP-адресу сетевого адаптера на основе переменной, определенной в моем playbook?

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 25 января 2019
specific_address: "{{ ansible_facts[nic_card]['ipv4']['address'] }}"
  • когда вы обращаетесь к фактам через словарь ansible_facts, они не начинаются с префикса 'ansible _'
  • , когда вы задаете ключ словаря, используя содержимое переменной, выне заключайте в кавычки или {{}} Задание литеральной строки = some_dict['key_name'] вместо указания ключа на основе строки, хранящейся в переменной = some_dict[var_containing_key_string]
...