架構師成長之路5.1-Saltstack安裝及入門

點擊架構師成長之路html

架構師成長之路5.1-Saltstack安裝及入門 

(安裝、配置、啓動)python

配置管理工具:數據庫

  • Pupper:1. 採用ruby編程語言;2. 安裝環境相對較複雜;3.不支持遠程執行,須要FUNC工具配置才能夠
  • Ansible:1.採用python編程語言;2.被紅帽收購;3.輕量級;4.基於模塊工做的,自己沒有批量部署的能力,真正批量部署的是ansible所運行的模塊。
  • Saltstack:採用python編程語言,支持API(目前企業使用率最高)

Saltstack最基本的三大功能:編程

  • Remote execution遠程執行:同時在上百上千臺機器批量執行命令
  • Configuration management配置管理:狀態管理(一種狀態描述,可是這種狀態很難回滾)
  • Event-Driven infrastucture事件驅動基礎設施:監聽對象,狀態變化產生事件捕捉事件自動編排,故障自愈
  • Salt cloud 雲管理:幾乎能夠管理全部的公有云和私有云

Saltstack組件:api

  • Salt Master組件:用於向在Salt Minion設備上運行的Salt管理器發送命令和配置。
  • Salt Minion組件:管理系統。此係統運行Salt minion,它從Salt master接收命令和配置。
  • Execution Modules組件:從命令行對一個或多個受管系統執行的特殊命令。用於:實時監控、狀態和庫存;一次性命令和腳本;部署關鍵更新。
  • Formulas(status)組件:系統配置的聲明性或命令式表示。
  • Grains組件:系統變量。Grain是關於底層託管系統的靜態信息,包括操做系統、內存和許多其餘系統屬性。您還能夠爲任何系統定義自定義Grain。
  • Pillar組件:用戶定義的變量。這些安全變量定義並存儲在Salt Master上,而後使用目標「分配」給一個或多個Salt Minion。Salt Pillar數據存儲端口、文件路徑、配置參數和密碼等值。
  • Top File組件:將公式和Salt Pillar數據與Salt Minion匹配。
  • Runners組件:在Salt Master執行以執行支持任務的模塊。Salt runner報告做業狀態、鏈接狀態、從外部api讀取數據、查詢鏈接的Salt minions等等。

     

  • Returners組件:將Salt minions返回的數據發送到另外一個系統,如數據庫。Salt Returners能夠運行在Salt minions或Salt Master上。
  • Reactor組件:在你的Saltstack環境中發生事件時觸發反應。
  • Salt Cloud / Salt Virt組件:在雲提供商/管理程序上提供系統,並當即對其進行管理。

     

  • Salt SSH組件:安全

    在沒有Salt minion的系統上經過SSH運行Salt命令。

Saltstack四種運行方式:ruby

  • local:一臺本地自運行
  • Minion/Master: 就是C/S模式
  • Syndic 代理組件管理(能夠理解成zabbix proxy模式)
  • Salt SSH: 不用安裝agent,也能經過SSH收集信息

1. Saltstack的安裝

配置兩臺設備,一臺安裝命名爲Saltstack01(172.18.20.226):安裝salt-master和salt-minion;一臺命名爲Saltack02(172.18.20.227)只安裝salt-minion。架構

Saltstack提供本身官方repo倉庫 請點擊 ,裏面存在各個系統版本安裝步驟socket

yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm 

建議安裝一個本地倉庫,我才用的aliyun,以下:編程語言

 yum install -y salt-master salt-minion

2. Saltstack的配置

2.1 啓動Saltstack01的salt-master

systemctl start salt-master  #先啓用salt-master

Saltstack01的目錄

Saltstack02的目錄

2.2 配置Saltstack01和Saltstack02minion配置文件, 並啓動salt-minion

cd /etc/salt
vi minion # minion配置文件(多一個空格都能報錯,配置master的ip地址或域名,前提要有DNS)

默認配置master就能夠,還有一個ID選項:若是不設置Id的話,默認獲取到主機名:socket.getfqdn()。

systemctl start salt-minion

沒有設置id的時候,查看一下minion_id默認就是FQDN名,就是Saltstack02。

minion_id 值的生成過程:

minion 默認按照以下順序,試圖在找到一個不是localhost的值做爲ID: 

1.1 Python函數socket.getfqdn() 獲取的值;
1.2 /etc/hostname 定義的值(僅限於非Windows系統);
1.3 /etc/hosts (%WINDIR%\system32\drivers\etc\hosts on Windows hosts) 中定義的任何映射 127.0.0.0/8 的主機名作ID值 

若是以上都可以產生一個ID, 而且不是localhost,then a sorted list of IP addresses on the minion (excluding any within 127.0.0.0/8) is inspected. The first publicly-routable IP address is used, if there is one.Otherwise, the first privately-routable IP address is used.若是一切都失敗了,那麼則使用localhost做爲備用,最終獲取的ID將記錄在/etc/salt/minion_id文件中,該文件能夠手動更改,重啓服務後不會被從新覆蓋。

注意:若是minion端主配置文件 /etc/salt/minion 中啓用了 id: xxxx , 那麼這個ID值將覆蓋 /etc/salt/minion_id 中記錄的ID數值.

此時Saltstack01的目錄

 

 此時Saltstack02的目錄(啓動minion以後就有了pki目錄,並生成兩個公鑰和私鑰文件)

2.3  Salt minion和Salt master如何通訊???

通訊以前須要認證,採用公鑰和私鑰。

2.2.1 未配置minion的時候:Saltack02的pki--minion下面沒有任何目錄

2.2.2 配置完minion的時候:Saltack02的pki--minion下面會多出兩個文件minion.pem私鑰和minion.pub公鑰。

2.2.3 Saltack02的公鑰會發給Saltack01(Master),Saltack01(Master)收到之後放置在

 總結:

當初始化安裝 minion 啓動服務啓動後:
1.1 minion端生成一個祕鑰對,併產生一個ID值,minion服務會安裝ID值命名的公鑰發送給 master ,直到接受爲止;
1.2 master認證完畢後,會將minion 端發送來的,以ID值命名的公鑰存放在 /etc/salt/pki/master/minions_pre 目錄中(無ID值默認就是FQDN名);
1.3 master認證完畢後,會將自身的公鑰發送給 minion,並存儲爲 /etc/salt/pki/minion/minion_master.pub。  

 擴展:

master 祕鑰對默認存儲在/etc/salt/pki/master/master.pub  /etc/salt/pki/master/master.pem
master 端認證的公鑰存儲在:/etc/salt/pki/master/minions/
minion 祕鑰對默認存儲在/etc/salt/pki/minion/minion.pub  /etc/salt/pki/minion/minion.pem
minion 存放的master公鑰/etc/salt/pki/minion/minion_master.pub
minion_id 默認存儲在/etc/salt/minion_id

  

 

 

 

 

 

 

 

......

相關文章
相關標籤/搜索