天天看點

架構師成長之路-Saltstack配置管理(State狀态子產品)

架構師成長之路-Saltstack配置管理(State狀态子產品)

配置管理工具:

  • Pupper:1. 采用ruby程式設計語言;2. 安裝環境相對較複雜;3.不支援遠端執行,需要FUNC工具配置才可以
  • Ansible:1.采用python程式設計語言;2.被紅帽收購;3.輕量級;4.基于子產品工作的,本身沒有批量部署的能力,真正批量部署的是ansible所運作的子產品。
  • Saltstack:采用python程式設計語言,同時提供Rest API友善二次開發以及和其它平台進行內建(目前企業使用率最高)

Saltstack最基本的三大功能:

  • Remote execution遠端執行:同時在上百上千台機器批量執行指令
  • Configuration management配置管理:狀态管理(一種狀态描述,但是這種狀态很難復原)
  • Event-Driven infrastucture事件驅動基礎設施:監聽對象,狀态變化産生事件捕捉事件自動編排,故障自愈
  • Salt cloud雲管理:幾乎可以管理所有的公有雲和私有雲

Saltstack四種運作方式:

  • local:一台本地自運作
  • Minion/Master: 就是C/S模式
  • Syndic 代理元件管理(可以了解成zabbix proxy模式)
  • Salt SSH: 不用安裝agent,也能通過SSH收集資訊

1. Saltstack的配置管理---State狀态子產品

Salt通過State子產品來進行檔案的管理;通過YAML文法來描述,字尾是.sls的檔案 。

1.1 了解YAML  ​​詳見​​

remove vim:
  pkg.removed:
    - name: vim      

注意:

  • 帶有ID和每個函數調用的行都以冒号(:)結束。
  • 每個函數調用在ID下面縮進兩個空格。
  • 參數作為清單傳遞給每個函數。
  • 每行包含函數參數的行都以兩個空格縮進開頭,然後是連字元,然後是一個額外的空格。
  • 如果參數采用單個值,則名稱和值位于由冒号和空格分隔的同一行中。
  • 如果一個參數需要一個清單,則清單從下一行開始,并縮進兩個空格

1.2 配置salt,定義環境  告訴salt去哪裡找配置狀态檔案

  • 首先定義環境目錄,file_roots;
  • 其次建立上面定義的目錄;
  • 最後重新開機服務
vi /etc/salt/master      
架構師成長之路-Saltstack配置管理(State狀态子產品)

以上為預設file_roots資訊,建立如下内容(其中base目錄是必須的):

架構師成長之路-Saltstack配置管理(State狀态子產品)
mkdir -p /srv/salt/{base,dev,test,prod}   #建立目錄      
架構師成長之路-Saltstack配置管理(State狀态子產品)
systemctl restart salt-master  #重新開機服務      
架構師成長之路-Saltstack配置管理(State狀态子產品)

務必做測試。

架構師成長之路-Saltstack配置管理(State狀态子產品)

為什麼測試存在問題,檢視存在一個報錯:"could not find expected ':' "  ,原因為:  重新檢視yml配置檔案!

架構師成長之路-Saltstack配置管理(State狀态子產品)

 1.3 編寫sls檔案(salt state的縮寫),配置在對應的目錄

 1.3.1 在base環境下編寫一個安裝apache的sls檔案

      題外話,運維需要統一标準,建議此處命名開頭采用小寫字母。(主機名建議采用-,而不是_,為的就是後期主機名做DNS解析就麻煩了。)

架構師成長之路-Saltstack配置管理(State狀态子產品)
apache-install:    #定義apache的ID聲明(全局唯一狀态辨別),檢查裝置有沒有http,若存在就忽略,沒有才安裝
  pkg.installed:    #pkg是狀态子產品,installed是pkg狀态子產品的方法
    - name: httpd  #-name是installed的方法參數

apache-service:    #定義apache的ID聲明(全局唯一狀态辨別),保障httpd處于運作狀态,檢查是否運作,運作就忽略,沒運作就安裝
  service.running: #service是狀态子產品,running是service狀态子產品的方法
    - name: httpd   #-name是installed的方法參數
    - enable: True   #-enable是installed的方法參數      
架構師成長之路-Saltstack配置管理(State狀态子產品)

1.4 使用​

​salt​

​指令的​

​state​

​狀态子產品讓​

​minion​

​應用配置

# 讓所有的minion都安裝apache(由于salt預設的環境就是base,是以可以直接在後面指定調用的apache.sls檔案,不要字尾sls)
salt '*' state.sls apache

# 讓所有的minion都安裝vsftpd(saltenv指定環境)
salt '*' state.sls vsftpd saltenv=dev

# 讓其中一台minion(Saltstack02)安裝apache
salt 'Saltstack02*' state.sls apache      

在master上面執行後,在被執行的minion上檢視:

ps aux  | grep yum      
架構師成長之路-Saltstack配置管理(State狀态子產品)

 安裝完成後,master傳回結果:

架構師成長之路-Saltstack配置管理(State狀态子產品)
架構師成長之路-Saltstack配置管理(State狀态子產品)

5.  使用​

​salt​

​指令執行進階狀态。建議将同一類的放置在一個目錄下,以“.”的方式進行調用

架構師成長之路-Saltstack配置管理(State狀态子產品)
salt 'Saltstack02*' state.sls web.apache      
架構師成長之路-Saltstack配置管理(State狀态子產品)

6、使用​

​salt​

​的進階狀态使不同主機應用不同的配置 

檢視一下salt如何定義的進階狀态

架構師成長之路-Saltstack配置管理(State狀态子產品)

以上可知狀态系統可以使用一個“top”file入口檔案,放置在base環境目錄下,命名為top.sls,預設不建議更改其内容。

架構師成長之路-Saltstack配置管理(State狀态子產品)
base:
  'Saltack02':
    - web.apache
  'Saltstack01':
    - web.apache      
架構師成長之路-Saltstack配置管理(State狀态子產品)
salt '*' state.highstate   # 啟用進階狀态,去topfile裡面讀取(隻是去通知主機幹什麼,而至于執行或不執行,執行什麼,由topfile決定。      
架構師成長之路-Saltstack配置管理(State狀态子產品)
架構師成長之路-Saltstack配置管理(State狀态子產品)