溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

運(yùn)維自動(dòng)化之Saltstack使用詳解

發(fā)布時(shí)間:2020-08-04 23:59:53 來(lái)源:網(wǎng)絡(luò) 閱讀:805 作者:linuxzkq 欄目:建站服務(wù)器

概要

saltstack是基于Python開(kāi)發(fā)的C/S架構(gòu)的一款批量管理工具,底層采用動(dòng)態(tài)的連接總線(ZeroMQ消息隊(duì)列pub/sub方式通信),使用ssl證書(shū)簽發(fā)的方式進(jìn)行認(rèn)證管理,使其可以用于編配, 遠(yuǎn)程執(zhí)行, 配置管理等等。部署輕松,在幾分鐘內(nèi)可運(yùn)行起來(lái),擴(kuò)展性好,很容易管理上萬(wàn)臺(tái)服務(wù)器,速度夠快,服務(wù)器之間秒級(jí)通訊。號(hào)稱世界上最快的消息隊(duì)列ZeroMQ使得saltstack非??焖俚墓芾泶罅糠?wù)器,采用RSA Key方式確認(rèn)身份,傳輸采用AES加密,安全性也非常有保障。

Saltstack使用Python開(kāi)發(fā),是一個(gè)非常簡(jiǎn)單易用和輕量級(jí)的管理工具。由Master和Minion構(gòu)成,通過(guò)ZeroMQ進(jìn)行通信。

SaltStack基于Python語(yǔ)言實(shí)現(xiàn),結(jié)合輕量級(jí)消息隊(duì)列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構(gòu)建。有如下特性:

(1)、部署簡(jiǎn)單、方便;

(2)、支持大部分UNIX/Linux及Windows環(huán)境;

(3)、主從集中化管理;

(4)、配置簡(jiǎn)單、功能強(qiáng)大、擴(kuò)展性強(qiáng);

(5)、主控端(master)和被控端(minion)基于證書(shū)認(rèn)證,安全可靠;

(6)、支持API及自定義模塊,可通過(guò)Python輕松擴(kuò)展。

Saltstack的master端監(jiān)聽(tīng)4505與4506端口,4505為salt的消息發(fā)布系統(tǒng),4506為salt客戶端與服務(wù)端通信的端口;salt客戶端程序不監(jiān)聽(tīng)端口,客戶端啟動(dòng)后,會(huì)主動(dòng)連接master端注冊(cè),然后一直保持該TCP連接,master通過(guò)這條TCP連接對(duì)客戶端控制,如果連接斷開(kāi),master對(duì)客戶端就無(wú)能為力了。當(dāng)然,客戶端若檢查到斷開(kāi)后會(huì)定期的一直連接master端的。


核心功能

1、使命令發(fā)送到遠(yuǎn)程系統(tǒng)是并行的而不是串行的

2、使用安全加密的協(xié)議

3、使用最小最快的網(wǎng)絡(luò)載荷

4、提供簡(jiǎn)單的編程接口


架構(gòu)
   saltstack是基于C/S服務(wù)模式,在該架構(gòu)中,服務(wù)器端叫做Master,客戶端叫做Minion。傳統(tǒng)的C/S模式我們這樣理解,客戶端發(fā)送請(qǐng)求給服務(wù)器端,服務(wù)器端接受到來(lái)自客戶端的請(qǐng)求并處理完成后再返回客戶端。 在saltstack架構(gòu)中,不僅有傳統(tǒng)的C/S服務(wù)模式,而且有消息隊(duì)列中的發(fā)布與訂閱(pub/sub)服務(wù)模式。目前我們一般用其C/S架構(gòu)做批量管理。

運(yùn)維自動(dòng)化之Saltstack使用詳解

1)  Master:控制中心,salt命令運(yùn)行和資源狀態(tài)管理

2)  Minion : 需要管理的客戶端機(jī)器,會(huì)主動(dòng)去連接Mater端,并從Master端得到資源狀態(tài)

3)  信息,同步資源管理信息

4)  States:配置管理的指令集

5)  Modules:在命令行中和配置文件中使用的指令模塊,可以在命令行中運(yùn)行

6)  Grains:minion端的變量,靜態(tài)的

7)  Pillar:minion端的變量,動(dòng)態(tài)的比較私密的變量,可以通過(guò)配置文件實(shí)現(xiàn)同步minions定義

8)  highstate:為minion端下發(fā)永久添加狀態(tài),從sls配置文件讀取.即同步狀態(tài)配置

9)  salt_schedule:會(huì)自動(dòng)保持客戶端配置


Saltstack安裝

安裝方式有四種,下面通過(guò)一個(gè)案例簡(jiǎn)單介紹在CentOS6.8上進(jìn)行SaltStack部署。

(1) yum方式安裝(采用saltstack源)推薦這種方式,簡(jiǎn)單粗暴。注意沒(méi)有配置saltstack源的,請(qǐng)先配置saltstack源。

Version 7:

rpm --importhttps://repo.saltstack.com/yum/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub

Version 6:

rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub

Save the following file to /etc/yum.repos.d/saltstack.repo:

Version 7 and 6:

[saltstack-repo]
name=SaltStack repo for RHEL/CentOS $releasever
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub

安裝好saltstack源后,用yum 命令來(lái)檢查是否添加到源列表。

yum repolist 
Master端安裝:

yum -y install salt-master

Minon端安裝:

yum -y install salt-minion


