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'])
|