commit c1bc15d0a9130846e8e90a56df164840fa6d8a1f Author: William Date: Mon Jun 7 23:18:38 2021 +0200 Playbook d'installation de Traefik. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a80359c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/playbook.retry +/hosts.ini diff --git a/hosts.example.ini b/hosts.example.ini new file mode 100644 index 0000000..89b6318 --- /dev/null +++ b/hosts.example.ini @@ -0,0 +1,11 @@ +[webservers] +example.com + +[webservers:vars] +ansible_python_interpreter=/usr/bin/python3 + +user=ubuntu +group=docker +path=/srv/traefik + +acme_email=admin@example.com diff --git a/playbook.yml b/playbook.yml new file mode 100644 index 0000000..a629167 --- /dev/null +++ b/playbook.yml @@ -0,0 +1,48 @@ +--- +- name: Install traefik + hosts: webservers + become: yes + + tasks: + - name: Create directory + file: + path: "{{ path }}" + state: directory + owner: "{{ user }}" + group: "{{ group }}" + + - name: Create acme file + file: + path: "{{ path }}/acme.json" + state: touch + mode: 0600 + owner: "{{ user }}" + group: "{{ group }}" + + - name: Add config file + template: + src: traefik.toml.j2 + dest: "{{ path }}/traefik.toml" + mode: 0600 + owner: "{{ user }}" + group: "{{ group }}" + + - name: Create network + docker_network: + name: web + + - name: Create container + docker_container: + name: traefik + image: traefik:2.4 + restart_policy: unless-stopped + recreate: true + networks: + - name: web + ports: + - "80:80" + - "443:443" + volumes: + - "{{ path }}/traefik.toml:/etc/traefik/traefik.toml" + - "{{ path }}/acme.json:/acme.json" + - /var/run/docker.sock:/var/run/docker.sock diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..6c1329b --- /dev/null +++ b/readme.md @@ -0,0 +1,17 @@ +# Ansible: Setup Traefik v2.x + +This playbook installs Traefik on your server. + +## Installing + +Copy then change values of hosts example file + +```bash +$ cp hosts.example.ini hosts.ini +``` + +Then run the playbook: + +```bash +$ ansible-playbook -i hosts.ini playbook.yml +``` diff --git a/traefik.toml.j2 b/traefik.toml.j2 new file mode 100644 index 0000000..a16263b --- /dev/null +++ b/traefik.toml.j2 @@ -0,0 +1,15 @@ +[entryPoints] + [entryPoints.http] + address = ":80" + [entryPoints.https] + address = ":443" + +[providers.docker] + network = "web" + endpoint = "unix:///var/run/docker.sock" + +[certificatesResolvers.letsencrypt.acme] + email = "{{ acme_email }}" + storage = "acme.json" + [certificatesResolvers.letsencrypt.acme.httpChallenge] + entryPoint = "http"