В чем разница между функциями в файле состояния и функциями в командной строке в salttack?
Когда я использую saltstack
управлять моими серверами. Я нашел интересную вещь: когда я бегу salt '*' pkg.installed httpd
Я получаю следующее сообщение: pkg.installed is not available
, Но я могу использовать pkg.installed
функция в моем .sls
файлы, и это работало очень хорошо. Итак, я запутался в этом. И я думаю, что это происходит из-за saltstack
,
Кто может мне помочь?
1 ответ
Здесь есть две взаимосвязанные, но разные концепции.
- Солевые Модули Исполнения
- Солевые государственные модули.
Модули выполнения - это то, где фактически выполняется большая часть работы, и это то, что вы обычно запускаете в командной строке. Например:
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