Условные выражения в ANSIBLE без "FAILED" вывода JSON - PullRequest
0 голосов
/ 25 сентября 2019

Я хочу запустить команду в зависимости от того, установлен ли определенный RPM.У меня есть ряд задач, которые выглядят примерно так:

- name: This is the test for the RPM
  command: rpm -q some-rpm
  register: rpm_is_installed
  ignore_errors: True
- name: Command to run if the RPM is installed
  command: some_command_to_run
  when: rpm_is_installed is succeeded

Функционально это работает.Однако, если тест не пройден (т. Е. RPM не установлен), я получаю неприятную распечатку JSON, описывающую сбой при выполнении команды «rpm -q some-rpm».Это игнорируется, поэтому ANSIBLE продолжается, и все работает эффективно, как и должно, но я хотел бы подавить вывод этой ошибки, чтобы я не видел это сообщение об ошибке каждый раз, когда запускаю эти задачи.

Я нашел этот пост , в котором предлагается добавить "no_log: True" в тестовое задание.Это не подавляет вывод в моей версии ansible, но изменяет вывод на:

FAILED!=> {"censored": "выходные данные были скрыты из-за того, что для этого результата было указано 'no_log: true'"}

Есть ли способ подавить выходные данные неудачногокоманда?

  • Требуется: 2.4.2.0
  • ОС: RHEL 7,7

1 Ответ

0 голосов
/ 25 сентября 2019

Нет способа подавления журналов ошибок, но есть одна вещь, которую вы можете сделать, это использовать failed_when.

no_log: true -> Это будет подвергать цензуре вывод.

ignore_errors: true -> Это проигнорирует ошибку и продолжит воспроизведение.

failed_when: false -> Это не позволит сбою задания.

Playbook будет выглядеть так:

- name: This is the test for the RPM
  command: rpm -q some-rpm
  register: rpm_is_installed
  failed_when: false
  no_log: true

Помимо ignore_errors, здесь есть опция failed_when, где вы можете точно определить, что делает задачу неудачной.Мы не должны допустить, чтобы задача провалилась.В этом случае задача никогда не завершится неудачей.

Вывод без fail_when:

fatal: [localhost]: FAILED! => {
    "censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result", 
    "changed": true
}

Вывод с failed_when:

changed: [localhost] => {
    "censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result", 
    "changed": true
}

Это единственная комбинация, которую вы можете использовать дляигнорируйте, подвергайте цензуре и не позволяйте задаче провалиться.

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