1. 程式人生 > >自動化運維工具之SaltStack-1、SaltStack介紹及安裝

自動化運維工具之SaltStack-1、SaltStack介紹及安裝

自動生成 模塊 模糊匹配 mini 說明 pac roc redhat 通信

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介紹及安裝