设为首页 收藏本站
查看: 1780|回复: 0

[经验分享] Saltstack API以及对应的Python模板

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-18 11:26:11 | 显示全部楼层 |阅读模式
来源:《Python自动化运维开发》
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
测试:
import salt.client
client = salt.client.LocalClient()
ret = client.cmd('*', 'test.ping')
print ret

(1)Archive模块
1)功能:实现系统层面的压缩包调用,支持gunzip、gzip、rar、
tar、unrar、unzip等。
2)示例:
#采用gzunzip解压/tmp/sourcefile.txt.gz包
salt '*' archive.gunzip /tmp/sourcefile.txt.gz
#采用gzip压缩/tmp/sourcefile.txt文件
salt '*' archive.gzip /tmp/sourcefile.txt
3)API调用:
client.cmd('*', ' archive.gunzip',['/tmp/sourcefile.txt.gz '])



(2)cmd模块
1)功能:实现远程的命令行调用执行(默认具备root操作权限,使用时需评估风险)。
2)示例:
#获取所有被控主机的内存使用情况
salt '*' cmd.run "free -m"
#在SN2013-08-021主机运行test.sh脚本,其中script/test.sh存放在file_roots指定的目录,
#该命令会做两个动作:首先同步test.sh到minion的cache目录(如同步到/var/cache/salt/
#minion/files/base/script/test.sh);其次运行该脚本
'SN2013-08-021' cmd.script salt://script/test.sh

3)API调用:
client.cmd('SN2013-08-021', 'cmd.run',['free -m'])



(3)cp模块
1)功能:实现远程文件、目录的复制,以及下载URL文件等操作。
2)示例:
#将指定被控主机的/etc/hosts文件复制到被控主机本地的salt cache目录
(/var/cache/salt/minion/localfiles/);
salt '*' cp.cache_local_file /etc/hosts
#将主服务器file_roots指定位置下的目录复制到被控主机
salt '*' cp.get_dir salt://path/to/dir/ /minion/dest
#将主服务器file_roots指定位置下的文件复制到被控主机
salt '*' cp.get_file salt://path/to/file /minion/dest
#下载URL内容到被控主机指定位置
salt '*' cp.get_url http://www.slashdot.org /tmp/index.html
3)API调用:
client.cmd('SN2013-08-021', 'cp.get_file',[' salt://path/to/file ','/minion/dest'])



(4)cron模块
1)功能:实现被控主机的crontab操作。
2)示例:
#查看指定被控主机、root用户的crontab清单
salt 'SN2013-08-022' cron.raw_cron root
#为指定的被控主机、root用户添加/usr/local/weekly任务作业
salt 'SN2013-08-022' cron.set_job root '*' '*' '*' '*' 1 /usr/local/weekly
#删除指定的被控主机、root用户crontab的/usr/local/weekly任务作业
salt 'SN2013-08-022' cron.rm_job root /usr/local/weekly

3)API调用:
client.cmd('SN2013-08-021', 'cron.set_job',['root','*','*','*','*','*','/usr/echo'])





(5)dnsutil模块
1)功能:实现被控主机通用DNS相关操作。
2)示例:
#添加指定被控主机hosts的主机配置项
salt '*' dnsutil.hosts_append /etc/hosts 127.0.0.1 ad1.yuk.com,ad2.yuk.com
#删除指定被控主机hosts的主机配置项
salt '*' dnsutil.hosts_remove /etc/hosts ad1.yuk.com
3)API调用:
client.cmd('*', 'dnsutil.hosts_append',['/etc/hosts','127.0.0.1','ad1.yuk.co'])





