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
