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

Передать интерфейс Ethernet в правило iptables в ansible playbook

Я пишу довольно простой сценарий для настройки нашего брандмауэра iptables в centos. Вот сценарий, который я написал:

---
- hosts: test
  remote_user: deploy
  sudo: True
  tasks:
  - name: Get iptables rules
    shell: /sbin/iptables -L
    register: iptablesrules
    always_run: yes
  - name: Add nginx iptables rule
    command: /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT -m comment --comment "Nginx_HTTP"
    when: iptablesrules.stdout.find("Nginx_HTTP") == -1
  - name: Add nginx ssl iptables rule
    command: /sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT -m comment --comment "Nginx_SSL"
    when: iptablesrules.stdout.find("Nginx_SSL") == -1
  - name: Add postgres rule on ham0 interface
    command: /sbin/iptables -I INPUT -p tcp -s 0/0 --sport 1024:65535 -d 0.0.0.0/0 --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT -m comment --comment "Postgres"
    when: iptablesrules.stdout.find("Postgres") == -1
  - name: save iptables
    command: service iptables save
  - name: ensure iptables is set to start at boot
    action: command /sbin/chkconfig iptables on

Все работает как положено, хотя уверен, что может быть и лучше. Но мой вопрос касается правила Постгреса. Я хочу динамически заменить адрес назначения 0.0.0.0/0 на IP-адрес определенного интерфейса (ham0) в целевом поле. Я предполагаю, что могу сделать что-то вроде ansible_ham0.ipv4.address, чтобы получить IP-адрес. Но я не уверен, как передать это в правило Postgress в качестве переменной.

Я читаю документацию, и мне это не нравится. Я буду продолжать исследования, но тем временем, если у кого-то есть идея, как это сделать, я был бы очень признателен за помощь.

Извините за быстрые вопросы и ответы, но я понял это, немного повозившись.

Вот моя обновленная инструкция. Надеюсь, это поможет кому-то другому!

---
- hosts: test
  remote_user: deploy
  sudo: True
  tasks:
  - name: Get iptables rules
    shell: /sbin/iptables -L
    register: iptablesrules
    always_run: yes
  - name: Add nginx iptables rule
    command: /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT -m comment --comment "Nginx_HTTP"
    when: iptablesrules.stdout.find("Nginx_HTTP") == -1
  - name: Add nginx ssl iptables rule
    command: /sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT -m comment --comment "Nginx_SSL"
    when: iptablesrules.stdout.find("Nginx_SSL") == -1
  - name: Add postgres rule on ham0 interface
    command: /sbin/iptables -I INPUT -p tcp -s 0/0 --sport 1024:65535 -d {{ansible_ham0.ipv4.address }}  --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT -m comment --comment "Postgres"
    when: iptablesrules.stdout.find("Postgres") == -1
  - name: save iptables
    command: service iptables save
  - name: ensure iptables is set to start at boot
    action: command /sbin/chkconfig iptables on