2013-11-24 75 views
3

要求SLS我有兩個狀態文件:通過其ID宣言

  • php/init.sls
  • php-fpm.sls

php/init.sls安裝php53u

我試圖讓php-fpm.sls,要求包php,因爲這是我在php/init.sls內聲明的內容,但是的php-fpm.sls

php: 
    pkg: 
    - name: php53u 
    - installed 

內容(使用pkg它的工作原理):

include: 
    - nginx 
    - php 

php-fpm: 
    pkg: 
    - name: php53u-fpm 
    - installed 
    service: 
    - running 
    - enable: True 
    - require: 
     - pkg: php53u-fpm 
     - pkg: php53u 

extend: 
    nginx: 
    file: 
     - name: /etc/nginx/php-fpm 
     - source: salt://nginx/src/etc/nginx/php-fpm 
     - managed 
     - template: jinja 

(注意,這有多餘的,如果我需要的php/init.shpkg: php53u而不是sls: php

內容它只關於nginx的東西,目前不是require雖然它應該是)

回答

3

你正確的包含了php sls文件。你只需要設置你的要求是這樣的:

- pkg: php 

下面是一個例子,應該工作:

php-fpm: 
    pkg: 
    - name: php53u-fpm 
    - installed 
    - require: 
     - pkg: php 
    service: 
    - running 
    - enable: True 
    - watch: 
     - pkg: php53u-fpm 
     - pkg: php 

請注意,我還增加了需要對PKG節,以確保該PHP包安裝在php53u-fpm軟件包之前。

我也改變了「需要」的服務節下的「監視」。 「watch」充當「require」,但是如果「watched」pkg發生變化,也會重新啓動服務。所以如果有套件升級,它會自動重啓服務。

1

這是非常正常的,在需求列表中,您需要使用ID聲明(http://docs.saltstack.com/ref/states/highstate.html#term-id-declaration)。

模塊的PHP/init.sls僅包含一個ID聲明:{PKG:php53u}。 ID聲明由狀態名稱(pkg)和組件名稱(php53u)組成。

你不能要求在鹽整個模塊,但在過去的版本中,模塊將在聲明的順序,執行這樣的PHP模塊應該在PHP-FM一個之前執行。鹽在任何情況下都會尊重所需的參考。

詞彙鹽棧可能是對初學者有點困難,這裏是一個網頁,其中可以幫助你:http://docs.saltstack.com/ref/states/highstate.html

+0

下'#單id'多國http://docs.saltstack.com/ref/states/highstate.html#large-example的例子似乎引用我所列出的'php'作爲'ID聲明'雖然。此外,'mywebsite'和'apache'的'Name declaration'下的http://docs.saltstack.com/ref/states/highstate.html#requisite-reference中的例子似乎也支持我。 –