Шаблон jinja2 в правиле ansible firewalld

Я пишу правила firewalld в ansible playbook, используя richrule в модуле firewalld. В нем мне нужно использовать одни и те же правила для разных исходных IP-адресов. Например: в правиле, написанном как,

rich_rule= rule family='ipv4' source address='xxx.xxx.xxx.xxx' protocol value='icmp' accept

Мне нужно только изменить адрес. Поэтому для этого мне нужно применить разные IP-адреса, используя шаблон jinja2. Для этого я написал следующие правила:

rich_rule= rule family='ipv' source address="{{ lookup('file', './src.txt') }}" protocol value="icmp" accept 

И удалось выполнить его, добавив IP-адреса в файл src. Но там я не мог добавить больше одного адреса. Итак, для меня необходимо выбрать несколько IP-адресов из текстового файла и применить правила. Есть ли способ сделать это? Если кто-нибудь знает способ, которым это можно сделать, пожалуйста, помогите мне с этим.

заранее спасибо


person Vithushan Rasalingam    schedule 29.06.2020    source источник
comment
Кроме того, пожалуйста, сделайте правильный отступ в своем сообщении. Непонятно, где начинается блок кода и где он заканчивается.   -  person aru_sha4    schedule 29.06.2020
comment
Примите ответ, если это помогло.   -  person aru_sha4    schedule 30.06.2020


Ответы (1)


Попробуйте использовать доступный файл инвентаризации. Вы можете определить список и указать столько значений для исходного адреса, сколько захотите, и перебирать их в своей книге.

В инвентаре добавить:

source-address:
  - 'xxx.xxx.xxx.xxx'
  - 'yyy.yyy.yyy.yyy'
  - 'zzz.zzz.zzz.zzz'

В playbook добавьте цикл для перебора переменной source-address как:

- name: Rules
  rich_rule: rule
  family: 'ipv'
  source_address: "{{ item }}" 
  protocol_value: "icmp"
  with_items: '{{ source-address }}'

Обратите внимание на with_items в приведенном выше фрагменте. Здесь вы в основном просматриваете элементы списка source-address, определенных в инвентаре.

Надеюсь, это поможет.

person aru_sha4    schedule 29.06.2020