概述
SaltStack 通过模块来实现管理,具备丰富的模块功能,命令形式也比较自由。
今天主要介绍一下saltstack常见的一些模块。
常用执行模块如下:
cron模块archive模块cmd模块cp模块dnsutil模块file模块group模块network模块service模块pkg模块user模块
一、cron模块
1、功能
实现被控主机的crontab操作
2、用法
salt '*TEST*' sys.list_functions cronsalt '*TEST*' sys.doc cron.list_tab
![566961c40764b152a07f7d466b436a6c.png](https://i-blog.csdnimg.cn/blog_migrate/19f8db9b6d1694b90cf9bb2be94112f7.jpeg)
3、实例
3.1、为指定的用户设置cron定时任务
salt '*TEST*' cron.set_job root '*' '*' '*' '*' 1 /root/a.sh
3.2、查看minion端定时任务
salt '*TEST*' cron.list_tab root
![c4fc12843ac0505d8dd21a953ca04a9a.png](https://i-blog.csdnimg.cn/blog_migrate/72d4c022e14a2f2c266bf5d0fcb3b641.jpeg)
二、archive模块
1、功能
实现系统层面的压缩包调用,支持gzip、gunzip、rar、tar、unrar、unzip等
2、用法
salt '*TEST*' sys.list_functions archivesalt '*TEST*' sys.doc archive.cmd_unzip
![731fe2ecd1a3610b18ce52f58e0e0ce1.png](https://i-blog.csdnimg.cn/blog_migrate/c86e4530ef1976729bba2ba1c125624c.jpeg)
3、实例
3.1、zip/unzip解压及压缩
##采用zip压缩源文件1,源文件2到目的文件.zip,注意压缩后会带上路径名salt '*' archive.zip 目的文件.zip 源文件1,源文件2#采用unzip解压源文件.zip到目的路径salt '*' archive.unzip 源文件.zip 目的路径
![ef9fdafad172d656e116b34a79b92998.png](https://i-blog.csdnimg.cn/blog_migrate/df71fac4a28d4c012dbbda5b9d7fcac6.jpeg)
3.2、tar压缩
注:tar不支持模块解压
salt '*' archive.tar zcvf /opt/file.tar.bz /tmp/file_1,/tmp/file_2
3.3、gzip/gunzip解压及压缩
#采用gzip压缩/tmp/sourcefile.txt文件,sourcefile.txt 是在客户端存在的文件# salt '*' archive.gzip /tmp/sourcefile.txt#采用gunzip解压/tmp/sourcefile.txt.gz包# salt '*' archive.gunzip /tmp/sourcefile.txt.gz
三、cmd模块
1、功能
实现远程的命令行调用执行(默认具备root操作权限,使用时慎重)
2、用法
salt '*TEST*' sys.list_functions cmd
![da2807f99595e5e06c6636bd17e62e0e.png](https://i-blog.csdnimg.cn/blog_migrate/461c3912056bd33e958cc85629d904aa.jpeg)
3、实例
3.1、查看内存
salt '*' cmd.run 'free -m'
![64840b1b9d883c3d981d8d2fb6488f3b.png](https://i-blog.csdnimg.cn/blog_migrate/3a07c3fc297e2f928d4979062c1b308d.jpeg)
3.2、执行脚本
salt '*TEST*' cmd.script /home/scripts/t.sh
![652094f7908c2f801cbc34650d4cc54d.png](https://i-blog.csdnimg.cn/blog_migrate/101538ffa594290adc5cf72e89ba818c.jpeg)
3.3、执行shell命令
salt '*TEST*' cmd.shell "sed -i s/who/who2/g /home/scripts/t.sh"salt '*TEST*' cmd.shell "cat /home/scripts/t.sh"
![6774baf9e3fea91f9bd32a445c6c375a.png](https://i-blog.csdnimg.cn/blog_migrate/4db70e3a5522a669456b522258e8d14c.jpeg)
四、cp模块
1、功能
实现远程文件、目录的复制,以及下载URL文件等操作
2、用法
salt '*' sys.list_functions cp
![cd25e71482f22dd2cdb9c08dc8c5f4ea.png](https://i-blog.csdnimg.cn/blog_migrate/7380293adf50e0eebad7d4825d8b2c32.jpeg)
3、实例
3.1、将master端的/etc/hosts文件复制到minion端的salt cache目录(/var/cache/salt/minion/localfiles/)
salt '*TEST*' cp.cache_local_file /etc/hosts
![e2c5906967c251b8dc606474c1828684.png](https://i-blog.csdnimg.cn/blog_migrate/9d363e33d884dab3ed0f51ddab13cf91.jpeg)
3.2、将master端salt主目录下面的目录复制到minion端的/opt目录下
salt '*TEST*' cp.get_dir salt://user/ /opt/
3.3、下载URL内容到被控主机指定位置(/tmp/index.html)
salt '*TEST*' cp.get_url http://www.baidu.com /tmp/index.html
![3dad856cfa9099008100e663fdf0e6ba.png](https://i-blog.csdnimg.cn/blog_migrate/e79e92e35dbc0bff6442c09d11e2e5b6.jpeg)
五、dnsutil模块
1、功能
实现被控主机通用DNS操作
2、用法
salt '*TEST*' sys.list_functions dnsutil
![9d08dd0179a9710b7548d0531d97aeb6.png](https://i-blog.csdnimg.cn/blog_migrate/fa039ebbf265799536ac5d4bc2db4ddb.jpeg)
3、实例
3.1、添加minion端的hosts域名解析信息
salt '*TEST*' dnsutil.hosts_append /etc/hosts 10.1.6.16 www.baidu.com
3.2、删除minion端的hosts域名解析信息
salt '*TEST*' dnsutil.hosts_remove /etc/hosts www.baidu.com
![19e3ef956f69b33e954509d1af4c6363.png](https://i-blog.csdnimg.cn/blog_migrate/3a97773cf8ef2ce2eae00c8764190d4c.jpeg)
六、file模块
1、功能
被控主机常见的文件操作,包括文件读写、权限、查找、校验
2、用法
salt '*' sys.list_functions file
![5dd03be5911c34854a9657cc6776caf4.png](https://i-blog.csdnimg.cn/blog_migrate/f6ec4641e61e532da31c5070b78acebe.jpeg)
3、用法
3.1、修改所有minion端的/etc/passwd文件的属组、用户权限,等价于chown root:root /etc/passwd
salt '*' file.chown /etc/passwd root root
![52d7aa08e3cc425a2bab1de8bc05bad3.png](https://i-blog.csdnimg.cn/blog_migrate/b18f7fdb91b14062d4668ec7684ba46d.jpeg)
3.2、复制文件/文件夹
#将所有minion端的/root/a.sh文件复制到/opt/目录下salt '*' file.copy /root/a.sh /opt/a.sh#将所有minion端的/root/mysql目录复制到/opt目录下salt '*' file.copy /root/mysql /opt/mysql recurse=True
3.3、检查所有被控主机/etc目录是否存在,存在则返回True,检查文件是否存在使用file.file_exists方法
salt '*' file.directory_exists /etc
![2a6646face0b15bd13e5221128792e3c.png](https://i-blog.csdnimg.cn/blog_migrate/10c6648f6a21054b64f0c3b5b7443a63.jpeg)
3.4、获取所有被控主机/etc/passwd的stats信息
salt '*' file.stats /etc/passwd
![bd9172033570029a3f4e7d4be89bec09.png](https://i-blog.csdnimg.cn/blog_migrate/82503c3890ee301fc3039107d3ebc3fc.jpeg)
3.5、获取及修改权限
#获取所有被控主机/etc/passwd的权限mode,如755,644salt '*' file.get_mode /etc/passwd#修改所有被控主机/etc/passwd的权限mode为0644salt '*' file.set_mode /etc/passwd 0644
![acaec28f09cc9fbda1020030b2d863ec.png](https://i-blog.csdnimg.cn/blog_migrate/ffda8173b237995c394303c51ff48bb8.jpeg)
3.6、在所有被控主机创建/opt/test目录
salt '*' file.mkdir /opt/test
![af9be015907801cdb3cda36ba1e24217.png](https://i-blog.csdnimg.cn/blog_migrate/6857032496dcde10c6c1a2f0d9996a50.jpeg)
3.7、将所有被控主机/etc/httpd/httpd.conf文件的LogLevel参数的warn值修改为info
salt '*' file.sed /etc/httpd/httpd.conf 'LogLevel warn' 'LogLevel info'
3.8、给所有被控主机的/tmp/test/test.conf文件追加内容‘maxclient 100’
salt '*' file.append /tmp/test/test.conf 'maxclient 100'
3.9、删除所有被控主机的/tmp/foo文件
salt '*' file.remove /tmp/foo
3.10、在所有的minion端的/opt目录下创建c.txt文件
salt '*' file.touch /opt/c.txt
3.11、将所有minion端/root目录下的a.sh文件移动到/opt目录下
salt '*' file.move /root/a.sh /opt
3.12、将所有minion端的/root目录下的a.sh文件重命名为/opt目录下的b.sh
salt '*' file.rename /root/a.sh /opt/b.sh
3.13、查找所有minion端/opt目录下所有以.tar.tz结尾的且文件大小大于2m的文件
salt '*' file.find /opt type=f name=*.tar.gz size=+2m
![45c15248fe874bebfcdd44da10493d15.png](https://i-blog.csdnimg.cn/blog_migrate/d508c84f8d03c172092c32d8a3a85168.jpeg)
3.14、查找所有minion端的/var目录下30天以内且大于10m的文件
salt '*' file.find /var mtime=-30d size=+10m print=path,size,mtime
![6bf6f4582c4dc49b746cc5fa5bbe18f9.png](https://i-blog.csdnimg.cn/blog_migrate/7d3404c594af1ff74a9b3949928385a2.jpeg)
七、network模块
1、功能
返回被控主机网络信息。
2、用法
salt '*' sys.list_functions network
![1c216f7b21212dd10ada319f9fb1680c.png](https://i-blog.csdnimg.cn/blog_migrate/d815a36c72f56eb62463094f588c6549.jpeg)
3、实例
3.1、查询minion端dig、ping、traceroute目录域名信息
salt '*' network.dig www.sina.comsalt '*' network.ping www.sina.comsalt '*' network.traceroute www.sina.com
3.2、查询minion端网卡ens160的物理地址
salt '*' network.hw_addr ens160
![287b26bea03a0eddf4fd9ceb33d010e1.png](https://i-blog.csdnimg.cn/blog_migrate/6544b523242990b5aec62e97bfc60034.jpeg)
3.3、查询minion端的ip地址
salt '*' network.ip_addrs
3.4、查询minion端主机的子网信息
salt '*' network.subnets
八、pkg模块
1、功能
被控主机程序包管理,如yum、apt-get等
2、用法
salt '*' sys.list_functions pkg
![ed0e22f82ed0c44ba4f39ae65f5a4271.png](https://i-blog.csdnimg.cn/blog_migrate/01547c2e856d53d88c21205f82197c3e.jpeg)
3、用法
3.1、在所有的minion端安装httpd服务
salt '*' pkg.install httpd
3.2、卸载所有minion端的httpd服务
salt '*' pkg.remove httpd
3.3、在所有minion端下载httpd软件包
salt '*' pkg.download httpd
九、service模块
1、功能
被控主机程序包服务管理。
2、用法
salt '*' sys.list_functions service
![6015f11445588dddceee06b822880d08.png](https://i-blog.csdnimg.cn/blog_migrate/ca877b34e671c7ae4190c93590ff6afd.jpeg)
3、实例
3.1、在所有的minion端启动httpd服务
salt '*' service.start httpd
3.2、在所有的minion端关闭httpd服务
salt '*' service.stop httpd
3.3、在所有的httpd端查看httpd服务的状态
salt '*' service.status httpd
3.4、在所有的httpd端重新加载一次服务
salt '*' service.reload httpd
十、group模块
1、功能
被控主机用户组管理。
2、用法
salt '*' sys.list_functions group
![84f9d3a015440c49ddfe032abc300076.png](https://i-blog.csdnimg.cn/blog_migrate/bdd809185e7d6c70998457ee4ebedff9.jpeg)
3、实例
3.1、在所有的minion端创建一个gid为500的test组
salt '*' group.add test 500
3.2、返回test用户组信息
salt '*' group.info test
3.3、在所有的minion端删除test组
salt '*' group.delete test
![2d4086f520f61da0deac2994500c3f36.png](https://i-blog.csdnimg.cn/blog_migrate/18ffa31ea455030656a3df5588b9ec04.jpeg)
3.4、添加一个用户到指定组中。(必须是一个已经存在的组和已存在的用户)
salt '*' group.adduser user1 group1
十一、user模块
1、功能
被控主机用户管理
2、用法
salt '*' sys.list_functions user
![035471124970a2fd5b6019e5e1e0b353.png](https://i-blog.csdnimg.cn/blog_migrate/2943ad7586420c129fd05530c2a504c0.jpeg)
3、实例
3.1、在minion端上创建一个用户test
用法:salt '*' user.add name
salt '*' user.add test 610 605 test /home/test /bin/bash
![803ac4d2151a0521948a1d8eba377779.png](https://i-blog.csdnimg.cn/blog_migrate/47409da0e48ba6146865346ae740ad86.jpeg)
3.2、返回用户信息
salt '*' user.info test
![ad010d5a3b7b105ddccf5a3bb69a004c.png](https://i-blog.csdnimg.cn/blog_migrate/9d2ddf7fc9061b965302e9005e406e07.jpeg)
3.3、在minion端删除一个用户
salt '*' user.delete test
![a1d02c790da22469a4ccb54ab868d8ce.png](https://i-blog.csdnimg.cn/blog_migrate/411dd268eb702723c617373b1bec5e1f.jpeg)
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
![dd590cc5ad0fedb59686d0837e7b30bf.gif](https://i-blog.csdnimg.cn/blog_migrate/c5991de473e8b17beb89075ea56413fb.gif)