自定义salt模块
mkdir /srv/salt/_modules
cd /srv/salt/_modules
vim my_disk.py
1 #! /usr/bin/env python
2
3 def df():
4 return __salt__['cmd.run']('df -h')
salt '*' saltutil.sync_modules
使用模块:salt ‘*’ my_disk.df
salt-ssh
salt-ssh模块可以使salt-master不通过minion,而是直接通过ssh控制,就是说我们就算关闭了minion上面的salt-minion服务,在master端也可以使用salt去控制它。
1、在server1(master)上面安装salt-ssh
yum install salt-ssh -y
2、在master上编辑salt-ssh的配置文件/etc/salt/roster
在这个文件中定义需要使用salt-ssh控制的minion的信息,如:用户名,密码等
vim /etc/salt/roster
写入:
server2:
host:172.25.66.2
user:root
passwd:redhat
server3:
host:172.25.66.3
user:root
passwd:redhat
3、关闭server2与server3上的salt-minion服务
4、将配置文件中之前设置的数据库支持注释掉
5、在master中使用salt-ssh测试使用可以与server2,server3通讯
salt-ssh ‘server2’ test.ping -i
salt-ssh ‘server2’ cmd.run df
cp模块
cp模块:用来远程复制文件、目录,以及下载URL资源等等。
cp模块是基于base环境的,即salt://表示base环境/srv/salt/,我们可以进行文件服务器多环境配置,在salt-master的配置文件中的file_roots下添加其他文件服务器环境
1、将master中的目录复制到minion的指定位置
salt ‘’ cp.get_dir salt://httpd /root
将master端的/srv/salt/httpd目录复制到所有minion的/root目录下
2、将master中的文件复制到minion的指定位置
salt '’ cp.get_file salt://etc/passwd /root/passwd
cp.get_file gzip格式:对于大文件传输,cp.get_file支持gzip压缩格式。因为gzip是CPU密集型的工具,因此cp.get_file开启gzip是适用于高压缩率的情况下,如JSON或者YAML文件。
salt ‘*’ cp.get_file slat://etc/httpd/conf/httpd.conf /root/httpd.conf gzip=5
gzip后的数字表示压缩比,范围在1-9之间,1表示最小压缩比,9为最大压缩比。换句话说,gzip=1情况下, 消耗的CPU小;gzip=9时,消耗的CPU则更多。
cp.get_file makedirs=True:cp.get_file过程中,如果目录不存在,cp.get_file是不会主动创建目录的,如果要做到这点,可以使用makedirs=True 参数。
syndic模块
syndic可以为master提供一个代理,该代理不用获得master所控制minion的密钥就可以直接对master的minion进行控制,这个代理被称为Topmaster,我们使用server4来充当这个代理
1、在master中删除server4这个minion
2、在master中下载salt-syndic
3、编辑master配置文件,定位到syndic处
vim /etc/salt/master
862 syndic_master: 172.25.66.4
4、关闭server4上的salt-minion服务,并禁其开机自启
5、在server4上安装salt-master服务
6、编辑server4上的master配置文件,定位到syndic
vim /etc/salt/master
857 order_masters: True
7、重启server1上的salt-master,开启server1上的salt-syndic服务,然后到server4中接收server1的密钥
9、在server4中使用salt控制server1的所有minion