Saltstack之State介紹
阿新 • • 發佈:2020-11-05
版本
Centos 7
SaltStack 3001.1
簡介
state,即狀態,意思是確保主機處於state檔案所描述的狀態下;saltstack的基礎是可以批量執行命令,那麼state就類似指令碼,不過由於是描述狀態而不是命令的集合,所以語法更簡單,但可程式設計性也差不少。
開始使用
state指令碼必須放到saltstack的fileserver路徑下,預設為/srv/salt/,可以通過/etc/salt/master中的file_roots修改。
指令碼必須是.sls字尾,語法為yaml,下面新建一個example.sls:
svn: # 任務id,自定義的, 在一個sls檔案中不可重複 pkg.installed: # 模組.方法- name: subversion # name通常是任務內容, 可省略,省略時用id作為name show svn version: cmd.run:
- name: svn --version
- require: # 執行的條件
- pkg: svn # 模組.任務id, 意思是要任務svn成功才執行該任務
name省略的話,可以簡化成:
subversion: pkg.installed svn --version: cmd.run: - require: - pkg: subversion
這個state會在遠端主機安裝svn並執行列印版本號的命令,使用下面的命令應用這個state:
shell> salt 'minion-01' state.apply example # 剛寫好的state第一次用時建議加上test=True先測試下
目錄結構
/srv/salt/
├── example.sls
└── test
├── init.sls
└── test.sls
假設有上面的檔案結構,那麼:
命令 | 執行的檔案 |
salt 'minion-01' state.apply example
|
example.sls |
salt 'minion-01' state.apply test
|
test/init.sls |
salt 'minion-01' state.apply test
|
test/test.sls |
包含include
/srv/salt/
├── example.sls
└── tools
├── git.sls
└── svn.sls
# example.sls 內容 include: - tools.git - tools.svn
執行example就是執行了git和svn
top.sls
state.apply未指明目標時預設為top.sls,它的用法與普通sls稍有不同,示例:
/srv/salt/
├── top.sls
├── jdk.sls
└── tools
├── git.sls
└── svn.sls
# top.sls 內容 base: '*': - jdk 'minion-01': - tools.git 'minion-02': - tools.svn
命令 | 執行效果 |
salt '*' state.apply
|
jdk |
salt 'minion-01' state.apply
|
jdk、git |
salt 'minion-02' state.apply
|
jdk、svn |
附:
可以通過命令檢視幫助:
sys.list_state_modules | 列出state可用的模組 | salt 'minion-01' sys.list_state_modules |
sys.list_state_functions | 列出state指定模組的可用方法 | salt 'minion-01' sys.list_state_functions file |
sys.state_doc | 顯示state指定模組的方法的用法 | salt 'minion-01' sys.list_state_functions file.managed |
官方文件(State模組):https://docs.saltstack.com/en/latest/ref/states/all/index.html
OVER