Ansible - Как перебрать команду с элементами, пока зарегистрированные переменные не будут равны? - PullRequest
1 голос
/ 18 июня 2019

Я пытаюсь найти, имел ли файл какие-либо записи за последние 15 секунд.

- name: 'Check File for Writes'
  shell: tail -n 50 /path/to/some/file | sha1sum
  loop:
    - 1
    - 2
  register: file_writes
  loop_control:
    pause: 15
  until: file_writes.results[0].stdout == file_writes.results[1].stdout

Ожидаемое поведение следующее:1.) Эта задача будет запускать команду «tail» один раз
2.) Затем будет ждать 15 секунд
3.) Затем снова запустите команду «tail»
4.) Выводы обоиххвостовые команды будут зарегистрированы в 'file_writes'.results
5.) Шаги с 1 по 4 будут повторяться до тех пор, пока хэш первой команды' tail 'не совпадет с хешем второй команды' tail '.

Фактическийрезультат:

'объект dict' не имеет атрибутов результатов.

1 Ответ

0 голосов
/ 19 июня 2019

Можно поместить всю логику в скрипт

- shell: "hash0=$(tail -n 50 /path/to/some/file | sha1sum);
          sleep 15;
          hash1=$(tail -n 50 /path/to/some/file | sha1sum);
          while [ \"$hash0\" != \"$hash1\" ]; do
               sleep 15;
               hash0=$hash1;
               hash1=$(tail -n 50 /path/to/some/file | sha1sum);
          done;"
...