솔트 스탁으로 유연한 iptables 관리 솔루션을 구성하려고하는데, 생각보다 어렵습니다.SaltStack을 사용한 IPtables 관리
내 주요 요구 사항 : 필자는 IP 목록을 유지하는 기둥을 가질 수 있어야하며 모든 미니언에서 SSH 액세스를 허용해야합니다. 이 IP 목록은 당장 변경 될 것입니다. 일부 IP는 추가되고 일부 IP는 제거됩니다. 내가 직면하고있는 문제는 제거 된 IP에 있습니다. 필자 파일에서 제거하면, SaltStack은 하인들로부터 실제 화이트리스트를 제거하지 않습니다.
내가 찾을 수있는 유일한 해결책은 "removed-ips"라는 새 키를 만드는 것이었고 IP를 제거 할 때마다 추가했습니다. 두 번째 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 %}