1. 主機規劃 伺服器名稱 操作系統版本 內網IP 外網IP(模擬) Hostname 部署模塊 salt100 CentOS7.5 172.16.1.100 10.0.0.100 salt100 salt-master、salt-minion salt01 CentOS7.5 172.16.1.1 ...
1. 主機規劃
伺服器名稱 |
操作系統版本 |
內網IP |
外網IP(模擬) |
Hostname |
部署模塊 |
salt100 |
CentOS7.5 |
172.16.1.100 |
10.0.0.100 |
salt100 |
salt-master、salt-minion |
salt01 |
CentOS7.5 |
172.16.1.11 |
10.0.0.11 |
salt01 |
salt-minion |
salt02 |
CentOS7.5 |
172.16.1.12 |
10.0.0.12 |
salt02 |
salt-minion |
salt03 |
CentOS7.5 |
172.16.1.13 |
10.0.0.13 |
salt03 |
salt-minion |
Saltstack文檔
1 https://docs.saltstack.com/en/latest/contents.html
1.1. 機器hosts文件修改
salt100、salt01、salt02、salt03的hosts文件都追加如下信息。
這樣主機名相互之間可以解析。
1 [root@salt100 ~]# cat /etc/hosts 2 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 3 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 4 5 172.16.1.11 salt01 6 172.16.1.12 salt02 7 172.16.1.13 salt03 8 172.16.1.14 salt04 9 172.16.1.15 salt05 10 172.16.1.100 salt100
2. 添加用戶賬號
說明:
1、 運維人員使用的登錄賬號;
2、 所有的業務都放在 /app/ 下「yun用戶的家目錄」,避免業務數據亂放;
3、 該用戶也可用於後期salt-ssh使用,因為幾乎所有的生產環境都是禁止root遠程登錄的(因此進行了 sudo 提權)。
1 # 使用一個專門的用戶,避免直接使用root用戶 2 # 添加用戶、指定家目錄並指定用戶密碼 3 useradd -u 1050 -d /app yun && echo '123456' | /usr/bin/passwd --stdin yun 4 # sudo提權 5 echo "yun ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 6 # 讓其它普通用戶可以進入該目錄查看信息 7 chmod 755 /app/
運維三板斧
監控
執行
配置管理
Saltstack四種運行方式
Local
Minion/Master C/S
Syndic 代理方式
Salt SSH
3. SaltStack部署
3.1. 鏡像源安裝
官方鏡像源查詢
1 https://repo.saltstack.com/
安裝鏡像源
在salt100、salt01、salt02、salt03機器上執行
1 yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
3.2. saltstack安裝
根據規劃在salt100安裝salt的master和minion,在其他機器安裝salt的minion。
在salt100上操作
yum install -y salt-master salt-minion
在salt01、salt02、salt03上操作
yum install -y salt-minion
版本查看
1 [root@salt100 ~]# salt --version # master版本查看 2 salt 2018.3.3 (Oxygen) 3 [root@salt100 ~]# salt-minion --version # minion版本查看 4 salt-minion 2018.3.3 (Oxygen)
4. 服務端啟動
在salt100上執行,無需任務配置修改
1 [root@salt100 ~]# systemctl start salt-master.service
5. 客戶端啟動
在salt100、salt01、salt02、salt03上操作
5.1. 修改minion配置文件
配置修改原因:
1、 minion端指向的master是哪個
2、 minion端的ID是什麼
1 [root@salt100 salt]# pwd 2 /etc/salt 3 [root@salt100 salt]# vim minion 4 ……………… 5 # 可以是IP或者hostname 6 # 如果是hostname那麼必須能夠解析【最佳實踐配置為 主機名】 7 master: salt100 8 ……………… 9 # Explicitly declare the id for this minion to use, if left commented the id 10 # will be the hostname as returned by the python call: socket.getfqdn() 11 # Since salt uses detached ids it is possible to run multiple minions on the 12 # same machine but with different ids, this can be useful for salt compute 13 # clusters. 14 # 如果id不配置,那麼預設為hostname 15 # 如果下次要更改該配置,那麼要把 /etc/salt/minion_id 也給刪除掉,並重啟客戶端【會生成一個新的minion_id】 16 #id: 17 ………………
5.2. 啟動minion服務
1 [root@salt100 ~]# systemctl start salt-minion.service
6. 加入開機自啟動
master開機自啟動
systemctl enable salt-master.service
minion開機自啟動
1 systemctl enable salt-minion.service
7. master接受minion
7.1. master和minion啟動後生成的pki信息
salt100上的信息
1 [root@salt100 salt]# pwd 2 /etc/salt 3 [root@salt100 salt]# ll 4 total 128 5 -rw-r----- 1 root root 2926 Oct 8 23:56 cloud 6 drwxr-xr-x 2 root root 6 Oct 9 00:42 cloud.conf.d 7 drwxr-xr-x 2 root root 6 Oct 9 00:42 cloud.deploy.d 8 drwxr-xr-x 2 root root 6 Oct 9 00:42 cloud.maps.d 9 drwxr-xr-x 2 root root 6 Oct 9 00:42 cloud.profiles.d 10 drwxr-xr-x 2 root root 6 Oct 9 00:42 cloud.providers.d 11 -rw-r----- 1 root root 51532 Oct 8 23:56 master 12 drwxr-xr-x 2 root root 6 Oct 9 00:42 master.d 13 -rw-r----- 1 root root 36072 Nov 25 23:01 minion 14 drwxr-xr-x 2 root root 6 Oct 9 00:42 minion.d 15 -rw-r--r-- 1 root root 7 Nov 25 23:05 minion_id 16 drwxr-xr-x 4 root root 34 Nov 25 22:41 pki 17 -rw-r----- 1 root root 28162 Oct 8 23:56 proxy 18 drwxr-xr-x 2 root root 6 Oct 9 00:42 proxy.d 19 -rw-r----- 1 root root 344 Oct 8 23:56 roster 20 [root@salt100 salt]# tree pki/ 21 pki/ 22 ├── master 23 │ ├── master.pem 24 │ ├── master.pub 25 │ ├── minions 26 │ ├── minions_autosign 27 │ ├── minions_denied 28 │ ├── minions_pre # master還未進一步認證【接受或拒絕】,minion的公鑰都先放在這裡 29 │ │ ├── salt01 30 │ │ ├── salt02 31 │ │ ├── salt03 32 │ │ └── salt100 33 │ └── minions_rejected 34 └── minion 35 ├── minion.pem 36 └── minion.pub 37 38 7 directories, 8 files
salt03上的信息
1 [root@salt03 salt]# pwd 2 /etc/salt 3 [root@salt03 salt]# ll 4 total 128 5 -rw-r----- 1 root root 2926 Oct 8 23:56 cloud 6 drwxr-xr-x 2 root root 6 Oct 9 00:42 cloud.conf.d 7 drwxr-xr-x 2 root root 6 Oct 9 00:42 cloud.deploy.d 8 drwxr-xr-x 2 root root 6 Oct 9 00:42 cloud.maps.d 9 drwxr-xr-x 2 root root 6 Oct 9 00:42 cloud.profiles.d 10 drwxr-xr-x 2 root root 6 Oct 9 00:42 cloud.providers.d 11 -rw-r----- 1 root root 51532 Oct 8 23:56 master 12 drwxr-xr-x 2 root root 6 Oct 9 00:42 master.d 13 -rw-r----- 1 root root 36000 Nov 25 23:12 minion 14 drwxr-xr-x 2 root root 6 Oct 9 00:42 minion.d 15 -rw-r--r-- 1 root root 6 Nov 25 23:12 minion_id 16 drwxr-xr-x 4 root root 34 Nov 25 22:41 pki 17 -rw-r----- 1 root root 28162 Oct 8 23:56 proxy 18 drwxr-xr-x 2 root root 6 Oct 9 00:42 proxy.d 19 -rw-r----- 1 root root 344 Oct 8 23:56 roster 20 [root@salt03 salt]# tree pki/ 21 pki/ 22 ├── master 23 └── minion 24 ├── minion.pem 25 └── minion.pub 26 27 2 directories, 2 files
salt100上的salt-key信息
1 [root@salt100 salt]# salt-key 2 Accepted Keys: 3 Denied Keys: 4 Unaccepted Keys: 5 salt01 6 salt02 7 salt03 8 salt100 9 Rejected Keys:
7.2. master接受minion
7.2.1. 單個接受
1 [root@salt100 salt]# salt-key -a salt01 # 單個接受 2 The following keys are going to be accepted: 3 Unaccepted Keys: 4 salt01 5 Proceed? [n/Y] y 6 Key for minion salt01 accepted. 7 [root@salt100 salt]# salt-key 8 Accepted Keys: 9 salt01 10 Denied Keys: 11 Unaccepted Keys: 12 salt02 13 salt03 14 salt100 15 Rejected Keys:
7.2.2. 通配符接受
1 [root@salt100 salt]# salt-key -a salt0* 2 The following keys are going to be accepted: 3 Unaccepted Keys: 4 salt02 5 salt03 6 Proceed? [n/Y] y 7 Key for minion salt02 accepted. 8 Key for minion salt03 accepted. 9 [root@salt100 salt]# salt-key 10 Accepted Keys: 11 salt01 12 salt02 13 salt03 14 Denied Keys: 15 Unaccepted Keys: 16 salt100 17 Rejected Keys:
7.2.3. 接受所有minion
1 [root@salt100 salt]# salt-key -A 2 The following keys are going to be accepted: 3 Unaccepted Keys: 4 salt100 5 Proceed? [n/Y] y 6 Key for minion salt100 accepted. 7 [root@salt100 salt]# salt-key 8 Accepted Keys: 9 salt01 10 salt02 11 salt03 12 salt100 13 Denied Keys: 14 Unaccepted Keys: 15 Rejected Keys:
7.3. master接受minion之後的pki信息
salt100上的信息
1 [root@salt100 salt]# pwd 2 /etc/salt 3 [root@salt100 salt]# tree pki/ 4 pki/ 5 ├── master 6 │ ├── master.pem 7 │ ├── master.pub 8 │ ├── minions # minion的公鑰從minions_pre 移到了此目錄 9 │ │ ├── salt01 10 │ │ ├── salt02 11 │ │ ├── salt03 12 │ │ └── salt100 13 │ ├── minions_autosign 14 │ ├── minions_denied 15 │ ├── minions_pre 16 │ └── minions_rejected 17 └── minion 18 ├── minion_master.pub # 接受了來自master的公鑰 19 ├── minion.pem 20 └── minion.pub 21 22 7 directories, 9 files
salt03上的信息
1 [root@salt03 salt]# tree pki/ 2 pki/ 3 ├── master 4 └── minion 5 ├── minion_master.pub # 接受了來自master的公鑰 6 ├── minion.pem 7 └── minion.pub 8 9 2 directories, 3 files
8. 測試結果
1 [root@salt100 salt]# salt '*' test.ping # 看master可以控制哪些minion 2 salt02: 3 True 4 salt03: 5 True 6 salt01: 7 True 8 salt100: 9 True
完畢!