--- - name: Konserwacja systemu i czyszczenie Docker hosts: all become: true gather_facts: false tasks: # ========================================== # BEZBŁĘDNE SPRAWDZENIE CZY HOST JEST WŁĄCZONY # ========================================== - name: Próba połączenia SSH (check online status) block: - name: Sprawdzenie portu SSH ansible.builtin.wait_for: host: "{{ ansible_host | default(inventory_hostname) }}" port: "{{ ansible_port | default(22) }}" state: started delay: 0 timeout: 3 delegate_to: localhost - name: Ustawienie statusu ONLINE ansible.builtin.set_fact: host_is_online: true rescue: - name: Ustawienie statusu OFFLINE (bez generowania błędu) ansible.builtin.set_fact: host_is_online: false # ========================================== # ZBIERANIE FAKTÓW (tylko dla aktywnych hostów) # ========================================== - name: Zbieranie faktów systemowych ansible.builtin.setup: when: host_is_online # ========================================== # CZYSZCZENIE SYSTEMOWE # ========================================== - name: Czyszczenie Apt (Debian/Ubuntu) when: - host_is_online - ansible_os_family | default('') == 'Debian' block: - name: Usuwanie niepotrzebnych pakietów (autoremove) ansible.builtin.apt: autoremove: true - name: Czyszczenie cache apt (autoclean) ansible.builtin.apt: autoclean: true - name: Ograniczenie wielkości logów journald do 100MB ansible.builtin.command: journalctl --vacuum-size=100M changed_when: false - name: Czyszczenie Apk (Alpine) when: - host_is_online - ansible_os_family | default('') == 'Alpine' block: - name: Czyszczenie cache apk ansible.builtin.command: apk cache clean changed_when: false # ========================================== # CZYSZCZENIE DOCKERA # ========================================== - name: Sprawdzenie czy Docker jest zainstalowany ansible.builtin.command: which docker register: docker_check failed_when: false changed_when: false when: host_is_online - name: Czyszczenie nieużywanych zasobów Dockera when: - host_is_online - docker_check.rc is defined - docker_check.rc == 0 block: - name: Docker system prune (obrazy, sieci, kontenery, wolumeny) ansible.builtin.command: docker system prune -af --volumes register: docker_prune changed_when: docker_prune.stdout != "" - name: Wyświetlenie odzyskanego miejsca ansible.builtin.debug: var: docker_prune.stdout_lines # ========================================== # PODSUMOWANIE # ========================================== - name: Informacja o stanie ansible.builtin.debug: msg: - "Host: {{ inventory_hostname }}" - "Status: {{ '🔴 OFFLINE' if not host_is_online else '✅ WYKONANO KONSERWACJĘ' }}"