Ansible - l oop через сетевые карты и добавьте в iptables - PullRequest
0 голосов
/ 27 января 2020

Я настраиваю NGINX в качестве прямого / обратного прокси для наших кластеров VMware. У меня есть VMWare VM, работающая NGINX с несколькими сетевыми картами. Что я хочу сделать, так это получить сетевые карты, начинающиеся с 'ens', и добавить это к iptables как прямое правило для некоторого типа l oop, но я не знаю, как это сделать.

Это Вот как я добавляю правило пересылки для ens192:

- name: Get IPtable rules
  shell: cat /etc/iptables/rules.v4
  register: iptablesrules
  tags: iptables

- name: Add iptable forward rule
  command: sudo iptables -A FORWARD -i ens192 -o ens160 -j ACCEPT
  when: iptablesrules.stdout.find("-A FORWARD -i ens192 -o ens160 -j ACCEPT") == -1
  tags: iptables

- name: Save IPtable rules
  shell: sh -c "iptables-save > /etc/iptables/rules.v4"
  tags: iptables

У меня есть этот тестовый код для получения сетевых карт, но я не знаю, как изменить это на al oop для использования:

- name: debug show interface
  debug:
    msg: "{{ (item) }}"
  with_items: "{{ ansible_interfaces }}"
  when: item.find("ens") != -1

- name: find potential good network interface cards
  set_fact: 
    fwrule: "sudo iptables -A FORWARD -i {{ (item) }} -o ens160 -j ACCEPT"
  register: fwrulelist
  with_items: "{{ ansible_interfaces }}"
  when: 
    - item.find("ens") != -1

- name: debug show interface
  debug: var=fwrulelist.results

Вот результат, который я получаю:

ok: [PXY1] => {
    "fwrulelist.results": [
        {
            "ansible_loop_var": "item",
            "changed": false,
            "item": "docker0",
            "skip_reason": "Conditional result was False",
            "skipped": true
        },
        {
            "ansible_loop_var": "item",
            "changed": false,
            "item": "lo",
            "skip_reason": "Conditional result was False",
            "skipped": true
        },
        {
            "ansible_facts": {
                "fwrule": "sudo iptables -A FORWARD -i ens224 -o ens160 -j ACCEPT"
            },
            "ansible_loop_var": "item",
            "changed": false,
            "failed": false,
            "item": "ens224"
        },
        {
            "ansible_facts": {
                "fwrule": "sudo iptables -A FORWARD -i ens160 -o ens160 -j ACCEPT"
            },
            "ansible_loop_var": "item",
            "changed": false,
            "failed": false,
            "item": "ens160"
        },
        {
            "ansible_loop_var": "item",
            "changed": false,
            "item": "veth9b95b5f",
            "skip_reason": "Conditional result was False",
            "skipped": true
        },
        {
            "ansible_loop_var": "item",
            "changed": false,
            "item": "veth3acbf56",
            "skip_reason": "Conditional result was False",
            "skipped": true
        },
        {
            "ansible_facts": {
                "fwrule": "sudo iptables -A FORWARD -i ens192 -o ens160 -j ACCEPT"
            },
            "ansible_loop_var": "item",
            "changed": false,
            "failed": false,
            "item": "ens192"
        },
        {
            "ansible_loop_var": "item",
            "changed": false,
            "item": "br-8fd009301146",
            "skip_reason": "Conditional result was False",
            "skipped": true
        }
    ]
}
...