Salt使用PyAMl語法(http://pyyaml.org) 作為它的模板文件的格式,但是其他很多模板語言在Salt中是可以使用的苫幢。一定要按照正確的格式書寫YAML,比如它使用到兩個空格代替tab歇僧。如果YAML文件出現(xiàn)不可預(yù)知的錯誤图张,你可以使用一個在線的debug工具(http://yaml-online-parser.appspot.com )。
1.啟動配置管理
在啟動配置管理功能之前诈悍,你需要再一次編輯你的master配置文件祸轮,在/etc/salt下。打開master配置文件侥钳,找到file_roots行适袜,缺省配置文件中,這一行在第156行∠隙幔現(xiàn)在苦酱,取消注釋即刪除#號,配置如下:
file_roots:
base:
- /srv/salt
這樣子就可以告訴Salt你的配置管理文件在哪里给猾。根據(jù)你是如何安裝Salt疫萤,有時你需要自己創(chuàng)建/srv/salt目錄
2.創(chuàng)建Top文件/Roadmap
基礎(chǔ)配置文件也叫做Top文件,在/srv/salt目錄下敢伸。我們來創(chuàng)建這個文件扯饶。這個文件提供了其它文件的映射〕鼐保可以用于作為其它服務(wù)器的基礎(chǔ)配置文件尾序。在/srv/salt目錄創(chuàng)建一個top.sls文件。你可以把它作為指向不同目錄的路線圖躯砰。在top.sls中加入以下內(nèi)容:
base:
'*':
- webserver
這個top.sls文件是用來分隔環(huán)境的蹲诀。默認(rèn)環(huán)境是base,在base的環(huán)境集合定義了對minions的匹配弃揽,可以使用簡單的*來指定所有的主機(jī)脯爪。
你也可以指定minions
salt可以通過glob则北、pcre正則表達(dá)式,或者通過grains來進(jìn)行匹配任何的目標(biāo)機(jī)器痕慢,例如:
base:
'192.168.181.17':
- match: grain
- webserver
在top.sls相同的目錄下尚揣,創(chuàng)建一個名為webserver.sls的空文件,內(nèi)容如下:
httpd: # ID的聲明
pkg: # state類型的聲明
- installed # state中的函數(shù)聲明
第1行掖举,是對全局ID的聲明快骗,可以是任意的標(biāo)識符,本例是需要被安裝的軟件包的包名塔次。
以Apache HTTP server為例方篮,在基于apatitude的包管理中叫做apache2,而在基于yum的包管理中叫做httpd励负。確保針對包管理工具使用正確的名字藕溅。也可以使用Salt的grains進(jìn)行包管理
第2和第3行告訴Salt如何處理這個包,本例是安裝這個包。要刪除一個包继榆,你只需要修改'- installed'為'-removed'即可巾表。
記住,空格很重要略吨!第二行'pkg:'前有兩個空格集币,第三行'-
installed'前有四個空格。如果遇到任何錯誤翠忠,請通過在線YAML解析器檢查語法鞠苟。
接下來運行我們創(chuàng)建的state,在master上打開一個終端并且運行一下命令:
salt '*' state.highstate
片刻后,從服務(wù)會反饋像如下成功的信息:
192.168.181.17:
----------
ID: httpd
Function: pkg.installed
Result: True
Comment: The following packages were installed/updated: httpd.
Started: 22:37:19.968357
Duration: 16922.03 ms
Changes:
----------
apr-util-ldap:
----------
new:
1.3.9-3.el6_0.1
old:
httpd:
----------
new:
2.2.15-39.el6.centos
old:
httpd-tools:
----------
new:
2.2.15-39.el6.centos
old:
mailcap:
----------
new:
2.1.31-2.el6
old:
Summary
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
master將會指導(dǎo)所有的目標(biāo)minions運行state.highstate秽之。
當(dāng)minion執(zhí)行highstate偶妖,它將會下載top文件中匹配的內(nèi)容,minion將表達(dá)式中匹配的內(nèi)容下載政溃、編譯、執(zhí)行态秧。
一旦完成董虱,minion將返回所有的動作執(zhí)行結(jié)果和所有更改。
接下來我們來回顧下之前配置好的top.sls:
base:
'192.168.181.17':
- match: grain
- webserver
這個例子中申鱼,webserver.sls文件可以簡單的寫作webserver愤诱。這個sls文件名稱空間遵循一些簡單的規(guī)則:
- 這個.sls可以被省略,例如webserver.sls可以被稱謂webserver
- 子目錄可以更好的組織
a. 每個子目錄都代表一個點
b. webserver/dev.sls可以寫作webserver.dev - 在子目錄的存在一個名為init.sls文件捐友,所以webserver/init.sls也可以簡寫為webserver
- 如果webserver.sls和webserver/init.sls同時存在淫半,那么webserver/init.sls將會被忽略,并且webserver.sls將會被成為webserver
3.Troubleshooting
如果輸出的內(nèi)容不是你所預(yù)期的匣砖,以下的建議可以幫助你縮小問題科吭。
啟用日志記錄
當(dāng)你啟用日志的debug模式昏滴,salt輸出的信息將會很全
salt-minion -l debug
前臺運行minion
不使用daemon模式(-d)啟動minion,可以從輸出看到其工作的任何細(xì)節(jié)
salt-minion &
增加salt運行的默認(rèn)超時時間,例如对人,修改默認(rèn)超時時間為60s:
salt -t 60
為了更好的達(dá)到這三個效果:
# 在minion上運行
salt-minion -l debug &
# 在master上運行
salt '*' state.highstate -t 60
使用測試模式:
salt '*' state.highstate -t 60 test=True