Veröffentlicht 29. März 20214 j Hey, ich stehe vor folgendem Problem: Ich möchte mit Ansible Backups in Ordnern speichern. Diese Ordner bekommen das aktuelle Datum als Namen. Diese möchte ich dann später löschen, wenn Sie älter als X Tage sind. Sprich immer wenn ich das Playbook ausführe, sollen alle Ordner an diesem Pfad gelöscht werden, die älter als Tag X sind. Hat jemand eine Idee, wie ich das hinbekomme? Erstellt werden die Ordner nach folgendem Muster: (Erstmal nur das erzeugen der Datei, mit dem kopieren klappt es ja aber nach dem gleichen Prinzip später) --- - hosts: server_debian become: yes tasks: - name: Ordner mit Datumsname anlegen file: path: /etc/Datum/{{ ansible_date_time.date }} state: directory force: no - name: backup-file mit Uhrzeit anlegen file: path: /etc/Datum/{{ ansible_date_time.date }}/{{ ansible_date_time.time }} state: touch Ich hatte mir erstmal die Lösung zurecht gebastelt, aber die löscht dann nur alle Ordner die wirklich 14 Tage alt sind und nicht älter: --- - hosts: server_debian become: yes tasks: - set - name: Datum file: path: /etc/Datum/{{ '%Y-%m-%d' | strftime( ( ansible_date_time['epoch'] | int ) - ( 86400 * 14 ) ) }} state: absent
29. März 20214 j Versuchs mal mit dem Modul "find" + dem Parameter "age". Siehe hier: https://docs.ansible.com/ansible/2.3/find_module.html -> "Select files whose age is equal to or greater than the specified time" Und eine praktische Anwendung hier: https://stackoverflow.com/questions/45855743/double-conditional-delete-all-folders-older-than-3-days-but-keep-a-minimum-of/45857847 (etwas anderer Fall, aber von der Syntax her vergleichbar) Sollte dann in etwa sowas hier sein: --- - hosts: all tasks: - name: find all files that are older than three days find: paths: "/path/to/folder/" age: "3d" file_type: directory register: dirsOlderThan3d - name: remove older than 3 days file: path: "{{ item.path }}" state: absent with_items: "{{ (dirsOlderThan3d.files }} (schnelles c+p keine Garantie für Funktionalität)
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.