配置并啟動(dòng)Saltstack

  Salt 的配置非常簡(jiǎn)單。默認(rèn)的 master 配置就可以在大多數(shù)情況下運(yùn)行。僅僅需要更改的是 minion ,在 minion 配置文件中設(shè)置 master 的地址。

The configuration fileswill be installed to /etc/salt and are named after the respective components,/etc/salt/master, and /etc/salt/minion.

MASTER配置

默認(rèn)Salt master監(jiān)聽(tīng)所有網(wǎng)卡接口(0.0.0.0)的4505和4506端口. 如果需要指定監(jiān)聽(tīng)I(yíng)P, 通過(guò) /etc/salt/master配置文件中的"interface"指令進(jìn)行如下修改:

- #interface: 0.0.0.0
+ interface: 10.0.0.1 #此處是server端監(jiān)聽(tīng)的地址。
auto_accept: True #此處是自動(dòng)接受客戶端發(fā)送過(guò)來(lái)的key,如果服務(wù)器很多的話,需要開(kāi)啟該功能。

MINION配置

盡管Salt Minion有許多配置選項(xiàng),但配置Minion還是非常簡(jiǎn)單的. 默認(rèn)的配置Minion會(huì)嘗試連接DNS名為"salt"的master,如果minion解析到的地址正確,就無(wú)需再做配置.

如果DNS名為"salt"并不能解析到本地正確的Master地址,需要通過(guò)如下方法修改 /etc/salt/minion 配置文件中的"master"指令:

- #master: salt
+ master: 10.0.0.1 #這里改成你的master服務(wù)器地址
id: web01 #建議這里修改成主機(jī)名,便于master端分辨
  #在配置文件末尾加入下面內(nèi)容,每隔5分鐘自動(dòng)同步master配置,效果等同于在客戶端執(zhí)行salt-call state.highstate或在server端執(zhí)行 salt '*'state.highstate
schedule:
  highstate:
    function: state.highstate
    minutes: 5

更新完配置后,需要重啟Salt minion以使配置生效

運(yùn)行Saltstack

1. 前臺(tái)啟動(dòng)master(如果要以daemon方式啟動(dòng),請(qǐng)指定 -d參數(shù)<salt-master -d>):
salt-master
2. 前臺(tái)啟動(dòng)minion(如果要以daemon方式啟動(dòng),請(qǐng)指定 -d參數(shù)<salt-minion -d>):
salt-minion

運(yùn)行有問(wèn)題?

排除 Salt 故障最簡(jiǎn)單的方法是在前臺(tái)運(yùn)行 master minion,同時(shí)把 log level 設(shè)為``debug``

salt-master --log-level=debug

以普通(root)用戶運(yùn)行:

想要使用其他用戶身份運(yùn)行Salt,參見(jiàn):conf_master:`user`參數(shù)在master配置文件中。

Additionally, ownership, and permissions need to be set suchthat the desired user can read from and write to the following directories (andtheir subdirectories, where applicable):

  • /etc/salt

  • /var/cache/salt

  • /var/log/salt

  • /var/run/salt

更多關(guān)于如何使用非特權(quán)用戶運(yùn)行salt的信息可以在 這里 找到。

salt-key證書(shū)管理:

master端證書(shū)存放路徑:/etc/salt/pki/master/minions

   注意:如果細(xì)心的話,你會(huì)發(fā)現(xiàn)小寫(xiě)字母針對(duì)的單一對(duì)象,大寫(xiě)都是針對(duì)全體。比如 -l顯示單一key,-L顯示所有key;-a 接受指定key,而-A 就是接受所有key。

saltstack認(rèn)證原理

1)、minion在第一次啟動(dòng)時(shí),會(huì)在/etc/salt/pki/minion/(該路徑在/etc/salt/minion里面設(shè)置)下自動(dòng)生成minion.pem(private key)和 minion.pub(public key),然后將 minion.pub發(fā)送給master。

2)、master在接收到minion的publickey后,通過(guò)salt-key命令accept minion public key,這樣在master的/etc/salt/pki/master/minions下的將會(huì)存放以minion id命名的 public key,然后master就能對(duì)minion發(fā)送指令了。


salt-key  -L            #查詢所有接收到的證書(shū)

salt-key  -a <證書(shū)名>   #接收單個(gè)證書(shū)

salt-key  -A            #接受所有證書(shū)

salt-key  -d <證書(shū)名>   #刪除單個(gè)證書(shū)

salt-key  -D            #刪除所有證書(shū)

Salt在Master和Minion之間的通訊采用AES加密. 這就確保了發(fā)送給minions的命令不會(huì)被篡改, Master和Minion之間的通訊認(rèn)證通過(guò)信任的已接受的key進(jìn)行管理.

在發(fā)送給Minion之前,需要確保minion的key已經(jīng)被Master所接受. 運(yùn)行 ``salt-key``命令將列出Salt Master已知的所有keys.

[root@master ~]# salt-key -L
Unaccepted Keys:
alpha
bravo
charlie
delta
Accepted Keys:
[root@master ~]# salt-key –A -y
[root@master ~]# salt-key -L
Unaccepted Keys:
Accepted Keys:
alpha
bravo
charlie
delta

發(fā)送test.ping指令

[root@moban ~]# salt '*' test.ping
moban2:
    True
moban1:
    True

限于篇幅太長(zhǎng),請(qǐng)大家移步這里進(jìn)行下載查看,謝謝!

下載地址:http://down.51cto.com/data/2306388

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI