您好,登錄后才能下訂單哦!
Salt是一個基礎平臺管理工具,基于 python 語言開發。SaltStack 采用 C/S模式,server端就是salt的master,client端就是minion,minion與master之間通過ZeroMQ消息隊列通信。master監聽4505和4506端口,4505為master和minion認證通信端口,4506為master用來發送命令或者接收minion的命令執行返回信息。
1、輕量級管理工具,批量執行命令;
2、常用模板:
pkg:包,有增刪更新;
file:用于管理文件,包括同步文件、設置文件權限和所屬用戶組、刪除文件等操作;
cmd:在 minion 上執行命令或者腳本;
user:管理系統賬戶操作;
service:管理系統服務操作;
cron:管理 crontab任務
3、saltstack 數據系統:
Grains(靜態數據);
pillar(動態數據);
4、三大功能:
(1)遠程執行
(2)配置管理
(3)云管理
(1)grains:
grains 是在 minion(客戶端)啟動時收集到的一些信息,比如操作系統類型、網卡ip等靜態信息。
grains 的信息并不是動態的,并不會時時變更,它只是在 minion 啟動時收集到的。
(2)pillar:
pillar 和 grains 不一樣,是在 master 上定義的,并且是針對 minion 定義的一些信息。像一些比較重要的數據(密碼)可以存在 pillar 里,還可以定義變量等。
(3)state:
是 saltstack 的最核心的功能,通過預先指定好的 sls 文件對 被控主機進行管理(包括:包、網絡配置、系統服務、系統用戶 等)
SaltStack 客戶端(Minion)在啟動時,會自動生成一套密鑰,包含私鑰和公鑰。之后將公鑰發送給服務器端,服務器端驗證并接受公鑰,以此來建立可靠且加密的通信連接。同時通過消息隊列 ZeroMQ 在客戶端與服務端之間建立消息發布連接。
1、Minion 是 SaltStack 需要管理的客戶端安裝組件,會主動去連接 Master 端,并從 Master 端得到資源狀態信息,同步資源管理信息。
2、Master 作為控制中心運行在主機服務器上,負責 Salt 命令運行和資源狀態的管理,Master 上執行某條指令通過隊列下發到各個 Minions 去執行,并返回結果。
3、ZeroMQ 是一款開源的消息隊列軟件,用于在 Minion 端與 Master 端建立系統通信橋梁。
1、管理配置講究的是更快更穩
ansible基于SSH協議傳輸數據;Saltstack使用消息隊列zeroMQ傳輸數據,速度更快,是ssh的40倍。
2、ansible安裝部署過程特別簡單,saltstack要部署 minion 端較為不便。
1、修改主機名
修改主機名:
[root@localhost ~]# hostnamectl set-hostname master.saltstack.com
[root@localhost ~]# hostnamectl set-hostname web01.saltstack.com
[root@localhost ~]# hostnamectl set-hostname web02.saltstack.com
修改 /etc/hosts文件(用scp遠程復制,三臺主機都一樣):
vim /etc/hosts
192.168.220.131 master.saltstack.com
192.168.220.140 web01.saltstack.com
192.168.220.136 web02.saltstack.com
關閉防火墻:
systemctl stop firewalld.service
setenforce 0
分別為三臺主機添加epel源:
yum install -y epel-release
2、安裝 saltstack:
1、master上安裝:
yum install -y salt-master
2、被管理端(minion)上安裝:
yum install -y salt-minion
3、配置 master主機:
vim /etc/salt/master
interface: 192.168.220.131 //修改監聽地址(master的地址)
auto_accept: True //修改為true,避免要運行salt-key來確定證書認證
file_roots: //開啟saltstack文件根目錄位置,此目錄需要自己創建
base:
- /srv/salt
nodegroups: //開啟、設置組分類
group1: 'web01.saltstack.com'
group2: 'web02.saltstack.com'
pillar_opts: True //開啟pillar功能,同步文件功能
pillar_roots: //開啟pillar主目錄,這個也需要自己創建
base:
- /srv/pillar
4、開啟服務:
[root@master ~]# systemctl start salt-master.service
[root@master ~]# netstat -napt | egrep '4506|4505'
tcp 0 0 192.168.220.131:4505 0.0.0.0:* LISTEN 68112/python
tcp 0 0 192.168.220.131:4506 0.0.0.0:* LISTEN 68136/python
(5)配置 minino 端:
vim /etc/salt/minino
第一臺:
master: 192.168.220.131 //第16行,指定主控端IP地址
id: web01.saltstack.com //第78行,指定被控制端的主機名
第二臺:
master: 192.168.220.131
id: web02.saltstack.com
systemctl start salt-minion.service //開啟服務
(6)在主控端測試與被控端的通信狀態
[root@master ~]# salt '*' test.ping //查看通信狀態
web01.saltstack.com:
True
[root@master ~]# salt '*' test.ping
web01.saltstack.com:
True
web02.saltstack.com:
True
salt '*' cmd.run 'df -h' //查看所有被管理段的掛載情況
[root@master ~]# salt-key //查看在master上已經被接受過的客戶端
Accepted Keys:
web01.saltstack.com
web02.saltstack.com
Denied Keys:
Unaccepted Keys:
Rejected Keys:
查看被監控主機上grains所有值(每次minino在啟動時都會獲取客戶端信息):
salt 'web01.saltstack.com' grains.items (靜態數據)
salt 'web01.saltstack.com' pillar.items (動態數據)
(7)開始批量安裝Apache服務:
下面演示的是遠程通過 yum 安裝 Apache :
mkdir /srv/salt
vim /srv/salt/top.sls
base:
'*':
- apache
//注意:'*',則表示在所有的客戶端執行 apache 模塊。
vim /srv/salt/apache.sls
apache-service:
pkg.installed:
- names: // 如果只有一個服務,那么就可以寫成 – name: httpd 不用再換一行
- httpd
- httpd-devel
service.running:
- name: httpd
- enable: True
//注意:apache-service 是自定義的 id 名。pkg.installed 為包安裝函數,下面是要安裝的包的名字。service.running 也是一個函數,來保證指定的服務啟動,enable 表示開機啟動。
systemctl restart salt-master //重啟服務
salt '*' state.highstate //執行刷新state配置命令
接下來,去兩臺 minino上驗證一下 httpd是否安裝成功:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。