文章目錄
1 Saltstack介紹
官網https://docs.saltstack.com/en/latest/
2.自動化運維工具
常用的自動化運維工具
- puppet
- 常用於傳統行業,操作較爲複雜
- ansible
- 無需客戶端
- 使用ssh進行連接(ssh連接採用3次握手)
- 不能並行執行
- 常用於小型企業
- saltstack
- 需要安裝客戶端
- 可以並行執行
- 通過主備進行控制
- 常用於中大型企業
3.saltstack安裝
3.1 修改主機名
1.設置master主機名爲minion01-linux.example.com
[root@130 ~]# hostnamectl set-hostname minion01-linux.example.com
[root@130 ~]# bash
[root@minion01-linux ~]# hostname
minion01-linux.example.com
2.設置客戶端minion主機名爲minion02-linux.example.com
[root@132 ~]# hostnamectl set-hostname minion02-linux.example.com
[root@132 ~]# bash
[root@minion02-linux ~]# hostname
minion02-linux.example.com
3.2 關閉防火牆及selinux
1.關閉主機minion01
[root@minion01-linux ~]# systemctl stop firewalld
[root@minion01-linux ~]# systemctl disable firewalld
[root@minion01-linux ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
[root@minion01-linux ~]# reboot
2.關閉主機minion02
[root@minion02-linux ~]# systemctl stop firewalld
[root@minion02-linux ~]# systemctl disable firewalld
[root@minion02-linux ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
[root@minion02-linux ~]# reboot
3.3 配置yum源
1.配置主機minion01
[root@minion01-linux ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@minion01-linux ~]# sed -i 's#\$releasever#7#g' /etc/yum.repos.d/CentOS-Base.repo
[root@minion01-linux ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2.配置主機minion02
[root@minion01-linux ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@minion01-linux ~]# sed -i 's#\$releasever#7#g' /etc/yum.repos.d/CentOS-Base.repo
[root@minion01-linux ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3.4 同步所有主機時間
1.設置時區(示例爲亞洲時區)
[root@minion01-linux ~]# timedatectl set-timezone Asia/Shanghai
[root@minion02-linux ~]# timedatectl set-timezone Asia/Shanghai
2.同步時間爲aliyun時間
[root@minion01-linux ~]# yum -y install ntpdate
[root@minion01-linux ~]# ntpdate time1.aliyun.com
[root@minion02-linux ~]# yum -y install ntpdate
[root@minion02-linux ~]# ntpdate time1.aliyun.com
3.檢測是否同步
[root@minion01-linux ~]# date
2020年 02月 11日 星期二 15:55:07 CST
[root@minion02-linux ~]# date
Tue Feb 11 15:55:02 CST 2020
3.5 建立緩存並下載常用工具
1.建立緩存
[root@minion01-linux ~]# yum makecache fast
[root@minion02-linux ~]# yum makecache fast
2.下載常用工具
[root@minion01-linux ~]# yum -y install wget vim
[root@minion02-linux ~]# yum -y install wget vim
3.6 主控端saltstack安裝
1.安裝主控端的salt-master和salt-minion
[root@minion01-linux ~]# yum -y install salt-master salt-minion
2.修改主控端的配置文件
[root@minion01-linux ~]# sed -i '/^#master:/a master: 192.168.80.130' /etc/salt/minion
[root@minion01-linux ~]# sed -n '/^master/p' /etc/salt/minion
master: 192.168.80.130
//此步可不做,不執行此步則會使用本機名進行認證,id一般設置爲本機IP地址,便於管理
[root@minion02-linux salt]# sed -i '/^#id:/a id: 192.168.80.130' /etc/salt/minion
[root@minion02-linux salt]# sed -n '/^id/p' /etc/salt/minion
id: 192.168.80.130
3.啓動主控端的salt-master和salt-minion,並設置開機自啓
[root@minion01-linux salt]# systemctl start salt-master
[root@minion01-linux salt]# systemctl start salt-minion
[root@minion01-linux salt]# systemctl enable salt-master
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-master.service to /usr/lib/systemd/system/salt-master.service.
[root@minion01-linux salt]# systemctl enable salt-minion
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-minion.service to /usr/lib/systemd/system/salt-minion.service.
[root@minion01-linux salt]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 *:4505 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 100 *:4506 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
3.7 在被控機安裝salt-minion客戶端
1.安裝salt-minion客戶端
[root@minion02-linux ~]# yum -y install salt-minion
2.修改被控端的配置文件
[root@minion02-linux salt]# sed -i '/^#master:/a master: 192.168.80.130' /etc/salt/minion
[root@minion02-linux salt]# sed -n '/^master/p' /etc/salt/minion
master: 192.168.80.130
//此步可不做,不執行此步則會使用本機名進行認證,id一般設置爲本機IP地址,便於管理
[root@minion02-linux salt]# sed -i '/^#id:/a id: 192.168.80.132' /etc/salt/minion
[root@minion02-linux salt]# sed -n '/^id/p' /etc/salt/minion
id: 192.168.80.132
3.啓動被控端的salt-minion並設置開機自啓
[root@minion02-linux salt]# systemctl start salt-minion
[root@minion02-linux salt]# systemctl enable salt-minion
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-minion.service to /usr/lib/systemd/system/salt-minion.service.
4.saltstack配置文件
saltstack的配置文件在/etc/salt目錄
saltstack配置文件說明:
配置文件 | 說明 |
---|---|
/etc/salt/master | 主控端(控制端)配置文件 |
/etc/salt/minion | 受控端配置文件 |
配置文件/etc/salt/master默認的配置就可以很好的工作,故無需修改此配置文件。
配置文件/etc/salt/minion常用配置參數
- master:設置主控端的IP
- id:設置受控端本機的唯一標識符,可以是ip也可以是主機名或自取某有意義的單詞
在日常使用過程中,經常需要調整或修改Master配置文件,SaltStack大部分配置都已經指定了默認值,只需根據自己的實際需求進行修改即可。下面的幾個參數是比較重要的
- max_open_files:可根據Master將Minion數量進行適當的調整
- timeout:可根據Master和Minion的網絡狀況適當調整
- auto_accept和autosign_file:在大規模部署Minion時可設置自動簽證
- master_tops和所有以external開頭的參數:這些參數是SaltStack與外部系統進行整合的相關配置參數
5.SaltStack認證機制
saltstack主控端是依靠openssl證書來與受控端主機認證通訊的,受控端啓動後會發送給主控端一個公鑰證書文件,在主控端用salt-key命令來管理證書。
salt-minion與salt-master的認證過程:
- minion在第一次啓動時,會在/etc/salt/pki/minion/下自動生成一對密鑰,然後將公鑰發給master
- master收到minion的公鑰後,通過salt-key命令接受該公鑰。此時master的/etc/salt/pki/master/minions目錄將會存放以minion id命名的公鑰,然後master就能對minion發送控制指令了
salt-key常用選項
-L //列出所有公鑰信息
-a minion //接受指定minion等待認證的key
-A //接受所有minion等待認證的key
-r minion //拒絕指定minion等待認證的key
-R //拒絕所有minion等待認證的key
-f minion //顯示指定key的指紋信息
-F //顯示所有key的指紋信息
-d minion //刪除指定minion的key
-D //刪除所有minion的key
-y //自動回答yes
示例
//查看當前證書情況
[root@minion01-linux salt]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
192.168.80.130
192.168.80.132
Rejected Keys:
//接受指定minion的新證書
[root@minion01-linux salt]# salt-key -ya 192.168.80.130
The following keys are going to be accepted:
Unaccepted Keys:
192.168.80.130
Key for minion 192.168.80.130 accepted.
[root@minion01-linux salt]# salt-key -L
Accepted Keys:
192.168.80.130
Denied Keys:
Unaccepted Keys:
192.168.80.132
Rejected Keys:
//接受所有minion的新證書
[root@minion01-linux salt]# salt-key -yA
The following keys are going to be accepted:
Unaccepted Keys:
192.168.80.132
Key for minion 192.168.80.132 accepted.
[root@minion01-linux salt]# salt-key -L
Accepted Keys:
192.168.80.130
192.168.80.132
Denied Keys:
Unaccepted Keys:
Rejected Keys:
6. SaltStack遠程執行
6.1 測試所有受控端是否存活
[root@minion01-linux salt]# salt '*' test.ping
192.168.80.132:
True
192.168.80.130:
True
6.2 測試指定網段受控端是否存活
[root@minion01-linux salt]# salt '192.168.80*' test.ping
192.168.80.132:
True
192.168.80.130:
True
6.3 測試指定受控端192.168.80.132是否存活
[root@minion01-linux salt]# salt '192.168.80.132' test.ping
192.168.80.132:
True
7. salt命令使用
語法:salt [options] ‘<target>’ <function> [arguments]
常用的options
--version //查看saltstack的版本號
--versions-report //查看saltstack以及依賴包的版本號
-h //查看幫助信息
-c CONFIG_DIR //指定配置文件目錄(默認爲/etc/salt/)
-t TIMEOUT //指定超時時間(默認是5s)
--async //異步執行
-v //verbose模式,詳細顯示執行過程
--username=USERNAME //指定外部認證用戶名
--password=PASSWORD //指定外部認證密碼
--log-file=LOG_FILE //指定日誌記錄文件
常用target參數
-E //正則匹配
-L //列表匹配
-S //CIDR匹配網段
-G //grains匹配
--grain-pcre //grains加正則匹配
-N //組匹配
-R //範圍匹配
-C //綜合匹配(指定多個匹配)
-I //pillar值匹配
示例:
1.正則表達式匹配
[root@minion01-linux salt]# salt -E '132$' test.ping
192.168.80.132:
True
2.列表匹配
[root@minion01-linux salt]# salt -L 192.168.80.130,192.168.80.132 test.ping
192.168.80.130:
True
192.168.80.132:
True
3.CIDR匹配網段
[root@minion01-linux salt]# salt -S '192.168.80.0/24' test.ping
192.168.80.130:
True
192.168.80.132:
True
4.grains匹配
5.組匹配(組匹配需在master中定義nodegroups參數,爲其添加組)
[root@minion01-linux salt]# salt -N linux test.ping
192.168.80.132:
True
6.綜合匹配