Запустите загруженную формулу SaltStack

Я скачал формулу PHP, следуя инструкциям здесь: https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html

Я изменил apache на php. В моем конфигурационном файле соли (который, как я полагаю, равен /etc/salt/master) я установил file_roots следующим образом:

file_roots:
  base:
    - /srv/salt
    - /srv/formulas/php-formula

Я не знаю, как я должен управлять им теперь. Я успешно запустил файл состояния соли, обнаружив, что документация неполная, поэтому я пропустил шаг, о котором не знал.

Если я попытаюсь запустить формулу так же, как запускал состояние, я просто получаю ошибки.

salt '*' state.apply php-formula

salt-minion:
    Data failed to compile:
----------
    No matching sls found for 'php-formula' in env 'base'
ERROR: Minions returned with non-zero exit code

Я также пробовал: sudo salt '*' state.highstate, и у него тоже есть ошибки:

salt-minion:
----------
          ID: states
    Function: no.None
      Result: False
     Comment: No Top file or master_tops data matches found.
     Changes:

Summary for salt-minion
------------
Succeeded: 0
Failed:    1
------------
Total states run:     1
Total run time:   0.000 ms
ERROR: Minions returned with non-zero exit code

person CJ Dennis    schedule 19.01.2018    source источник
comment
Вы выполнили шаг 3? Перезапустите Salt Master. после добавления строк в основную конфигурацию?   -  person dahrens    schedule 19.01.2018
comment
@dahrens Да, я даже перезапустил всю машину, но все равно получаю ту же ошибку.   -  person CJ Dennis    schedule 22.01.2018


Ответы (1)


Вы должны добавить файл top.sls в /srv/salt/, а не только в /srv/pillar/. Если у вас есть файл с именем /srv/salt/php.sls, вы должны удалить его, иначе он будет мешать /srv/pillar/php.sls.

Содержание /srv/salt/top.sls:

base:
  '*':
    - php

Это немного странно, потому что в моем предыдущем тесте (который не был формулой) использовались /srv/salt/php.sls и /srv/pillar/top.sls. Теперь я использую /srv/pillar/php.sls и /srv/salt/top.sls.

person CJ Dennis    schedule 22.01.2018
comment
Причина в том, что /srv/salt/php.sls выводится по формуле. Это не просто файл, а целая папка. Однако это приводит к тому, что php можно использовать как состояние. Salt объединяет несколько источников в одно дерево состояний, которое не является просто папкой. Pillar — это что-то другое, но использует тот же подход (без слияния — вот это одна папка!). Вы можете называть /srv/pillar/php.sls совершенно по-другому, если назначите его своему миньону с помощью файла /srv/salt/top.sls. Обычно они называются одинаково, но это может сбивать с толку, особенно если вы новичок во всем этом. - person dahrens; 22.01.2018
comment
@dahrens Я знаю, что вы подразумеваете под структурой каталогов; они говорят о file_roots как о файле. Потребовалось много поисков, чтобы найти ключ в одном из top.sls файлов! Я все еще не понимаю, почему pillar идет в /srv/salt/, а salt идет в /srv/pillar/, или даже в чем разница между ними. Дело в том, что формула не создает php.sls, Salt просто использует файл srv/salt/php.sls вместо формулы, и при удалении файла формула работает без него. Итак, если у вас есть salt и pillar с одинаковым именем, вы можете использовать только salt. - person CJ Dennis; 23.01.2018