Назад | Перейти на главную страницу

Ansible, получить IP-адрес для данного сетевого интерфейса через переменные

В настоящее время я столкнулся с проблемой с моей ролью ansible, на самом деле моя роль ansible установила сервер NRPE в Linux.

В некоторых случаях эти серверы имеют несколько сетевых карт и должны привязать сервер NRPE к одному конкретному сетевому адаптеру (выделенному для сети мониторинга).

Моя цель - получить IP-адрес названной сетевой карты (который является переменной, поскольку время от времени это может быть другой сетевой адаптер) и установить для этого IP-адреса параметр server_address в моем nrpe.cfg.

После некоторых исследований, попыток и ошибок, ansible_fact кажется способом собрать эту информацию. Думаю, мне придется зарегистрировать переменную для использования с моим шаблоном jinja2.

Моя основная проблема - как получить IP-адрес от именованной сетевой карты (enp0s8).

Спасибо за советы.

С Уважением,

Никос

Если в вашем учебнике есть gather_facts: yes или если вы запустите setup задача в вашей пьесе должна быть доступна такая переменная.

- debug: 
    var: ansible_enp0s8.ipv4.address

Если вы хотите увидеть все возможные переменные, которые обычно обнаруживаются, запустите такую ​​команду ansible some-hostname -m setup.

Я пытаюсь создать следующую переменную {{ansible _ {{nrpe_address_server}}. Ipv4.address}} это не работает

Вы не используете {{}} внутри выражения или, говоря иначе, вы не можете вложить их.

Вероятно, вам понадобится что-то вроде этого.

- debug: 
    var: vars['ansible_'~nrpe_address_server].ipv4.address

Использование синтаксиса [] позволяет получить доступ к конкретной переменной с помощью динамических данных. В ~ объединяет строки.