【发布时间】:2018-05-28 04:42:21
【问题描述】:
我正在尝试使用 SaltStack 配置灵活的 iptables 管理解决方案,但我发现它比我想象的要难。
我的主要要求:能够有一个支柱来保存我的 IP 列表,这些 IP 应该被列入白名单,以便在所有 Minion 上进行 SSH 访问。这个 IP 列表当然会不时改变:一些 IP 被添加,一些 IP 被删除。我面临的问题是已删除的 IP - 当我从支柱文件中删除它们时,SaltStack 不会从 minions 中删除实际的白名单。
我能找到的唯一解决方法是创建一个名为“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 %}
【问题讨论】:
标签: salt-stack