Files
projet_gestion_commande/ansible/playbook-docker.yml
T

229 lines
6.6 KiB
YAML

---
- name: Installation et configuration du frontend et backend
hosts: backend
become: true
gather_facts: true
tasks:
- name: Update apt cache
apt:
update_cache: yes
cache_valid_time: 3600
- name: Install required packages
apt:
name:
- apt-transport-https
- ca-certificates
- curl
- gnupg
- lsb-release
- software-properties-common
- acl
state: present
- name: Create directory for Docker GPG key
file:
path: /etc/apt/keyrings
state: directory
mode: "0755"
- name: Add Docker GPG key
apt_key:
url: https://download.docker.com/linux/ubuntu/gpg
keyring: /etc/apt/keyrings/docker.gpg
state: present
- name: Get system architecture
command: dpkg --print-architecture
register: system_arch
changed_when: false
- name: Get Ubuntu codename
command: lsb_release -cs
register: ubuntu_codename
changed_when: false
- name: Add Docker repository
apt_repository:
repo: "deb [arch={{ system_arch.stdout }} signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu {{ ubuntu_codename.stdout }} stable"
state: present
filename: docker
- name: Update apt cache after adding repo
apt:
update_cache: yes
- name: Install Docker packages
apt:
name:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
- docker-compose-plugin
state: present
- name: Ensure Docker service is started and enabled
systemd:
name: docker
state: started
enabled: yes
- name: Create docker group
group:
name: "{{ docker_group }}"
state: present
- name: Create docker user
user:
name: "{{ docker_user }}"
group: "{{ docker_group }}"
groups: docker
append: yes
shell: /bin/bash
create_home: yes
state: present
- name: Add ansible user to docker group
user:
name: "{{ ansible_user }}"
groups: docker
append: yes
when: ansible_user is defined
- name: Verify Docker installation
command: docker --version
register: docker_version
changed_when: false
- name: Verify Docker Compose installation
command: docker compose version
register: compose_version
changed_when: false
- name: Display versions
debug:
msg:
- "{{ docker_version.stdout }}"
- "{{ compose_version.stdout }}"
- name: Create frontend directory
ansible.builtin.file:
path: "{{ nginx_frontend_path }}"
state: directory
owner: "{{ docker_user }}"
group: "{{ docker_group }}"
mode: "0755"
- name: Create backend directory
ansible.builtin.file:
path: "{{ backend_dir }}"
state: directory
owner: "{{ docker_user }}"
group: "{{ docker_group }}"
mode: "0755"
- name: Synchronize frontend content (excluding node_modules and .git)
ansible.builtin.synchronize:
src: ../frontend-prep
dest: "{{ nginx_frontend_path }}/"
rsync_opts:
- "--exclude=node_modules"
- "--exclude=.git"
- "--exclude=dist"
- "--exclude=build"
delete: no
recursive: yes
tags: sync_frontend
- name: Set ownership for frontend directory
ansible.builtin.file:
path: "{{ nginx_frontend_path }}"
owner: "{{ docker_user }}"
group: "{{ docker_group }}"
recurse: yes
tags: sync_frontend
- name: Synchronize backend content (excluding node_modules and .git)
ansible.builtin.synchronize:
src: ../backend
dest: "{{ backend_dir }}/"
rsync_opts:
- "--exclude=node_modules"
- "--exclude=.git"
- "--exclude=dist"
- "--exclude=build"
delete: no
recursive: yes
tags: sync_backend
- name: Set ownership for backend directory
ansible.builtin.file:
path: "{{ backend_dir }}"
owner: "{{ docker_user }}"
group: "{{ docker_group }}"
recurse: yes
tags: sync_backend
- name: Copy Docker project
ansible.builtin.copy:
src: ../docker/
dest: "{{ docker_dir }}/"
owner: "{{ docker_user }}"
group: "{{ docker_group }}"
mode: "0755"
- name: Ensure parent directory has correct permissions
ansible.builtin.file:
path: "{{ docker_dir }}"
state: directory
owner: "{{ docker_user }}"
group: "{{ docker_group }}"
mode: "0755"
- name: Set correct permissions for Docker files
ansible.builtin.file:
path: "{{ docker_dir }}"
owner: "{{ docker_user }}"
group: "{{ docker_group }}"
recurse: yes
- name: Set permissions for .env file
ansible.builtin.file:
path: "{{ docker_dir }}/docker/.env"
owner: "{{ docker_user }}"
group: "{{ docker_group }}"
mode: "0640"
ignore_errors: yes
- name: Build Docker project
ansible.builtin.command:
cmd: docker compose -f docker-compose-prod.yml build
chdir: "{{ docker_dir }}/docker"
become: yes
become_user: "{{ docker_user }}"
tags: build
- name: Start Docker project
ansible.builtin.command:
cmd: docker compose -f docker-compose-prod.yml up -d
chdir: "{{ docker_dir }}/docker"
become: yes
become_user: "{{ docker_user }}"
tags: start
- name: Show Docker containers
ansible.builtin.command:
cmd: docker compose ps
chdir: "{{ docker_dir }}/docker"
become: yes
become_user: "{{ docker_user }}"
register: docker_ps
tags: start
- name: Display Docker containers
debug:
var: docker_ps.stdout_lines
tags: start