Saltstack state.apply определяет, выполняется ли он в режиме test=True?
Мы используем serverdensity (БЕТА-МОДУЛЬ - https://docs.saltstack.com/en/latest/ref/states/all/salt.states.serverdensity_device.html) с солью и попали (ошибка?) Где, если вы попытаетесь а:
salt '*SERVER-01*' --state-output=mixed state.apply serverdensity test=True
Затем модуль serverdensity всегда пытается добавить сервер к мониторингу, находится ли он в режиме "test=True" или нет.
Я надеялся установить переменную Jinja (или использовать существующую?) В текущем тестовом режиме и, таким образом, сделать "если тест, то эхо" не добавляя "еще добавить", чтобы обойти это.
Однако я не могу узнать, как это сделать в документах или поиске Google. Я даже посмотрел, смогу ли я получить аргументы ENV на мастере, чтобы увидеть, передается ли он как аргумент командной строки, но $@ ничего не производит в:
{% set args = salt['environ.get']('@') %}
Есть идеи?
Соль беговая 2018.3.2 (Кислород) на Centos 7
2 ответа
В случае, если кто-то найдет это и захочет узнать ответ - я проверил слабину сообщества соли и некоторые очень полезные люди ответили:
Terminalmage [2:55 PM] проверяет, похоже, это просто называется opts
Так что, если вы хотите увидеть, включен ли тестовый режим, одним из способов будет что-то вроде:
{% if opts['test'] %}
echo foo:
cmd.run
{% endif %}
Затем, если это состояние присутствует в возврате состояния, вы знаете, что оно было запущено в тестовом режиме. Но другой способ проверки - просто выполнить старый cmd.run
состояние, потому что вы получите результат, говорящий, что команда будет выполнена, если вы запустили в тестовом режиме
local:
----------
ID: echo foo
Function: cmd.run
Result: None
Comment: Command "echo foo" would have been executed
Started: 14:58:55.482679
Duration: 0.499 ms
Changes:
Также хочу указать на то, что serverdensity также подхватил это и заявить, что их модуль поддерживается, поэтому эта основная проблема также должна быть решена в ближайшее время До тех пор у нас работает if-then-else opts['test'].
В состоянии, я думаю, что правильный ответ должен проверить __opts__
о наличии тестов см. https://docs.saltstack.com/en/latest/ref/states/writing.html
# Return comment of changes if test.
if __opts__['test']:
ret['result'] = None
ret['comment'] = 'State Foo will execute with param {0}'.format(bar)
return ret