Я пишу ANSIBLE скрипт, чтобы добавить приемлемое правило, проверяя, существуют ли уже правила.
В скрипте я сохраняю все результаты iptables в переменную "ipall".Затем я читаю новые правила в "rules.txt" и сохраняю их в переменной rules.Теперь я пытаюсь взять первое правило из "rules.txt" и проверить, существуют ли правила в ipall, если нет, то добавьте его в iptables.
tasks:
- name: fetch iptable
shell: iptables-save
register: ipall
- debug: var=ipall
- name: load variables
command: cat rules.txt
register: rules
- debug: var=rules
- name: search a rule
debug:
msg: "iptables {{ item }}"
loop: rules.stdout_lines
when: item not in ipall.stdout_lines
[root@localhost myplaybooks]# cat rules.txt
-A TESTCHAIN -p tcp -m tcp --dport 100 -j ACCEPT
-A TESTCHAIN -p tcp -m tcp --dport 101 -j ACCEPT
-A TESTCHAIN -p tcp -m tcp --dport 102 -j ACCEPT
Я ожидаю, что скрипт добавит правила в rules.txt, вместо этого я получаю следующую ошибку.
ok: [localhost] => (item=rules.stdout_lines) => {
"msg": "iptables rules.stdout_lines"
}