通过其ID声明要求sls

时间:2013-11-24 10:52:46

标签: salt-stack

我有两个状态文件:

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

php/init.sls安装包php53u

我正在尝试php-fpm.sls要求php,因为这是我在php/init.sls中声明的方式,但是只有在我需要pkg: php53u而不是sls: php

php/init.sh的内容:

php:
  pkg:
    - name: php53u
    - installed

php-fpm.sls的内容(使用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

(请注意,这有关于nginx的额外内容,目前不是require,但应该是这样的。

2 个答案:

答案 0 :(得分: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节中添加了require,以确保在php53u-fpm包之前安装了php包。

我还将服务节下的“require”更改为“watch”。 “监视”充当“需要”,但如果“监视”的pkg发生变化,也会重新启动服务。因此,如果有包升级,它将自动重启服务。

答案 1 :(得分:1)

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

模块php / init.sls只包含一个ID声明:{pkg:php53u}。 ID声明由状态名称(pkg)和组件名称(php53u)组成。

你不能在salt中使用整个模块,但在最后的版本中,模块将按声明的顺序执行,因此php模块应该在php-fm之前执行。盐会尊重在任何情况下都需要必要的参考。

对于初学者来说,盐堆中的词汇量可能有点困难,这里有一个页面可以帮助你:http://docs.saltstack.com/ref/states/highstate.html