官方網址:http://www.saltstack.com
官方文檔:http://docs.saltstack.com
GitHub:https:github.com/saltstacknode
SaltStack是一個服務器基礎架構集中化管理平臺,具有配置管理、遠程執行、
監控等功能,通常能夠理解爲簡化版的puppet和增強版的func。SaltStack基於
Python語言實現,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊
(Pyzmq、PyCrypto、Pyjinjia二、python-msgpack和PyYAML等)構建。
經過部署SaltStack環境,咱們能夠在成千上萬臺服務器上作到批量執行命令,
根據不一樣業務特性進行配置集中化管理、分發文件、採集服務器數據、操做系統基
礎及軟件包管理等,SaltStack是運維人員提升工做效率、規範業務配置與操做的利
器。python
(1)、部署簡單、方便;
(2)、支持大部分UNIX/Linux及Windows環境;
(3)、主從集中化管理;
(4)、配置簡單、功能強大、擴展性強;
(5)、主控端(master)和被控端(minion)基於證書認證,安全可靠;linux
(6)、支持API及自定義模塊,可經過Python輕鬆擴展。git
saltstack採用C/S(客戶端和server端)架構,salt-master爲server端,salt-minion爲客戶端github
a)Master與Minion認證正則表達式
(1)、minion在第一次啓動時,會在/etc/salt/pki/minion/(該路徑在/etc/salt/minion裏面設置)下自動生成minion.pem(private key)和 minion.pub(public key),而後將 minion.pub發送給master。shell
(2)、master在接收到minion的public key後,經過salt-key命令accept minion public key,這樣在master的/etc/salt/pki/master/minions下的將會存放以minion id命名的 public key,而後master就能對minion發送指令了。windows
b)Master與minion連接centos
(1)、SaltStack master啓動後默認監聽4505和4506兩個端口。4505(publish_port)爲saltstack的消息發佈系統,4506(ret_port)爲saltstack客戶端與服務端通訊的端口。若是使用lsof 查看4505端口,會發現全部的minion在4505端口持續保持在ESTABLISHED狀態。安全
(1)環境說明
192.168.1.12 安裝salt-master salt-minion
192.168.1.100 安裝salt-minion
一、本次操做採用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
二、操做系統基礎優化
參考博客:http://blog.51cto.com/12217917/2060136
# rpm -ivh https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm #兩臺服務器都安裝rpm包
一、salt管理節點安裝
# yum install -y salt-master salt-minion
二、salt全部客戶端安裝(被管理的機器)
# yum install -y salt-minion
一、管理端啓動命令
# 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
二、配置客戶端並啓動客戶端
# 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的私鑰
說明:這一步操做就至關與籤勞動合同,表示客戶端(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來查看
一、測試全部客戶端是否能通信
# salt '*' test.ping #{*爲通配符,表示全部。test爲模塊,ping爲test模塊下的一個方法(測試是否能通信)} linux-node2 True #True爲通,False爲失敗 linux-node1 True
二、遠程執行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
若有問題歡迎指出與交流。