ansible: продвижение предупреждений об ошибках - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть несколько непрерывных проверок интеграции, которые запускают несколько команд ansible-playbook.В каждой пьесе может быть много пьес, в том числе множество больших ролей.

Время от времени кто-то вводит некоторые изменения, которые вызывают предупреждение при запуске ansible-playbook, например что-то вроде:

[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: "{{ some_variable}}" not in
some_result.stdout

или:

[WARNING]: Consider using unarchive module rather than running tar

или некоторые предупреждения об устаревании, такие как:

[DEPRECATION WARNING]: ec2_facts is kept for backwards compatibility but usage 
is discouraged. The module documentation details page may explain more about 
this rationale.. This feature will be removed in a future release. Deprecation 
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.

и так далее.Иногда эти предупреждения появляются, когда мы обновляем обновленные версии.Независимо от того, почему они происходят, мне бы очень хотелось, чтобы команда ansible-playbook громко провалилась, когда она вызывает одно из этих предупреждений, вместо того, чтобы спокойно продолжать и сделать проверку CI успешной.Есть какой-либо способ сделать это?В настоящее время я использую ANSIBLE 2.4.3.

Я нахожу много дискуссий о том, как скрыть эти предупреждения, но не нашел ничего о том, чтобы привести их к серьезным ошибкам.

Ответы [ 4 ]

0 голосов
/ 20 июля 2019

У меня точно такая же проблема.Мой обходной путь:

  • запустите playbook с --check и 'tee' во временный файл
  • выполните grep-magic для фильтрации 'WARNING]:'
  • сделать некоторую grep-sed-magic для фильтрации результатов, которые не равны нулю (кроме ok / skipped)

Я знаю, что это не идеально, поэтому, если вы пришли с хорошим решением, пожалуйста, поделитесь: -)

0 голосов
/ 08 июля 2018

Чтобы скрыть такое [ПРЕДУПРЕЖДЕНИЕ УСТАРЕВАНИЯ], как указано, вы можете "отключено установкой deprecation_warnings = False в ansible.cfg."

Но это не может быть идеальным, так как в будущем вы не сможете увидеть, что может измениться или обесцениться.

Если вы абсолютно уверены, что можете игнорировать такое предупреждение, вы можете использовать ::

args:
 warn: false

Или измените код, как указано в предупреждающем сообщении.

Остальное ::

Если вы хотите вызвать ошибку для каких-либо предупреждений, вы можете

зарегистрируйте результат и примените fail_when, как показано в примере ниже.

- hosts: localhost gather_facts: false tasks: - name: Fail if there is any warnings shell: touch a.txt register: result failed_when: result.warnings is defined

0 голосов
/ 29 марта 2019

Зачем?Они мешают реализации книги?Скорее всего это не так.Просто исправьте код playbook.

Такое предупреждение удалить, как я понял, либо невозможно, либо очень сложно (в любом случае, у меня не получилось, когда я пытался):

[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: "{{ some_variable}}" not in
some_result.stdout

Просто используйте:

some_variable not in some_result.stdout

В условиях «когда» нет необходимости устанавливать {{}} для получения значения переменной

Лично я предпочитаю искать через «найти»":

some_result.stdout.find(some_variable) == -1

Это предупреждение:

[DEPRECATION WARNING]: ec2_facts is kept for backwards compatibility but usage 
is discouraged. The module documentation details page may explain more about 
this rationale.. This feature will be removed in a future release. Deprecation 
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.

можно удалить из вывода, установив:

deprecation_warnings = false

в файле ansible.cfg

Это предупреждение:

[WARNING]: Consider using unarchive module rather than running tar

Легко удалить, если вы используете модуль ansible вместо tar в "command":

unarchive: src=file.tgz dest=/opt/dest
0 голосов
/ 07 июля 2018

Есть опция any_errors_fatal в ansible.cfg, а как насчет

any_errors_fatal = True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...