(6)file模块
1)功能:被控主机文件常见操作,包括文件读写、权限、查找、校验等。
2)示例:
#校验所有被控主机/etc/fstab文件的md5是否为6254e84e2f6ffa54e0c8d9cb230f5505,一致
则返回True
salt '*' file.check_hash /etc/fstab md5=6254e84e2f6ffa54e0c8d9cb230f5505
#校验所有被控主机文件的加密信息、支持md5、sha1、sha224、sha256、sha384、sha512加密算法
salt '*' file.get_sum /etc/passwd md5
#修改所有被控主机/etc/passwd文件的属组、用户权限,等价于chown root:root /etc/passwd
salt '*' file.chown /etc/passwd root root
#复制所有被控主机本地/path/to/src文件到本地的/path/to/dst文件
salt '*' file.copy /path/to/src /path/to/dst
#检查所有被控主机/etc目录是否存在,存在则返回True,检查文件是否存在使用file.file_exists方法
salt '*' file.directory_exists /etc
#获取所有被控主机/etc/passwd的stats信息
salt '*' file.stats /etc/passwd
#获取所有被控主机/etc/passwd的权限mode,如755、644
salt '*' file.get_mode /etc/passwd
#修改所有被控主机/etc/passwd的权限mode为0644
salt '*' file.set_mode /etc/passwd 0644
#在所有被控主机创建/opt/test目录
salt '*' file.mkdir /opt/test
#将所有被控主机/etc/httpd/httpd.conf文件的LogLevel参数的warn值修改成info
salt '*' file.sed /etc/httpd/httpd.conf 'LogLevel warn' 'LogLevel info'
#给所有被控主机的/tmp/test/test.conf文件追加内容"maxclient 100"
salt '*' file.append /tmp/test/test.conf "maxclient 100"
#删除所有被控主机的/tmp/foo文件
salt '*' file.remove /tmp/foo
3)API调用:
client.cmd('*', ' file.remove ',['/tmp/foo'])





(7)iptables模块
1)功能:被控主机iptables支持。
2)示例:
#在所有被控端主机追加(append)、插入(insert)iptables规则,其中INPUT为输入链
salt '*' iptables.append filter INPUT rule='-m state --state RELATED,ESTABLISHED -j ACCEPT'
salt '*' iptables.insert filter INPUT position=3 rule='-m state --stateRELATED,ESTABLISHED -j ACCEPT'
#在所有被控端主机删除指定链编号为3(position=3)或指定存在的规则
salt '*' iptables.delete filter INPUT position=3
salt '*' iptables.delete filter INPUT rule='-m state --state RELATED,ESTABLISHED -j ACCEPT'
#保存所有被控端主机规则到本地硬盘(/etc/sysconfig/iptables)
salt '*' iptables.save /etc/sysconfig/iptables
3)API调用:
client.cmd('SN2013-08-022', 'iptables.append',['filter','INPUT','rule=\'-p tcp --sport 80 -j ACCEPT\''])







(8)netwrok模块
1)功能:返回被控主机网络信息。
2)示例:
#在指定被控主机'SN2013-08-022'获取dig、ping、traceroute目录域名信息
salt 'SN2013-08-022' network.dig www.qq.com
salt 'SN2013-08-022' network.ping www.qq.com
salt 'SN2013-08-022' network.traceroute www.qq.com
#获取指定被控主机'SN2013-08-022'的MAC地址
salt 'SN2013-08-022' network.hwaddr eth0
#检测指定被控主机'SN2013-08-022'是否属于10.0.0.0/16子网范围,属于则返回True
salt 'SN2013-08-022' network.in_subnet 10.0.0.0/16
#获取指定被控主机'SN2013-08-022'的网卡配置信息
salt 'SN2013-08-022' network.interfaces
#获取指定被控主机'SN2013-08-022'的IP地址配置信息
salt 'SN2013-08-022' network.ip_addrs
#获取指定被控主机'SN2013-08-022'的子网信息
salt 'SN2013-08-022' network.subnets
3)API调用:
client.cmd('SN2013-08-022', 'network.ip_addrs')








(9)pkg包管理模块
1)功能:被控主机程序包管理,如yum、apt-get等。
2)示例:
#为所有被控主机安装PHP环境,根据不同系统发行版调用不同安装工具进行部署,如redhat平台的yum,等价于yum -y install php
salt '*' pkg.install php
#卸载所有被控主机的PHP环境
salt '*' pkg.remove php
#升级所有被控主机的软件包
salt '*' pkg.upgrade
3)API调用:
client.cmd('SN2013-08-022', 'pkg.remove',['php'])




(10)Service服务模块
1)功能:被控主机程序包服务管理。
2)示例:
#开启(enable)、禁用(disable)nginx开机自启动服务
salt '*' service.enable nginx
salt '*' service.disable nginx
#针对nginx服务的reload、restart、start、stop、status操作
salt '*' service.reload nginx
salt '*' service.restart nginx
salt '*' service.start nginx
salt '*' service.stop nginx
salt '*' service.status nginx
3)API调用:
client.cmd('SN2013-08-022', 'service.stop',['nginx'])



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-302094-1-1.html 上篇帖子: SaltStck 搭建Web集群运用示例 (一) 下篇帖子: saltstack自动化运维
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表