130 lines
3.2 KiB
YAML
130 lines
3.2 KiB
YAML
---
|
|
- name: Déploiement Docker et application via Docker Compose
|
|
hosts: servers
|
|
become: true
|
|
gather_facts: true
|
|
|
|
vars:
|
|
git_repo: "https://gite.slm-lab.net/Chabdeltsang/Neah-Enkun.git"
|
|
git_dest: "/opt/Neah-Enkun"
|
|
git_branch: "master"
|
|
traefik_service_name: "traefik"
|
|
packages:
|
|
- jq
|
|
docker_packages:
|
|
- apt-transport-https
|
|
- ca-certificates
|
|
- curl
|
|
- gnupg-agent
|
|
- software-properties-common
|
|
docker_core_packages:
|
|
- docker-ce
|
|
- docker-ce-cli
|
|
- containerd.io
|
|
- docker-compose
|
|
|
|
pre_tasks:
|
|
- name: Mise à jour des paquets
|
|
apt:
|
|
update_cache: true
|
|
cache_valid_time: 3600
|
|
upgrade: dist
|
|
register: apt_update_status
|
|
until: apt_update_status is success
|
|
retries: 3
|
|
delay: 5
|
|
|
|
tasks:
|
|
- name: Installation de packages supplémentaires
|
|
apt:
|
|
name: "{{ packages }}"
|
|
state: present
|
|
register: pkg_status
|
|
until: pkg_status is success
|
|
retries: 3
|
|
delay: 5
|
|
|
|
- name: Installer les dépendances pour Docker
|
|
apt:
|
|
name: "{{ docker_packages }}"
|
|
state: present
|
|
register: pkg_status
|
|
until: pkg_status is success
|
|
retries: 3
|
|
delay: 5
|
|
|
|
- name: Ajouter la clé GPG officielle de Docker
|
|
apt_key:
|
|
url: https://download.docker.com/linux/ubuntu/gpg
|
|
state: present
|
|
register: gpg_status
|
|
until: gpg_status is success
|
|
retries: 3
|
|
delay: 5
|
|
|
|
- name: Ajouter le dépôt Docker
|
|
apt_repository:
|
|
repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable"
|
|
state: present
|
|
update_cache: true
|
|
register: repo_status
|
|
until: repo_status is success
|
|
retries: 3
|
|
delay: 5
|
|
|
|
- name: Installer Docker et ses composants
|
|
apt:
|
|
name: "{{ docker_core_packages }}"
|
|
state: present
|
|
register: docker_status
|
|
until: docker_status is success
|
|
retries: 3
|
|
delay: 5
|
|
|
|
- name: S'assurer que le service Docker est démarré et activé
|
|
service:
|
|
name: docker
|
|
state: started
|
|
enabled: true
|
|
register: docker_service_status
|
|
until: docker_service_status is success
|
|
retries: 3
|
|
delay: 5
|
|
|
|
- name: Cloner le dépôt Git
|
|
git:
|
|
repo: "{{ git_repo }}"
|
|
dest: "{{ git_dest }}"
|
|
version: "{{ git_branch }}"
|
|
update: true
|
|
force: true
|
|
register: git_status
|
|
until: git_status is success
|
|
retries: 3
|
|
delay: 5
|
|
|
|
#TODO: Supprimer en prod
|
|
- name: Supprimer tous les conteneurs
|
|
command: "docker compose down -v"
|
|
register: rm_status
|
|
until: rm_status is success
|
|
retries: 3
|
|
delay: 5
|
|
ignore_errors: yes
|
|
|
|
- name: Lancer le service Traefik
|
|
command: "docker compose up -d --build --remove-orphans {{ traefik_service_name }}"
|
|
args:
|
|
chdir: "{{ git_dest }}"
|
|
register: traefik_status
|
|
until: traefik_status is success
|
|
retries: 3
|
|
delay: 5
|
|
changed_when: traefik_status.rc == 0
|
|
|
|
handlers:
|
|
- name: Redémarrer Docker
|
|
service:
|
|
name: docker
|
|
state: restarted
|