Я не могу вызвать ни одного состояния файла sls.
Это работает:
salt-ssh w123 state.sls monitoring
Это работает:
salt-ssh w123 state.show_sls monitoring
Один элемент из вышеприведенного вывода:
monitoring_packages:
----------
__env__:
base
__sls__:
monitoring.packages
pkg:
|_
----------
pkgs:
- python-psutil
- installed
|_
----------
order:
10000
Теперь я хочу только позвонить monitoring_packages
, а не весь файл sls:
Не удается:
salt:/srv # salt-ssh w123 state.sls_id monitoring_packages monitoring
w123:
Data failed to compile:
----------
No matching sls found for 'monitoring' in env 'base'
Не удается:
salt:/srv # salt-ssh w123 state.single monitoring.monitoring_packages
w123:
TypeError encountered executing state.single: single() takes at least 2 arguments (1 given)
Как назвать мое единственное состояние monitoring_packages
?
salt:/srv # salt-ssh --version
salt-ssh 2015.8.3 (Beryllium)
Я наткнулся на этот пост, пытаясь понять, как это сделать с помощью обычных поваренная соль звонки (т.е. не соль-сш).
Если у вас есть следующий файл SLS (foo.sls):
bar:
file.managed:
- source: salt://some/file
Вы можете запустить следующую команду, чтобы выполнить только эту запись в файле состояния:
salt '*' state.sls_id bar foo
И снова я этого не знал. Я нашел ответ в комментарии в Обсуждение в группе Google который указал на фиксацию Вот.
Похоже, это уже известная проблема: https://github.com/saltstack/salt/issues/29253
Он работает вне соли-ssh. Похоже, что функцию нужно добавить в эту оболочку.
salt '*target*' state.sls monitoring.<sls_file_name> <task name> -l debug
Пример: предположим, что у меня есть состояние для elasticsearch с файлом sls с именем settings.sls, и внутри этого файла предположим, что у меня есть задача перезапуска elasticsearch, теперь я хочу вызвать эту конкретную задачу.
salt '*elastic*' state.sls elasticsearch.settings restart_elastic_search -l debug