实验环境:
Centos7
saltstack版本:2019.2
1台master,3台minion。
概要:
本文从零开始安装,并包含Web UI、批量安装minion内容。
从服务器步骤:
1、安装rpm
yum install https://repo.saltstack.com/yum/redhat/salt-repo-2019.2.el7.noarch.rpm #固定版本 2019.2版
master服务器步骤:
1、设置源与环境
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
yum install -y epel-release
yum install https://repo.saltstack.com/yum/redhat/salt-repo-2019.2.el7.noarch.rpm #固定版本 2019.2版
yum clean expire-cache
2、安装master服务
yum install salt-master
3、安装minion服务(可选)
yum install salt-minion
4、安装api服务
yum install salt-api
5、安装ssh(用于批量安装minion)
yum install salt-ssh
6、安装halite(web UI)
yum install python-pip -y && sudo pip install --upgrade pip
pip install -U halite -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install cherrypy -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install paste -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
yum install python-devel gcc -y
pip install gevent -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install pyopenssl -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
PS:用国内源下载稳定一些,减少砸键盘概率
7、修改master服务配置
7.1、添加一个用于用户
useradd xiz
passwd xiz
7.2、修改配置
external_auth:
pam:
xiz: //此用户设置为系统在用的用户
- .*
- '@runner'
halite:
level: 'debug'
server: 'cherrypy'
host: '0.0.0.0'
port: '8080'
cors: False
tls: False
7.3、关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
7.4、参数详解
external_auth : -- 开启扩展认证系统
pam : -- 使用 pam 作为扩展的认证系统
xiz : -- 需要进行认证的系统用户名
- . * -- 认证通过后可以使用任何模块
- '@runner' -- 认证通过后可以使用 runner
halite : -- 表示开启 halite
level : -- 日志等级,默认是 info
server : -- 表示允许 halite 的 webserver ,支持 cherrypy , paste ,gevent ,使用哪个填哪个
host : -- 顾名思义监听地址
port : -- 监听端口
cors : -- 是否开启 cors 跨域请求共享
tls : -- 是否使用 TLS / SSL ( https ) 加密访问
certpath : -- CA 颁发的证书文件
keypath : -- 加密访问的私钥文件
pempath : -- 拥有证书和私钥的文件
7.5、打开访问web ui
http://IP:8080
8、对服务进行启动配置
8.1、重启服务(因为安装好后还没启动)
systemctl restart salt-master && systemctl restart salt-minion && systemctl restart salt-api
8.2、开启自启
systemctl enable salt-master && systemctl enable salt-minion && systemctl enable salt-api
9、使用salt-ssh进行批量安装minion服务
9.1、编写需要被安装的主机IP地址保存到host.txt
cat > host.txt <<EOF
192.168.0.101
192.168.0.102
192.168.0.103
EOF
9.2、利用脚本导入主机ip到/etc/salt/roster文件
#!/bin/bash
USERNAME=root
USERPASSWD=123456
PORT=22
for i in $(cat host.txt)
do
cat >> /etc/salt/roster <<EOF
$i:
host: $i
user: $USERNAME
password: $USERPASSWD
port: $PORT
EOF
done
9.3、测试SSH连接是否成功
salt-ssh \* test.ping
9.4、编写sls
mkdir /srv/salt/minions
mkdir /srv/salt/minions/conf
mkdir /srv/salt/minions/yum.repos.d
cp /etc/yum.repos.d/CentOS-Base.repo /srv/salt/minions/yum.repos.d
cp /etc/yum.repos.d/epel.repo /srv/salt/minions/yum.repos.d
修改/srv/salt/minions/yum.repos.d/epel.repo文件[epel]中的gpgcheck=1为0
cat > /srv/salt/minions/install.sls <<EOF
minion_yum:
file.recurse:
- name: /etc/yum.repos.d
- source: salt://minions/yum.repos.d
- user: root
- group: root
- file_mode: 644
- dir_mode: 755
- include_empty: True
minion_install:
pkg.installed:
- pkgs:
- salt-minion
- require:
- file: minion_yum
- unless: rpm -qa | grep salt-minion
minion_conf:
file.managed:
- name: /etc/salt/minion
- source: salt://minions/conf/minion
- user: root
- group: root
- mode: 640
- template: jinja
- defaults:
minion_id: {{ grains['fqdn_ip4'][0] }}
- require:
- pkg: minion_install
minion_service:
service.running:
- name: salt-minion
- enable: True
- require:
- file: minion_conf
EOF
目录结构
srv
└── salt
└── minions
├── conf
│ └── minion
├── install.sls
└── yum.repos.d
├── CentOS-Base.repo
└── epel.repo
/srv/salt/minions/conf/minion文件配置内容
master: 192.168.0.104
9.5、执行批量安装命令
salt-ssh -i '*' state.sls minions.install
9.6、查看与授权
salt-key -L
salt-key -A -y
