react-project/deploy-traefik.yml
2024-02-28 12:42:50 +02:00

87 lines
2.4 KiB
YAML

- name: Deploy Traefik Reverse Proxy
hosts: all
remote_user: root
pre_tasks:
- name: "Assert config_dir is provided and not empty"
assert:
that:
- config_dir is not undefined and config_dir != ""
tasks:
##
- name: "Create config directory"
file:
path: "{{ config_dir }}"
state: directory
recurse: yes
- name: "Create config sub-directory certs"
file:
path: "{{ config_dir }}/certs"
state: directory
recurse: yes
- name: "Create config sub-directory traefik-config"
file:
path: "{{ config_dir }}/traefik-config"
state: directory
recurse: yes
##
- name: "Upload config file: {{ config_dir }}/traefik.toml"
copy:
src: "traefik/traefik.toml"
dest: "{{ config_dir }}/traefik.toml"
- name: "Upload config file: {{ config_dir }}/traefik-config/auth-middleware.yml"
copy:
src: "traefik/auth-middleware.yml"
dest: "{{ config_dir }}/traefik-config/auth-middleware.yml"
- name: "Upload config file: {{ config_dir }}/traefik-config/certificates.yml"
copy:
src: "traefik/certificates.yml"
dest: "{{ config_dir }}/traefik-config/certificates.yml"
##
- name: "Check if \"{{ config_dir }}/certs/cert.pem\" file exists"
stat:
path: "{{ config_dir }}/certs/cert.pem"
register: certfile
- name: "copy file: \"{{ config_dir }}/certs/cert.pem\" if it doesn't exist"
copy:
src: traefik/cert.pem
dest: "{{ config_dir }}/certs/cert.pem"
when: not certfile.stat.exists
- name: "Check if \"{{ config_dir }}/certs/key.pem\" file exists"
stat:
path: "{{ config_dir }}/certs/key.pem"
register: keyfile
- name: "copy file: \"{{ config_dir }}/certs/key.pem\" if it doesn't exist"
copy:
src: traefik/key.pem
dest: "{{ config_dir }}/certs/key.pem"
when: not keyfile.stat.exists
##
- name: Execute docker-compose
shell: cd "{{ config_dir }}" && docker-compose down
ignore_errors: true
- name: "Upload docker-compose template"
template:
src: templates/docker-compose-traefik.yml
dest: "{{ config_dir }}/docker-compose.yml"
- name: "Create traefik docker network"
shell: docker network create --driver=bridge --subnet=172.28.0.0/16 --ip-range=172.28.5.0/24 --gateway=172.28.5.254 traefik_http
ignore_errors: yes
- name: Execute docker-compose
shell: cd "{{ config_dir }}" && docker-compose up -d