Ansible grep для строки постоянно - PullRequest
0 голосов
/ 05 апреля 2019

Я знаю, как проверить, доступна ли определенная строка в файле, используя задачу, указанную ниже, но я не уверен, как непрерывно проверять или отображать файл, пока не появится упомянутая строка, и выйти из задачи. (- = SERVICE HAS НАЧАЛО = -)

 - name: Check whether my.log contains "SERVICE HAS BEGUN"
  command: grep -Fxq "-= SERVICE HAS BEGUN =-" my.log
  register: logg
  check_mode: no
  ignore_errors: yes
  changed_when: no

Я сталкивался с опцией wait_for, но это действительно не помогает делу. Любые предложения, пожалуйста

Ответы [ 2 ]

2 голосов
/ 05 апреля 2019

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

- name: Wait until SERVICE HAS BEGUN
  wait_for:
    path: /path/to/my.log
    search_regex: SERVICE HAS BEGUN

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

1 голос
/ 05 апреля 2019

Вы можете сделать что-нибудь, используя until loop , например:

- name: Check whether my.log contains "SERVICE HAS BEGUN"
  command: grep -Fxq -- "-= SERVICE HAS BEGUN =-" my.log
  register: logg
  ignore_errors: true
  changed_when: false
  until: logg.rc == 0
  retries: 60
  delay: 2

Это будет повторяться в течение примерно 2 минут (60 раз с задержкой в ​​2 секунды между попытками).

Обратите внимание, что мне пришлось изменить вашу команду grep, потому что в противном случае ведущий - в вашей строке поиска заставит grep интерпретировать это как параметр командной строки.

...