标签:SaltStack cp.get_file cp.push cmd.run cmd.script
上一篇分享了《SaltStack安装配置与远程执行测试》,涉及到了test.ping和cmd.run两个模块方法,实际上SaltStack的模块有140多个之多,每个模块又有多种函数(function,也有的称为方法),但我在查阅和测试了多个模块如archive 、file、user、network、pkg、service、status等之后,发现很多模块的功能实际上大多都可以用万能的cmd.run加相应的系统命令来代替。如果SaltStack所管理的服务器系统发行版众多,系统命令有差异(比如yum和apt-get),用cmd.run的话需要分开执行,而用SaltStack相应的系统模块可以屏蔽这种差异性,一次执行就可以搞定多种发行版。如果不是这种情况的话我觉得用cmd.run加相应的系统命令就可以了。最后我觉得比较实用和值得写一写的是cmd与cp模块,本文主要内容是这两个模块及其基本用法。一、SaltStack的模块及其函数
1、使用命令salt 'salt-minion01' sys.list_modules可以列出所有的模块,可以看到多达146个
2、使用命令salt 'salt-minion01' sys.list_functions test可以列出具体模块(如test模块)的所有函数
3、使用命令salt 'salt-minion01' sys.doc test可以列出具体模块(如test模块)全部函数的帮助及示例,若指定模块的具体函数,则可以单独查看该函数(如test.ping)的帮助及示例,类似查看man手册
二、cmd模块及其常用函数测试
1、cmd模块有不少函数,本节主要测试的是cmd.run、cmd.run_bg、cmd.script三个函数的使用
2、cmd.run的命令中若使用了awk,则$符前面需要加转义符
3、cmd.run可以使用参数stdin指定标准输入字符串
4、使用cmd.run_bg可以将命令放到minion后台执行
5、使用cmd.script可以将master上的脚本推送到minion并执行,通过查看/etc/salt/master文件可以知道master默认的文件根目录是/src/salt,需将测试脚本放到该目录
6、cmd.script推送脚本时也可以带参数
三、cp模块及其常用函数测试
1、cp模块可以实现master推送文件或目录给minion,也可以实现从minion拉取文件或目录,cp模块也有不少函数,本节主要测试cp.get_file、cp.get_dir、cp.push、cp.push_dir四个函数的使用
2、使用cp.get_file可以推送master上的文件到minion,文件需要位于master的文件根目录中,即默认的/srv/salt
3、当推送文件给minion时指定的存放路径在minion上不存在时会失败,这时可以加参数makedirs=true自动在minion上创建目录
4、使用cp.get_dir可以推送master上的目录到minion,目录需要位于master的文件根目录中,即默认的/srv/salt
5、从minion拉取文件或目录到master,默认是被禁用的,需要修改master上的/etc/salt/master文件启用,并重启salt-master服务。拉取的文件或目录默认存放在/var/cache/salt/master/minions/minion-id/files下
6、当使用cp.push从多台minion拉取文件时,即时使用了通配符,也只有文件名在多台minion上都相同的文件才会被拉取
7、如果想使用通配符拉取同一类文件,可以使用cp.push_dir加上glob参数
8、使用cp.push_dir如果不指定glob参数,则是拉取整个目录
9、虽然从不同的minion拉取的文件都存放在minion各自的目录下,但使用通配符可以轻松地把文件集中复制到同一个目录中
本文出自江健龙的技术博客 jiangjianlong.blog.51cto.com,转载请注明出处。
标签:SaltStack cp.get_file cp.push cmd.run cmd.script
原文地址:http://blog.51cto.com/jiangjianlong/2084166