自動化運維工具之SaltStack簡介與安裝

一、SaltStack簡介

官方網址:http://www.saltstack.com
官方文檔:http://docs.saltstack.com
GitHubhttps:github.com/saltstacknode

SaltStack是一個服務器基礎架構集中化管理平臺,具有配置管理、遠程執行、
監控等功能,通常能夠理解爲簡化版的puppet和增強版的func。SaltStack基於
Python語言實現,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊
(Pyzmq、PyCrypto、Pyjinjia二、python-msgpack和PyYAML等)構建。
經過部署SaltStack環境,咱們能夠在成千上萬臺服務器上作到批量執行命令,
根據不一樣業務特性進行配置集中化管理、分發文件、採集服務器數據、操做系統基
礎及軟件包管理等,SaltStack是運維人員提升工做效率、規範業務配置與操做的利
器。python

二、SaltStack特性

(1)、部署簡單、方便;
(2)、支持大部分UNIX/LinuxWindows環境;
(3)、主從集中化管理;
(4)、配置簡單、功能強大、擴展性強;
(5)、主控端(master)和被控端(minion)基於證書認證,安全可靠;linux

(6)、支持API及自定義模塊,可經過Python輕鬆擴展。git

三、SaltStack的結構

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狀態。安全

四、SaltStack基礎安裝與操做

(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

五、yum安裝SaltStack

# 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

 

六、啓動Salt

一、管理端啓動命令

# 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的私鑰

 

七、在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來查看

 

八、master端確認是否能鏈接到客戶端(salt-minion端)

一、測試全部客戶端是否能通信

# 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

 

若有問題歡迎指出與交流。

相關文章
相關標籤/搜索