dinggela 发表于 2018-1-4 08:33:57

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]
查看完整版本: SaltStack学习(三) 远程执行模块和函数