salt api调用iptables模块

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

原文地址:http://blog.51cto.com/bjdongpengfei/2161069

时间: 2024-11-11 02:05:56

salt api调用iptables模块的相关文章

saltstack一些常用模块和api调用方法

研究可执行模块的时候,发现很多自带的模块已经很完善,可以帮助我们完成日常工作了,这里写入自己的记录操作: 1.使用salt.clien调用接口操作举例: >>> import salt.client>>> client = salt.client.LocalClient()>>> ret = client.cmd('*','test.ping')>>> ret{'monitor': True} 我们看到调用了LocalClient()

saltstack-4 常用模块api调用

1.导入包 import salt.client 2.建立连接和测试网络 client = salt.client.LocalClient() ret = client.cmd('*','test.ping') 3.archive模块 #打包文件 client.cmd('*','archive.gzip',['/tmp/test.txt']) print(client.cmd("*",'cmd.run',['ls -ltr /tmp/test.txt*'])) #解压文件 client

Facebook Oauth2.0 API调用方法

这些天搞了下Facebook API的东东,在官方网站下弄了一些接口,下面简单的把facebook的调用流程以及常用接口书序一下 :-)  当然在使用facebook api之前要有facebook账号以及在facebook上注册一个自己的应用  1.登录鉴权 https://graph.facebook.com/oauth/authorize?client_id=8888888888888&redirect_uri=http://www.mywebsite.com&scope=user_

(转)Sphinx中文分词安装配置及API调用

这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂时不要选择原版Sphinx(对中文的支持不是很好).又因为服务器所用 MySQL在当时编译时并没有编译Sphinx扩展,而重新编译MySQL并加入Sphinx暂时又无法实现(项目用到了多台服务器,在不影响现有业务的 情况下不可能去重新编译MySQL的),所以采用的是程序通过API来外部调用Sphin

VC++中用API调用对话框资源

关键技术: 对于资源的载入须要几个API函数,以下分别介绍这几个API函数. a) FindResource 用来在一个指定的模块中定位所指的资源,语法例如以下: HRSRC FindResource(HMODULE hModule, LPCRSTR lpName, LPCTSTR lpType); 參数说明: (1)hModule: 包括所须要的资料的模块句柄.假设是程序本身,则能够设置为NULL; (2)lpName: 能够使资源名称或者资源ID. (3)lpType:资源类型.在这里也就是

Sphinx中文分词安装配置及API调用

这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂时不要选择原版Sphinx(对中文的支持不是很好).又因为服务器所用 MySQL在当时编译时并没有编译Sphinx扩展,而重新编译MySQL并加入Sphinx暂时又无法实现(项目用到了多台服务器,在不影响现有业务的 情况下不可能去重新编译MySQL的),所以采用的是程序通过API来外部调用Sphin

Sphinx安装配置及API调用实战手册

这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂时不要选择原版Sphinx(对中文的支持不是很好).又因为服务器所用MySQL在当时编译时并没有编译Sphinx扩展,而重新编译MySQL并加入Sphinx暂时又无法实现(项目用到了多台服务器,在不影响现有业务的情况下不可能去重新编译MySQL的),所以采用的是程序通过API来外部调用Sphinx.

Salt API

使用Salt-API可以更加方便的对salt进行管理.配置salt-api主要有这样几个步骤: 1.证书 2.配置文件 3.验证.使用PAM验证 4.启动salt-api 验证配置 添加用户: # useradd  -M -s /sbin/nologin  saltapi 设置密码: # passwd saltapi 设置密钥: [[email protected] /etc/pki/tls/certs]# make testcert 在另一个目录中设置不需要密码验证的key: [[email 

【转】大型Vuex项目 ,使用module后, 如何调用其他模块的 属性值和方法

Vuex 允许我们把 store 分 module(模块).每一个模块包含各自的状态.mutation.action 和 getter. 那么问题来了, 模块化+命名空间之后, 数据都是相对独立的, 如果想在模块 A 调用 模块 B 的state, actions, mutations, getters, 该肿么办? 假设有这么两个模块: 模块A: import api from '~api' const state = { vip: {}, } const actions = { async