salt api調用iptables模塊
基本函數方法:
salt.modules.iptables.append(table=u‘filter‘, chain=None, rule=None, family=u‘ipv4‘)
salt.modules.iptables.insert(table=u‘filter‘, chain=None, position=None, rule=None, family=u‘ipv4‘)
salt.modules.iptables.delete(table, chain=None, position=None, rule=None, family=u‘ipv4‘)
salt.modules.iptables.save(filename=None, family=u‘ipv4‘)
功能說明:
實現對被控主機的iptables基本配置。用於對iptables進行新增,插入,刪除,保存配置,查看等功能。
更多請查看官方文檔:
https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.iptables.html
常用參數說明:
table:iptables表,如,filter表
chain:iptables鏈,如,INPUT鏈
position:iptables規則編號
rule:針對某個表某個鏈的規則配置
family:一般為ipv4和ipv6
1、命令方式配置方法:
追加80端口的規則
salt ‘*‘ iptables.append filter INPUT rule=‘-p tcp --dport 80 -j ACCEPT‘
插入3306端口的規則
salt ‘*‘ iptables.insert filter INPUT position=3 rule=‘-p tcp --dport 3306 -j ACCEPT‘
刪除指定鏈編號為3(position=3)的規則
salt ‘*‘ iptables.delete filter INPUT position=3
刪除指定規則
salt ‘*‘ iptables.delete filter INPUT rule=‘-p tcp --dport 80 -j ACCEPT‘
保存至配置文件iptables
salt ‘*‘ iptables.save /etc/sysconfig/iptables
2、API調用配置方法:
API原理是通過調用master client模塊,實例化一個LocalClient對象,再調用cmd()方法來實現的。
import salt.client
client = salt.client.LocalClient()
ret = client.cmd(‘‘,‘test.ping)
#cmd內格式:‘<操作目標>‘,‘<模塊>‘,‘[參數]‘。例:‘‘,‘cmd.run‘,[‘df -h‘]
print ret
iptables模塊的API調用方法:
#!/usr/bin/env python
import salt.client
client = salt.client.LocalClient()
追加指定規則
ret = client.cmd(‘*‘,‘iptables.append‘,[‘filter‘,‘INPUT‘,‘rule=\‘-p tcp --dport 80 -j ACCEPT\‘‘])
print ret
插入編號為1的位置指定規則
ret = client.cmd(‘*‘,‘iptables.insert‘,[‘filter‘,‘INPUT‘,‘position=1‘,‘rule=\‘-p tcp --dport 80 -j ACCEPT\‘‘])
刪除指定鏈編號為3的規則
ret =client.cmd(‘*‘, ‘iptables.delete‘,[‘filter‘,‘INPUT‘,‘position=3‘])
刪除指定規則
ret = client.cmd(‘*‘,‘iptables.delete‘,[‘filter‘,‘INPUT‘,‘rule=\‘-p tcp --dport 1202 -j ACCEPT\‘‘])
保存到配置文件
ret = client.cmd(‘*‘,‘iptables.save‘,[‘/etc/sysconfig/iptables‘])
結果查看([主機],[表],[鏈],[規則])
print ret[‘lvs_master‘][‘filter‘][‘INPUT‘][‘rules‘]
3、狀態管理配置方法:
常用iptables規則的追加、刪除、插入配置方法:
salt.states.iptables.append(name, table=u‘filter‘, family=u‘ipv4‘, kwargs)
salt.states.iptables.delete(name, table=u‘filter‘, family=u‘ipv4‘, kwargs)
salt.states.iptables.insert(name, table=u‘filter‘, family=u‘ipv4‘, kwargs)
更多請查看官方文檔:
https://docs.saltstack.com/en/latest/ref/states/all/salt.states.iptables.html**
追加規則
cat /srv/salt/iptables/append.sls
httpd: #ID 註意唯一性
iptables.append:
- table: filter
- chain: INPUT
- jump: ACCEPT
- match: state
- connstate: NEW
- dport: 80
- protocol: tcp
- save: True
插入規則
cat /srv/salt/iptables/insert.sls
連續型端口配置
httpd:
iptables.insert:
- position: 1
- table: filter
- chain: INPUT
- jump: ACCEPT
- match: state
- connstate: NEW
- dport: 80
- protocol: tcp
- save: True
## 離散型端口配置
firewall multiport:
iptables.insert:
- position: 1
- table: filter
- family: ipv4
- chain: INPUT
- jump: ACCEPT
- source: 192.168.81.190
- match: multiport
- dports: 9999,9994
- proto: tcp
- save: True
刪除規則
cat /srv/salt/iptables/delete.sls
httpd:
iptables.delete:
- table: filter
- chain: INPUT
- jump: ACCEPT
- match: state
- connstate: NEW
- dport: 80
- protocol: tcp
- save: True
應用配置
cd /srv/salt
salt ‘*‘ state.sls iptables/insert
salt api調用iptables模塊