Я пишу довольно простой сценарий для настройки нашего брандмауэра 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