Требовать sls по объявлению идентификатора

У меня есть два файла состояния:

  • 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, хотя должны быть)


person Shawn Murphy    schedule 24.11.2013    source источник


Ответы (2)


Вы правильно включаете файл 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.

Я также изменил «требовать» в разделе службы на «часы». «Наблюдение» действует как «требуется», но также перезапустит службу, если «отслеживаемый» pkg изменится. Поэтому, если есть обновление пакета, оно автоматически перезапустит службу.

person Utah_Dave    schedule 25.11.2013

Это совершенно нормально, в списке требований вам нужно использовать объявление идентификатора (http://docs.saltstack.com/ref/states/highstate.html#term-id-declaration).

Модуль php/init.sls содержит только одно объявление идентификатора: {pkg: php53u}. Объявление идентификатора состоит из имени состояния (pkg) и имени компонента (php53u).

Вы не можете потребовать целый модуль в соли, но в последних версиях модули будут выполняться в порядке объявления, поэтому модуль php должен выполняться перед модулем php-fm. Соль будет уважать требуемые ссылки в любых случаях.

Словарь в salt-stack может быть немного сложным для начинающих, вот страница, которая может вам помочь: http://docs.saltstack.com/ref/states/highstate.html.

person Boris Feld    schedule 24.11.2013
comment
Пример в docs.saltstack.com/ref/states/highstate.html #large-example под # multiple states for single id, похоже, ссылается на то, что я указал как php как на ID Declaration. Кроме того, пример в docs.saltstack.com/ref/states/ под Name declaration для mywebsite и apache тоже меня поддерживает. - person Shawn Murphy; 25.11.2013