技术

saltstack安装与部署

August 8, 2019

实验环境:
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

saltstack.png

添加新评论