1. 程式人生 > >salt api調用iptables模塊

salt api調用iptables模塊

state put 唯一性 插入 toc usr jump tps 位置

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‘)
salt.modules.iptables.get_rules(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模塊