Цель:
Есть директория "/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 }}"