一.编写远程执行模块
1.在server1上编写远程执行模块(python模块)
[root@server1 ~]# mkdir /srv/salt/_modules
[root@server1 ~]# cd /srv/salt/_modules/
[root@server1 _modules]# ls
[root@server1 _modules]# vim my_disk.py
#!/usr/bin/env python
def df():
return __salt__['cmd.run']('df -h')
2.在server1(master)上推送该模块刷新该模块
4.在server2上查看发现该模块已经添加
5.在server1(master)上进行推送测试
[root@server1 _modules]# salt server2 my_disk.df df为在编写文件时定义的函数名称
二.salt syndic
多个master有一个topmaster进行数据汇集,由client与topmaster进行连接,topmaster进行下发任务,syndic是一个服务与master一起运行,当用户与topmaster进行连接的时候实际连接的是syndic。
原理图如下:
部署如下:
实验环境
主机名(IP) | 服务 |
---|---|
server1(172.25.254.1) | master |
server2(172.25.254.2) | minion |
server3(172.25.254.3) | minion |
server4(172.25.254.4) | topmaster |
1.在server1上安装salt-syndic,并且编辑配置文件添加指向的topmaster
//yum源安装,之前已经配置好的具体可参考saltstack的部署
[root@server1 ~]# yum install -y salt-syndic
//安装包安装,官网下载安装包进行安装
[root@server1 ~]# ls
add.sql anaconda-ks.cfg salt-syndic-2018.3.3-1.el7.noarch.rpm
[root@server1 ~]# rpm -ivh salt-syndic-2018.3.3-1.el7.noarch.rpm
//编辑配置文件添加指向的topmaster,如果配置了相应的mysql在配置文件中将其注释掉方便验证
[root@server1 ~]# vim /etc/salt/master
1058 syndic_master: 172.25.254.4
2.在server4上安装salt-master,并且编辑master的配置文件打开base开启服务
[root@server2 yum.repos.d]# scp salt.repo server4:/etc/yum.repos.d/
[root@server4 ~]# cat /etc/yum.repos.d/salt.repo
[saltstack]
name=saltstack
baseurl=http://172.25.42.250/2018
gpgcheck=0
[root@server4 ~]# yum install -y salt_master
[root@server4 ~]# vim /etc/salt/master
664 file_roots:
665 base:
666 - /srv/salt/
1054 order_masters: true
[root@server4 ~]# systemctl start salt-master
3.在server1上重启master并且开启salt-syndic,查看进程
[root@server1 salt]# systemctl restart salt-master
[root@server1 salt]# systemctl start salt-syndic
[root@server1 salt]# ps ax
4.在server4上添加key
5.在server4上做简单的测试会发现直接通过master获取minion的信息