Требовать SLS по своей декларации ID

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

  • 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 ответа

Решение

Вы правильно включили файл 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 изменяется. Так что, если есть обновление пакета, он автоматически перезапустит службу.

Это совершенно нормально, в списке требований вам нужно использовать декларацию ID ( http://docs.saltstack.com/ref/states/highstate.html).

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

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

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

Другие вопросы по тегам