SaltStack学习(三) 远程执行模块和函数
远程执行模块的构成salt 中有一些模块,这些模块就其实就是很多 python 函数的组合,是函数的逻辑分组。如果查看test 模块中的 ping 命令,大家就会明白,ping 命令只是使用 python 实现的一个函数。
salt中所有的远程执行命令的格式都是
<module>.<funtion>
例如我们前面使用的 test.ping ,
list_modules函数可以列举对应 minion 主机上的所有模块
list_functions 函数可以列出模块的所有函数
doc 函数可以列出指定函数的文档,来查看函数的详细用法。
salt "m01" sys.list_modules
salt
"m01" sys.list_functions test
salt
"m01" sys.doc test.sleep
1远程命令执行 cmd 模块
# cmd.run 执行一个远程shell命令
salt
'192.168.0.100' cmd.run 'ls -l'
# cmd.script 在远程minion执行一个master上的脚本,命令会从master下载脚本到minion上并执行
# 路径为file_root参数指定的路径为 salt:
// 路径
salt '192.168.0.100' cmd.script salt://scripts/runme.sh
2安装包管理 pkg 模块
#为所有被控主机安装PHP环境,根据不同系统发行版调用不同安装工具进行部署,如redhat平台的yum,等价于yum -y install php
salt
'*' pkg.install php
#卸载所有被控主机的PHP环境
salt
'*' pkg.remove php
#升级所有被控主机的软件包
salt
'*' pkg.upgrade
3服务管理 service模块
#开启(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
4 文件管理 file 模块
#校验所有被控主机/etc/fstab文件的md5值是否为xxxxxxxxxxxxx,一致则返回True值
salt
'*' file.check_hash /etc/fstab md5=xxxxxxxxxxxxxxxxxxxxx
#校验所有被控主机文件的加密信息,支持md5、sha1、sha224、shs256、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
salt 的模块还有很多其他的,这里总结的可能会用到的一部分,大家可以使用sys.list_modules 、sys.list_functions 、 sys.doc 来学习使用其他的模块。
页:
[1]