
本文章参考借鉴了以下博主:
https://www.cnblogs.com/xintiao-/p/10380656.html#autoid-0-0-0
https://blog.51cto.com/siliotto/1598102?xiangguantuijian&04
安装系统:Centos 7.2
连接网络配置yum源,如果需要离线安装,可以使用yumdownload命令
1.配置Yum源
# cd /etc/yum.repos.d/
# mkdir bak
# mv CentOS-* bak
# vi /etc/yum.repos.d/3000.9.repo
name=Salt repo for RHEL/CentOS 7 PY2
baseurl=https://repo.saltproject.io/yum/redhat/7/x86_64/archive/3000.9
skip_if_unavailable=True
failovermethod=priority
enabled=1
enabled_metadata=1
gpgcheck=1
gpgkey=https://repo.saltproject.io/yum/redhat/7/x86_64/archive/3000.9/SALTSTACK-GPG-KEY.pub, https://repo.saltproject.io/yum/redhat/7/x86_64/archive/3000.9/base/RPM-GPG-KEY-CentOS-7# vi /etc/yum.repos.d/salt-latest.repo
[salt-latest]
name=SaltStack Latest Release Channel for RHEL/Centos $releasever
baseurl=https://repo.saltstack.com/yum/redhat/7/$basearch/latest
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/saltstack-signing-key# vi /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-71.1下载离线包的方法
# yum install yumdownloader*
使用yumdownloader命令,下载rpm离线包,注意该RPM包只设配当前系统,如有其他系统需要,需要自行安装虚拟机下载
[需要下载的包名] [存放的路径名]
# yumdownloader salt-master --resolve --destdir=/root/salt-maste
# yumdownloader salt-minion --resolve --destdir=/root/salt-minion
# yumdownloader salt-api--resolve --destdir=/root/salt-api
# yumdownloader salt-ssh--resolve --destdir=/root/salt-ssh
# yumdownloader salt-syndic--resolve --destdir=/root/salt-syndic
下载完成后,复制到离线设备使用安装命令
rpm -ivh *.rpm --nodeps --force2. master 安装
在主控节点上安装 :salt-master,salt-ssh,salt-api。受控节点上安装:salt-minion。
# 在线安装
yum install salt-master
# 修改salt-master配置,yum安装里面有很多配置,默认开启,也可以找到去除注释
vi /etc/salt/master
interface: 0.0.0.0
publish_port: 4505
worker_threads: 5
ret_port: 4506salt-master 服务的机器上需要开启防火墙端口:
firewall-cmd --permanent --zone=public --add-port=4505-4506/tcp
firewall-cmd --reloadmaster 启动 salt-master 服务:
systemctl start salt-master //启动
systemctl enable salt-master //开机自启
systemctl status salt-master //状态3.安装saltstack api设置
# yum安装salt-api
yum install salt-api
# 设置api接口
cd /etc/pki/tls/certs/
make testcert
---------------------------------------------------------
Enter pass phrase: ===> 输入加密短语,这里我使用salt2017
Verifying - Enter pass phrase: ===> 确认加密短语
Enter pass phrase for /etc/pki/tls/private/localhost.key: ===> 再次输入相同的加密短语
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BeiJing
Locality Name (eg, city) [Default City]:BeiJing
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:
解密key文件,生成无密码的key文件, 过程中需要输入key密码,该密码为之前生成证书时设置的密码
--------------------------------------------------------------------------------------
cd /etc/pki/tls/private/
openssl rsa -in localhost.key -out localhost_nopass.key
# 修改文件权限
chmod 755 /etc/pki/tls/certs/localhost.crt
chmod 755 /etc/pki/tls/private/localhost.key
chmod 755 /etc/pki/tls/private/localhost_nopass.key
# 添加用户
useradd -M -s /sbin/nologin saltapi
passwd saltapi
4.安装saltstack web ui
继续安装web界面,不急启动api
在github中下载界面源码
https://github.com/saltstack/halite/releases 建议选择下载v0.1.16 ,因为我下载17有问题,命令执行不了

安装解压web源码包
mkdir /var/www
cd /var/www
# 将文件halite-0.1.16.tar.gz 上传的/var/www
tar -zxvf halite-0.1.16.tar.gz
mv halite-0.1.16 halite
cd /halite/halite
./genindex.py -C #生成index文件在master端添加配置文件
# vi /etc/salt/master.d/saltweb.confrest_cherrypy:
host: 0.0.0.0
port: 8081 #不能用8080,不然会占用web端口
debug: true
static: /ui/halite/halite
app: /ui/halite/halite/index.html
ssl_crt: /etc/pki/tls/certs/localhost.crt
ssl_key: /etc/pki/tls/private/localhost_nopass.key
external_auth:
pam:
admin:
- .* # 用 点 号 ,用单引号会有问题
- '@runner'
- '@wheel'解释配置文件,内容来源https://blog.51cto.com/siliotto/1598102?xiangguantuijian&04
halite: -- 表示开启halite
level: -- 日志等级,默认是info
server: -- 表示允许halite的webserver,支持cherrypy,paste,gevent,使用哪个填哪个
host: -- 顾名思义监听地址
port: -- 监听端口
cors: -- 是否开启cors跨域请求共享
tls: -- 是否使用TLS/SSL(https)加密访问
certpath: -- CA颁发的证书文件
keypath: -- 加密访问的私钥文件
pempath: -- 拥有证书和私钥的文件admin创建用户
# useradd admin
# passwd admin
重启服务
# systemctl restart salt-master
# systemctl restart salt-api启动WEB也就是Salt-UI
# cd /var/www/halite/halite
# python server_bottle.py -d -C -l debug -s cherrypy &
# 重启master和api
systemctl restart salt-master
systemctl restart salt-api
后台的守护进程
start-stop-daemon --start --background --exec /var/www/halite/halite/server_bottle.py -- -d -C -l debug -s cherrypy登录http://ip:8080/app

安装Minion
登录另外一台服务器,安装Minon
# vi /etc/salt/minion
master: 192.168.6.101
id: 6.101-firewalld.com
#id;每个minion的id都是唯一的。minion启动后会用id值去master进行验证。启动 salt-minion 服务:
# systemctl start salt-minion
# systemctl enable salt-minion
# systemctl status salt-minion5.Master和Minion建立信任关系
master和minion安装配置完成后,如果master要管理minion,就要接收minion的key。任意minion的在master没有接受前,minion的公钥存放在/etc/salt/pki/master/minions_pre目录下,公钥文件以id命名。在Master上查看minion列表:
# salt-key -L //列出全部 minion表示minion还未被接受
# salt-key -A //添加信任
#salt-key -A 6.101-firewalld.com //接收单个minion
# salt-key -L //重新列出

Master命令组成
#[命令] [options] [所有主机] [模块] [命令]
#salt --summary '*' cmd.run 'python -V'
管理测试
#salt '*' cmd.run 'python -V'

测试主机是否存活
[root@master ~]# salt--summary '*' test.ping
更多测试参考:https://www.cnblogs.com/xintiao-/p/10380656.html#autoid-0-0-0
web登录测试
[root@localhost halite]# salt -a pam \* test.ping
username: admin
password:

登录http://IP:8080/app/console测试命令执行是否成功
测试执行test.echo模块
