110 lines
2.8 KiB
YAML
110 lines
2.8 KiB
YAML
---
|
|
- name: Deploy Dockerized WordPress and MySQL using images from GitLab Registry
|
|
hosts: all
|
|
gather_facts: yes
|
|
remote_user: root
|
|
|
|
vars:
|
|
wordpress_image: "gitlab.noris.net:5050/smartika/aop1-projekte:latest"
|
|
db_image: "mysql:8.0"
|
|
compose_dir: "/opt/wordpress"
|
|
compose_file: "/opt/wordpress/docker-compose.yaml"
|
|
|
|
tasks:
|
|
- name: Ensure pip is installed
|
|
apt:
|
|
name: python3-pip
|
|
state: present
|
|
become: yes
|
|
|
|
- name: Install python3-requests via apt
|
|
apt:
|
|
name: python3-requests
|
|
state: present
|
|
become: yes
|
|
|
|
- name: Install prerequisites for Docker
|
|
apt:
|
|
name:
|
|
- ca-certificates
|
|
- curl
|
|
- gnupg
|
|
- lsb-release
|
|
state: present
|
|
update_cache: yes
|
|
|
|
- name: Create Docker keyrings directory
|
|
file:
|
|
path: /etc/apt/keyrings
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: Download Docker GPG key
|
|
get_url:
|
|
url: https://download.docker.com/linux/debian/gpg
|
|
dest: /etc/apt/keyrings/docker.asc
|
|
mode: '0644'
|
|
|
|
- name: Remove any broken Docker repo entries
|
|
file:
|
|
path: /etc/apt/sources.list.d/docker.list
|
|
state: absent
|
|
|
|
- name: Add Docker APT repository
|
|
apt_repository:
|
|
repo: "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian {{ ansible_lsb.codename }} stable"
|
|
state: present
|
|
filename: docker
|
|
|
|
- name: Update apt cache
|
|
apt:
|
|
update_cache: yes
|
|
|
|
- name: Install Docker and Compose
|
|
apt:
|
|
name:
|
|
- docker-ce
|
|
- docker-ce-cli
|
|
- containerd.io
|
|
- docker-buildx-plugin
|
|
- docker-compose-plugin
|
|
state: present
|
|
|
|
- name: Create project directory
|
|
file:
|
|
path: "{{ compose_dir }}"
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: Copy Docker Compose files
|
|
copy:
|
|
src: files/
|
|
dest: "{{ compose_dir }}/"
|
|
mode: '0755'
|
|
|
|
- name: Patch Compose to use GitLab WordPress image
|
|
replace:
|
|
path: "{{ compose_file }}"
|
|
regexp: 'image:\s*.*wordpress.*'
|
|
replace: "image: {{ wordpress_image }}"
|
|
|
|
- name: Patch Compose to use official MySQL image
|
|
replace:
|
|
path: "{{ compose_file }}"
|
|
regexp: 'image:\s*.*(mysql|mariadb).*'
|
|
replace: "image: {{ db_image }}"
|
|
|
|
- name: Login to GitLab Docker Registry (optional, if needed)
|
|
command: docker login -u <GITLAB_USERNAME> -p <GITLAB_ACCESS_TOKEN> gitlab.noris.net:5050
|
|
when: docker_login_required | default(false)
|
|
|
|
- name: Pull updated images (WordPress & MySQL)
|
|
command: docker compose pull
|
|
args:
|
|
chdir: "{{ compose_dir }}"
|
|
|
|
- name: Run Docker Compose
|
|
command: docker compose up -d
|
|
args:
|
|
chdir: "{{ compose_dir }}"
|