我有两个状态文件:
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
,但应该是这样的。
答案 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。