自動化運維工具之SaltStack-1、SaltStack介紹及安裝
官方網址:http://www.saltstack.com
官方文檔:http://docs.saltstack.com
GitHub:https:github.com/saltstack
SaltStack是一個服務器基礎架構集中化管理平臺,具備配置管理、遠程執行、
監控等功能,一般可以理解為簡化版的puppet和加強版的func。SaltStack基於
Python語言實現,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊
(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構建。
通過部署SaltStack環境,我們可以在成千上萬臺服務器上做到批量執行命令,
礎及軟件包管理等,SaltStack是運維人員提高工作效率、規範業務配置與操作的利
器。
2、SaltStack特性
(1)、部署簡單、方便;
(2)、支持大部分UNIX/Linux及Windows環境;
(3)、主從集中化管理;
(4)、配置簡單、功能強大、擴展性強;
(5)、主控端(master)和被控端(minion)基於證書認證,安全可靠;
(6)、支持API及自定義模塊,可通過Python輕松擴展。
3、SaltStack的結構
saltstack采用C/S(客戶端和server端)架構,salt-master為server端,salt-minion為客戶端
a)Master與Minion認證
(1)、minion在第一次啟動時,會在/etc/salt/pki/minion/(該路徑在/etc/salt/minion裏面設置)下自動生成minion.pem(private key)和 minion.pub(public key),然後將 minion.pub發送給master。
(2)、master在接收到minion的public key後,通過salt-key命令accept minion public key,這樣在master的/etc/salt/pki/master/minions下的將會存放以minion id命名的 public key,然後master就能對minion發送指令了。
b)Master與minion鏈接
(1)、SaltStack master啟動後默認監聽4505和4506兩個端口。4505(publish_port)為saltstack的消息發布系統,4506(ret_port)為saltstack客戶端與服務端通信的端口。如果使用lsof 查看4505端口,會發現所有的minion在4505端口持續保持在ESTABLISHED狀態。
4、SaltStack基礎安裝與操作
(1)環境說明
192.168.1.12 安裝salt-master salt-minion
192.168.1.100 安裝salt-minion
1、本次操作采用CentOS 7.2系統
# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
# uname -r
3.10.0-327.el7.x86_64
# hostname -I
192.168.1.12
# hostname -I
192.168.1.100
2、操作系統基礎優化
參考博客:http://blog.51cto.com/12217917/2060136
5、yum安裝SaltStack
# rpm -ivh https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm #兩臺服務器都安裝rpm包
1、salt管理節點安裝
# yum install -y salt-master salt-minion
2、salt所有客戶端安裝(被管理的機器)
# yum install -y salt-minion
6、啟動Salt
1、管理端啟動命令
# systemctl start salt-master #master端啟動命令
# tree /etc/salt/pki #啟動後查看目錄結構
pki
└── master
├── master.pem #salt-master的公鑰
├── master.pub #salt-master的私鑰
├── minions
├── minions_autosign
├── minions_denied
├── minions_pre
└── minions_rejected
2、配置客戶端並啟動客戶端
# sed -n ‘16p‘ /etc/salt/minion #修改所有客戶端的配置文件
master: 192.168.56.11 #告訴客戶端 salt-master是誰,:冒號後面需要有空格
註:minion配置文件的關於ID配置,{如果配置ID則使用配置裏的ID作為主機通訊標記,如果不配置ID則默認以主機名作為ID為主機通訊標記(本人生產上的主機名都做修改所以這裏沒有配置ID),ID如果修改,需要刪除之前認證的KEY,然後重新添加KEY。}
# systemctl start salt-minion #啟動客戶端
註:修改客戶端通訊ID的步驟{1.停止需要修改ID的salt-minion 2.salt-key 刪除老的id 3.刪除minion端的/etc/salt/minion_id 4.刪除minion端/etc/salt/pki 5.修改minion配置文件的id 6.啟動minion 7.master端重新salt-key加入}
# tree #啟動後查看客戶端的結構
.
├── minion
├── minion.d
├── minion_id
└── pki
└── minion
├── minion.pem #minion的公鑰
└── minion.pub #minion的私鑰
7、在master端添加客戶端
說明:這一步操作就相當與簽勞動合同,表示客戶端(salt-minion)接受server端(salt-master)管理。
# salt-key #查看客戶端的命令
Accepted Keys: #已經同意的key有哪些
Denied Keys: #拒絕的key有哪些
Unaccepted Keys: #未同意的key有哪些
linux-node1 #客戶端的通訊ID(由於前面沒有配置,這裏以主機名的形式出現)
linux-node2 #客戶端的通訊ID(由於前面沒有配置,這裏以主機名的形式出現)
# salt-key -A #-A表示同意所有的客戶端通訊ID
The following keys are going to be accepted:
Unaccepted Keys:
db02-36
saltstack-41
Proceed? [n/Y] y #確認信息,是否同意這兩個key
Key for minion linux-node1
Key for minion linux-node2
關於salt-key的參數
-d 刪除單個key,也支持*號模糊匹配刪除 (針對key的操作)
-D 刪除所有key,慎用 (針對key的操作)
-L 列表 (遠程執行、列表key等)
-A 同意所有key (針對key的操作)
-a 同意單個,可以用*號迷糊匹配添加 (針對key的操作)
-G 匹配Grains (遠程執行)
-I 匹配Pillar (遠程執行)
-E 支持正則表達式 (遠程執行)
-S 指定客戶端的ip地址 (遠程執行)
-C 一條遠程執行的命令同時支持多個參數 (遠程執行)
-N 支持節點組 (遠程執行)
更多操作請通過salt-key --help來查看
8、master端確認是否能連接到客戶端(salt-minion端)
1、測試所有客戶端是否能通訊
# salt ‘*‘ test.ping #{*為通配符,表示所有。test為模塊,ping為test模塊下的一個方法(測試是否能通訊)}
linux-node2
True #True為通,False為失敗
linux-node1
True
2、遠程執行shell命令
# salt ‘ linux-node2 ‘ cmd.run "w" #單獨指定某個客戶端的通訊ID表示在這臺客戶端執行(cmd.cun表示執行shell命令,支持linux下所有的shell命令)
linux-node2:
20:26:56 up 2:10, 1 user, load average: 0.00, 0.01, 0.05
本次就介紹到這裏,如有問題歡迎指出與交流。
自動化運維工具之SaltStack-1、SaltStack介紹及安裝