Назад | Перейти на главную страницу

Saltstack state.apply определить, работает ли он в режиме test = True?

Мы используем плотность сервера (БЕТА МОДУЛЬ - 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