saltstack/salt的state.sls的使用


SLS(代表SaLt State文件)是Salt State系統的核心。SLS描述了系統的目標狀態,由格式簡單的數據構成。這經常被稱作配置管理 首先,在master上面定義salt的主目錄,默認是在/srv/salt/下面,vim /etc/salt/master:

file_roots:
   base:
     - /srv/salt
   dev:
    - /srv/salt-dev 

然后,在/srv/salt下面創建top.sls文件(如果有的話,就不用創建了,直接編輯好了) vim top.sls

base:
  '*': 

top.sls 默認從 base 標簽開始解析執行,下一級是操作的目標,可以通過正則,grain模塊,或分組名,來進行匹配,再下一級是要執行的state文件

base:
  '*':               #通過正則去匹配所有minion
    - nginx          #這里都是我自己寫的state.sls模塊名 這里可以無視 后面會提到

  my_app:             #通過分組名去進行匹配 必須要定義match:nodegroup
    - match: nodegroup
    - nginx

  'os:Redhat':        #通過grains模塊去匹配,必須要定義match:grain
    - match: grain
    - nginx 

整個top.sls大概的格式就是這個樣子,編寫完top.sls后,編寫state.sls文件;

cd /srv/salt 
vim nginx.sls 

nginx.sls內容:

nginx:
  pkg:               #定義使用(pkg state module)
    - installed      #安裝nginx(yum安裝)
  service.running:   #保持服務是啟動狀態
    - enable: True
    - reload: True
    - require:
      - file: /etc/init.d/nginx
    - watch:                 #檢測下面兩個配置文件,有變動,立馬執行上述/etc/init.d/nginx 命令reload操作
      - file: /etc/nginx/nginx.conf
      - file: /etc/nginx/fastcgi.conf
      - pkg: nginx
/etc/nginx/nginx.conf:       #絕對路徑
  file.managed:
    - source: salt://files/nginx/nginx.conf  #nginx.conf配置文件在salt上面的位置
    - user: root
    - mode: 644
    - template: jinja   #salt使用jinja模塊
    - require:
      - pkg: nginx

/etc/nginx/fastcgi.conf:
  file.managed:
    - source: salt://files/nginx/fastcgi.conf 
    - user: root
    - mode: 644
    - require:
      - pkg: nginx 

在當前目錄下面(salt的主目錄)創建files/nginx/nginx.conf、files/nginx/fastcgi.conf文件,里面肯 定是你自己項配置的nginx配置文件的內容啦;使用salt做自動化,一般nginx都是挺熟悉的,這里不做詳細解釋了

測試安裝:

root@salt salt # salt 'sa10-003' state.sls nginx test=True
··········這里省略輸出信息
Summary
------------
Succeeded: 8
Failed:    0
------------
Total:     8 

往minion上面進行推送的時候,一般salt 'sa10-003' state.sls nginx 這種命令;當然,也可以執行 salt sa10-003 state.highstate 這種命令會默認匹配所有的state.sls模塊。其中test=True 是指測試安裝 ,也就是不進行實際操作,只是查看測試效果。


state的邏輯關系列表:

include: 包含某個文件 比如我新建的一個my_webserver.sls文件內,就可以繼承nginx和php相關模塊配置,而不必重新編寫

root@salt salt # cat my_webserver.sls 
include:
  - nginx
  - php 

match: 配模某個模塊,比如 之前定義top.sls時候的 match: grain match: nodegroup require: 依賴某個state,在運行此state前,先運行依賴的state,依賴可以有多個 比如文中的nginx模塊內,相關的配置必須要先依賴nginx的安裝

- require:
  - pkg: nginx 

watch: 在某個state變化時運行此模塊,文中的配置,相關文件變化后,立即執行相應操作

- watch:
  - file: /etc/nginx/nginx.conf
  - file: /etc/nginx/fastcgi.conf
  - pkg: nginx 

order: 優先級比require和watch低,有order指定的state比沒有order指定的優先級高,假如一個state模塊內安裝多個服務,或者其他依賴關系,可以使用

nginx:
  pkg.installed:
    - order:1 

想讓某個state最后一個運行,可以用last


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM