Проверьте, не старше ли файл 20 часов в ansible - PullRequest
1 голос
/ 11 июля 2020

Я могу получить метку времени файла, используя модуль Ansible stat.

- stat:
    path: "/var/test.log"
  register: filedets

- debug:
    msg: "{{ filedets.stat.mtime }}"

Вышеупомянутое печатает mtime как 1594477594.631616, что трудно понять.

Я хочу sh, чтобы узнать, как мне выполнить проверку состояния when, чтобы узнать, не старше ли файл 20 часов?

Ответы [ 2 ]

3 голосов
/ 11 июля 2020
- stat:
    path: "/var/test.log"
  register: filedets

- debug:
    msg: "{{ (ansible_date_time.epoch|float - filedets.stat.mtime ) > (20 * 3600) }}"
2 голосов
/ 11 июля 2020

Вы также можете выполнить такого рода задачи, не выполняя никаких вычислений, используя find и его параметр age:

In В вашем случае вам понадобится отрицательное значение для age:

Выберите файлы, возраст которых равен указанному времени или превышает его. Используйте отрицательный возраст, чтобы найти файлы, равные или меньше указанного времени. Вы можете выбрать секунды, минуты, часы, дни или недели, указав первую букву любого из этих слов (например, «1w»).

Источник: https://docs.ansible.com/ansible/latest/modules/find_module.html#parameter -age

Учитывая сценарий:

- hosts: all
  gather_facts: no
  
  tasks:
    - file:
        path: /var/test.log
        state: touch

    - find:
        paths: /var
        pattern: 'test.log'
        age: -20h
      register: test_log

    - debug:
        msg: "The file is exactly 20 hours old or less"
      when: test_log.files | length > 0 

    - file:
       path: /var/test.log
       state: touch
       modification_time: '202007102230.00'

    - find:
        paths: /var
        pattern: 'test.log'
        age: -20h
      register: test_log

    - debug:
        msg: "The file is exactly 20 hours old or less"
      when: test_log.files | length > 0 

Это дает резюме:

PLAY [all] **********************************************************************************************************

TASK [file] *********************************************************************************************************
changed: [localhost]

TASK [find] *********************************************************************************************************
ok: [localhost]

TASK [debug] ********************************************************************************************************
ok: [localhost] => {
    "msg": "The file is exactly 20 hours old or less"
}

TASK [file] *********************************************************************************************************
changed: [localhost]

TASK [find] *********************************************************************************************************
ok: [localhost]

TASK [debug] ********************************************************************************************************
skipping: [localhost]

PLAY RECAP **********************************************************************************************************
localhost                  : ok=5    changed=2    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...