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 来学习使用其他的模块。

 

posted on 2017-10-23 15:05  R_e  阅读(314)  评论(0)    收藏  举报

导航