Ansible & Vagrant: получить IP-адрес частной сети - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь создать простой сценарий для подготовки компьютеров в моей настройке Vagrant.

В настоящее время у меня настроена частная сеть, где каждый узел в файле Vagrant имеет что-то вроде:

node.vm.network "private_network", ip: "172.16.xx"

И в моем скрипте Ansible я изначально использовал {{ ansible_eth2.ipv4.address }}, чтобы подобрать IP-адрес вМои задания из Playbook.

Однако, когда я недавно поменял местами машины, переменная Ansible не была определена, поскольку у новой машины нет сетевого интерфейса eth2.На новом компьютере частный IP-адрес, установленный в файле Vagrant, по-видимому, назначен интерфейсу eth1.

В попытке обойти эту проблему и сделать аппаратную независимость от моих игровых сборников Ansible, я заменил все свои ссылки на {{ ansible_eth2.ipv4.address }} на {{ ansible_default_ipv4.address }}, но при этом IP-адрес был получен по адресу eth0 (10.0.xx).в моем случае).

Как настроить файл Vagrant на постоянное добавление IP-адреса к любому сетевому интерфейсу, который Ansible будет использовать для {{ ansible_default_ipv4.address }}?

Или, если мне это не удастся, могу ли я что-нибудь сделать с Ansible (или даже с необработанным шеллскриптом), чтобы получить частный IP-адрес?

1 Ответ

0 голосов
/ 20 октября 2018

По крайней мере, один путь, так как, вероятно, их несколько:

  - debug:
      verbosity: 0
      msg: |
          {%- for nic in ansible_interfaces -%}
          {%- for addr in (vars["ansible_"+nic]["ipv4"] | map(attribute="address") | list)
              if not (addr | regex_search('10(\.\d+){3}')) -%}
          nic {{ nic }} := {{ addr }}
          {%- endfor -%}
          {%- endfor -%}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...