私はSaltStackで柔軟なiptables管理ソリューションを設定しようとしていますが、思ったよりも難しいと感じています。SaltStackを使用したIPtablesの管理
私の主な要件:IPのリストを保持する柱を持つことができるようにするには、すべてのミニオンのSSHアクセス用にホワイトリストに登録する必要があります。このIPのリストはもちろん変わるでしょう:いくつかのIPが追加され、いくつかのIPが削除されます。私が直面している問題は、削除されたIPにあります。ピラーファイルから削除すると、SaltStackは実際のホワイトリストを大臣から削除しません。
唯一の回避策は、「removed-ips」という名前の新しいキーを作成することでしたが、IPを削除するときはいつでも追加することができました。 2番目のforループはそれを削除します。もちろん、これは本当に厄介な回避策です、それを行うより良い方法はありますか?
/srv/pillar/iptables-default.sls:
iptables-default:
whitelisted-ips:
- '55.55.55.55'
- '66.66.66.66'
- '77.77.77.77'
removed-ips:
- '88.88.88.88'
/srv/salt/iptables-default.sls:
{% for ip in salt['pillar.get']('iptables-default:whitelisted-ips') %}
Whitelist OSF IP {{ip}} for SSH access:
iptables.append:
- table: filter
- family: ipv4
- chain: INPUT
- jump: ACCEPT
- match: state
- connstate: NEW
- source: '{{ ip }}'
- dport: 22
- proto: tcp
- save: True
{% endfor %}
{% for ip in salt['pillar.get']('iptables-default:removed-ips') %}
Remove old IPs that are not needed anymore:
iptables.delete:
- table: filter
- family: ipv4
- chain: INPUT
- jump: ACCEPT
- match: state
- connstate: NEW
- source: {{ ip }}
- dport: 22
- proto: tcp
- save: True
{% endfor %}