2017-02-09 52 views
2

這是更多的澄清請求。鹽堆:在執行配方前需要安裝軟件包

我有兩個公式,它們在運行之前依靠init.sls公式安裝的一堆軟件包。

此刻我有類似下面的東西。我想知道是否有人能證實這是正確的方法,或者是否有人確實可以提供更好的方法。

init.sls

install_packages: 
    pkg.installed: 
    - pkgs: 
     - foo 
     - bar 
    - require_in: 
     - sls: brrap 
     - sls: blah 

所以會這樣確保執行brrap.sls和blah.sls之前,上面的軟件包安裝?

感謝

+0

從我的角度看起來不錯。 – dahrens

回答

3

是,使用require_in必要在你的例子將確保執行brrap.slsblah.sls之前安裝了軟件包。

所有的_in必要條件都以相同的方式工作:它們在目標狀態下產生正常的必要條件。當在單獨的sls文件中分配require時,require_in聲明特別有用。

只要brrap.slsblah.sls狀態並不需要知道需要它時,它被設置了附加組件(foobar),你的配置是好的。如果brrap.slsblah.sls狀態確實需要foobar軟件包安裝在所有的情況下,這可能是一個更簡單的解決方案,以創建從brrap.slsblah.sls狀態的require必要。

就拿下面的狀態http.sls

httpd: 
    pkg.installed: 
    - name: httpd 
    service.running: 
    - name: httpd 

在一些你的爪牙,你可能想使用http.sls,而在其他你可能想使用http.slsphp.sls狀態:

include: 
    - http 

php: 
    pkg.installed: 
    - name: php 
    - require_in: 
     - service: httpd 

現在,如果PHP是驗證安裝在httpd服務器纔會開始。

查看完整示例的requisites and other global state arguments文檔。

+0

謝謝你這麼徹底的澄清 –

+1

注意整個sls文件中的require_in是[破解到氮氣](https://github.com/saltstack/salt/issues/22852)發佈。 –

相關問題