Call multiple states(調(diào)用多個states)
你可以在一個聲明的ID下面定義多個state語句幽勒,例如嗜侮,我們可以快速的修改webserver.sls,并且如果apache沒有運行將其啟動啥容。
httpd:
pkg: #state類型聲明
- installed
service: #state類型聲明
- running
- require:
- pkg: httpd
在運行state.highstate之前锈颗,嘗試停止apache,并且再次觀察其輸出內(nèi)容干毅。
Require other states(依賴其他state)
現(xiàn)在我們已經(jīng)安裝了apache宜猜,并且處于工作狀態(tài),讓我們添加一個HTML文件來定制我們的網(wǎng)站硝逢。將下面的內(nèi)容添加進你的webserver/init.sls文件中:
httpd:
pkg:
- installed
service:
- running
- require:
- pkg: httpd
/var/www/html/index.html: # 聲明一個ID
file: # 聲明state
- managed # state中的函數(shù)名
- source: salt://webserver/index.html # 函數(shù)的參數(shù)
- require: # 聲明requisite
- pkg: httpd # requisite的引用
第9行聲明一個新的ID姨拥,在這個例子中它是我們自定義的HTML文件要安裝的位置(Note:在不同的操作系統(tǒng)或發(fā)行版上apache服務(wù)的默認位置可能不同,/srv/www也可能是個好位置渠鸽。)
第10行聲明使用的state叫乌。
第11行聲明使用第十行中的state的函數(shù)名。這個managed函數(shù)將從master上下載文件徽缚,并且按照指定的位置進行安裝憨奸。
第12行是函數(shù)的參數(shù),在本例中利用managed函數(shù)中的source參數(shù)凿试,指定需要從master上下載的文件的路徑和名稱
第13行是require的聲明
第14行是require所要引用的state和ID排宰,在這個例子它值的例子開頭處的那個ID,這個聲明告訴salt在不安裝apache之前不要安裝HTML文件
接下來那婉,創(chuàng)建index.html文件板甘,并且保存在webserver目錄下:
<html>
<head><title>Salt rocks</title></head>
<body>
<h1>This file brought to you by Salt</h1>
</body>
</html>
最后,在調(diào)用一次state.highstate详炬,minion將獲取和執(zhí)行highstate以及從master的文件服務(wù)器上獲取我們的HTML文件
salt '*' state.highstate
現(xiàn)在驗證apache中你自定義的HTML吧盐类!
http://192.168.181.17
require VS watch
現(xiàn)在有兩個依賴的聲明,"require和watch",不是所有的state都支持"watch"在跳。service state
不支持"watch"并且不支持通過觀察一個條件進行重新啟動一個服務(wù)
例如枪萄,如果你使用salt配置安裝apache的虛擬主機,當(dāng)配置文件發(fā)送改變時要重啟apache猫妙,你可以修改之前的例子:
/etc/httpd/extra/httpd-vhosts.conf:
file:
- managed
- source: salt://webserver/httpd-vhosts.conf
apache:
pkg:
- installed
service:
- running
- watch:
- file: /etc/httpd/extra/httpd-vhosts.conf
- require:
- pkg: apache