В чем разница между функциями в файле состояния и функциями в командной строке в salttack?

Когда я использую saltstack управлять моими серверами. Я нашел интересную вещь: когда я бегу salt '*' pkg.installed httpdЯ получаю следующее сообщение: pkg.installed is not available, Но я могу использовать pkg.installed функция в моем .sls файлы, и это работало очень хорошо. Итак, я запутался в этом. И я думаю, что это происходит из-за saltstack,

Кто может мне помочь?

1 ответ

Решение

Здесь есть две взаимосвязанные, но разные концепции.

  1. Солевые Модули Исполнения
  2. Солевые государственные модули.

Модули выполнения - это то, где фактически выполняется большая часть работы, и это то, что вы обычно запускаете в командной строке. Например:

salt '*' pkg.install vim

Это вызовет непосредственно менеджер пакетов вашей ОС, такой как yum или apt, и установит vim.

Модули состояния - это полные команды, которые находятся над "исполняющими модулями". Модуль состояния проверит, существует ли желаемый результат, и внесет необходимые изменения, чтобы получить желаемое состояние. Они сопряжены иначе, чем исполнительные модули. Например, в этом файле состояния соли (файл sls):

cat /srv/salt/vim.sls

install_vim_please:
  pkg.installed:
    - name: vim

Тогда вы могли бы запустить state.sls исполнительный модуль, чтобы применить этот файл SLS с pkg.installed государство.

salt '*' state.sls vim

Потому что мы используем pkg.installed State Salt проверит у менеджера пакетов вашей ОС и проверит, установлен ли vim. Salt попытается установить vim, только если менеджер пакетов скажет, что vim еще не установлен.

Хранение ваших солевых состояний в файлах sls позволяет легко сохранять их в git или любых других vcs, которые вы используете для их отслеживания.

Вы можете пропустить файл sls и выполнить команду с указанием состояния из командной строки следующим образом:

salt '*' state.single pkg.installed name=vim
Другие вопросы по тегам