homelab_automation/ansible/playbooks/remove_container_portainer.yml
Bruno Charest 8affa0f8b7
Some checks failed
Tests / Backend Tests (Python) (3.10) (push) Has been cancelled
Tests / Backend Tests (Python) (3.11) (push) Has been cancelled
Tests / Backend Tests (Python) (3.12) (push) Has been cancelled
Tests / Frontend Tests (JS) (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Tests / All Tests Passed (push) Has been cancelled
feat: Implement container customization and add Portainer installation/removal playbooks.
2025-12-27 11:02:24 -05:00

156 lines
4.9 KiB
YAML

---
# Playbook pour la suppression de Portainer CE
# Ce playbook annule les actions du playbook d'installation
- name: "Suppression de Portainer CE"
hosts: all
become: true
vars:
# Configuration identique au playbook d'installation
portainer_repo_dir: "dev/git/outils/dockers/portainer"
portainer_data_dir: "/DOCKER_CONFIG/portainer"
# Ports à fermer dans le firewall
firewall_ports:
- 8000
- 9000
- 9443
tasks:
# Arrêter et supprimer le conteneur Portainer
- name: "Vérifier si le conteneur Portainer existe"
command: "docker ps -a --filter name=portainer --format {% raw %}'{{.Names}}'{% endraw %}"
register: portainer_containers
changed_when: false
ignore_errors: true
- name: "Arrêter le conteneur Portainer s'il est en cours d'exécution"
command: "docker stop portainer"
when: portainer_containers.stdout | length > 0
ignore_errors: true
- name: "Supprimer le conteneur Portainer"
command: "docker rm portainer"
when: portainer_containers.stdout | length > 0
ignore_errors: true
- name: "Vérifier si l'image Portainer existe"
command: "docker images -q portainer/portainer-ce:latest"
register: portainer_images
changed_when: false
failed_when: false
- name: "Supprimer l'image Portainer (optionnel)"
command: "docker rmi portainer/portainer-ce:latest"
when: portainer_images.stdout | length > 0
ignore_errors: true
# Supprimer les règles firewall
# Support pour UFW (Ubuntu/Debian)
- name: "Détecter si UFW est installé"
command: "which ufw"
register: ufw_check
changed_when: false
failed_when: false
- name: "Supprimer les règles UFW pour Portainer"
ufw:
rule: reject
port: "{{ item }}"
proto: tcp
delete: yes
loop: "{{ firewall_ports }}"
when: ufw_check.rc == 0
ignore_errors: true
- name: "Recharger UFW"
ufw:
state: reloaded
when: ufw_check.rc == 0
# Support pour Firewalld (CentOS/RHEL/Fedora)
- name: "Détecter si Firewalld est installé"
command: "which firewall-cmd"
register: firewalld_check
changed_when: false
failed_when: false
- name: "Supprimer les règles Firewalld pour Portainer"
firewalld:
port: "{{ item }}/tcp"
permanent: true
state: disabled
loop: "{{ firewall_ports }}"
when: firewalld_check.rc == 0
ignore_errors: true
- name: "Recharger Firewalld"
command: "firewall-cmd --reload"
when: firewalld_check.rc == 0
ignore_errors: true
# Support pour iptables (fallback générique)
- name: "Détecter si iptables est disponible"
command: "which iptables"
register: iptables_check
changed_when: false
failed_when: false
- name: "Vérifier si la règle iptables existe pour Portainer"
command: "iptables -C INPUT -p tcp --dport {{ item }} -j DROP"
register: iptables_rule_check
loop: "{{ firewall_ports }}"
when: iptables_check.rc == 0 and ufw_check.rc != 0 and firewalld_check.rc != 0
changed_when: false
failed_when: false
- name: "Supprimer les règles iptables pour Portainer"
command: "iptables -D INPUT -p tcp --dport {{ item.item }} -j DROP"
loop: "{{ iptables_rule_check.results | default([]) }}"
when:
- iptables_check.rc == 0
- ufw_check.rc != 0
- firewalld_check.rc != 0
- item.rc == 0
changed_when: true
failed_when: false
# Supprimer les répertoires et fichiers
- name: "Supprimer le répertoire du dépôt Git Portainer"
file:
path: "{{ portainer_repo_dir }}"
state: absent
ignore_errors: true
- name: "Supprimer le répertoire de données Portainer"
file:
path: "{{ portainer_data_dir }}"
state: absent
ignore_errors: true
- name: "Supprimer le répertoire parent s'il est vide"
file:
path: "{{ portainer_repo_dir | dirname }}"
state: absent
ignore_errors: true
# Vérification finale
- name: "Vérifier que Portainer a été complètement supprimé"
command: "docker ps -a --filter name=portainer --format {% raw %}'{{.Names}}'{% endraw %}"
register: final_check
changed_when: false
ignore_errors: true
- name: "Message de confirmation de suppression"
debug:
msg: |
Portainer CE a été complètement supprimé !
- Conteneur arrêté et supprimé
- Règles firewall supprimées (UFW/Firewalld/iptables)
- Répertoires de données supprimés
- Dépôt Git supprimé
{% if final_check.stdout | length == 0 %}
[SUCCESS] Suppression réussie : Aucun conteneur Portainer trouvé
{% else %}
[WARNING] Attention : Certains conteneurs Portainer peuvent encore exister
{% endif %}