Мы используем плотность сервера (БЕТА МОДУЛЬ - https://docs.saltstack.com/en/latest/ref/states/all/salt.states.serverde density_device.html) с солью и попали в (ошибку?) где, если вы попробуете:
salt '*SERVER-01*' --state-output=mixed state.apply serverdensity test=True
Затем модуль serverde density всегда пытается добавить сервер для мониторинга, находится он в режиме test = True или нет.
Я надеялся установить переменную Jinja (или использовать существующую?) В текущем тестовом режиме и, таким образом, выполнить «if test then echo 'not added' else add», чтобы обойти это.
Однако я не могу узнать, как это сделать, в документации или поиске в Google. Я даже посмотрел, могу ли я вытащить аргументы ENV на ведущем устройстве, чтобы увидеть, был ли он передан как аргумент командной строки, но $ @ ничего не дает:
{% set args = salt['environ.get']('@') %}
Любые идеи?
Бегущая соль 2018.3.2 (Кислород) на Centos 7
На случай, если кто-то найдет это и захочет узнать ответ - я проверил slack сообщества saltstack, и несколько очень полезных людей ответили:
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:
Также хочу отметить, что серверная плотность также подхватила это и заявляет, что их модуль поддерживается, поэтому эта основная проблема также должна быть решена в ближайшее время. А пока у нас работает if-then-else opts ['test'].
В состоянии, думаю, правильный ответ - проверить __opts__
наличие тестов см. https://docs.saltstack.com/en/latest/ref/states/writing.html#test-state
# 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