ansible проверка строкового файла на наличие ошибок строки - PullRequest
0 голосов
/ 29 мая 2020

На самом деле надеюсь, что кто-то может помочь, у меня есть эта задача, которая проверяет, существует ли строка XYZ в журнале

если она не существует, она должна завершиться ошибкой (ignore_errors: yes), затем пнуть другая задача, однако, даже когда она терпит неудачу, она пропускает другую задачу

 - name: check if file is empty
       lineinfile:
          path: /path/to/log.log
          line: "XYZ"
          state: present
       check_mode: yes
       register: exists
       failed_when: exists is changed
       ignore_errors: yes

     - name: send mail
       when: exists is not changed
       mail:
          from: mail@123.com
          subject: xyz
          body: No xyz found
          to:
           - John Doe <john.doe@123.com>
          cc: Marie Smith <marie.smit@123.com>

     - name: read files
       when: exists is changed
       do abc...

проблема в том, что когда файл пуст и не имеет XYZ, он все равно не работает, но пропускает отправку почты и продолжает задачу чтения файлов


TASK [check if file is empty] ***********************************************************************************************************************************************************************************

fatal: [server123]: FAILED! => {"backup": "", "changed": true, "failed_when_result": true, "msg": "line added"}

...ignoring



TASK [send mail] ************************************************************************************************************************************************************************************************

skipping: [server123]



TASK [read files] ***********************************************************************************************************************************************************************************************

changed: [server123]

1 Ответ

1 голос
/ 29 мая 2020

Если я правильно понял ваше ожидание, то вы также можете добиться результата, используя модули grep и command. Вот пример:

- name: check if file is empty
  command: grep -xq 'XYZ' /path/to/log.log
  register: exists
  ignore_errors: yes

- name: send mail
  mail:
    from: mail@123.com
    subject: xyz
    body: No xyz found
    to:
      - John Doe <john.doe@123.com>
    cc: Marie Smith <marie.smit@123.com>
  when: exists.failed

- name: read files
  debug:
    msg: do abc...
  when: not exists.failed

Вы можете настроить grep logi c, что вам подходит.

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