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 来学习使用其他的模块。
浙公网安备 33010602011771号