Ansible — Хранить N последних директорий и артефактов

Цель:

Есть директория "/opt/application", в которую скачивается архив с приложением и распаковывается в директорию, где в качестве имени используется короткая производная от HASH коммита (8 символов). И создается символическая ссылка на данную директорию. Необходимо хранить только 3 последних версии приложения, как директорий, так и архивов, а так же не удалять директории которые называются:

  • logs
  • media

Так же удаление должно проходить используя regex, чтобы в будущем не удалить директории, которые могут быть созданы.

Playbook:

---
- hosts: all
  tasks:
    - name: Find all application directories
      find:
        paths: "/opt/application/"
        file_type: directory
        use_regex: yes
        patterns:
          - '[a-z0-9]{8,8}'
        excludes: 'logs,media'
      register: dirs

    - name: Keep only the last 3 directories
      file:
        path: "{{ item }}"
        state: absent
      with_items: "{{ (dirs.files | sort(attribute='atime', reverse=True))[3:] | map(attribute='path') | list }}"

    - name: Find application artifacts
      find:
        paths: "/opt/application/"
        file_type: file
        use_regex: yes
        patterns:
          - '^[a-z0-9]{8,8}.tar.gz$'
      register: artifacts

    - name: Keep only the last 3 artifacts
      file:
        path: "{{ item }}"
        state: absent
      with_items: "{{ (artifacts.files | sort(attribute='atime', reverse=True))[3:] | map(attribute='path') | list }}"
0 0 vote
Рейтинг статьи

Метки: Метки

Подписаться
Уведомление о
guest
0 комментариев
Inline Feedbacks
View all comments