93 lines
No EOL
2.1 KiB
YAML
93 lines
No EOL
2.1 KiB
YAML
---
|
|
- name: Install minimal dependencies
|
|
apt:
|
|
name:
|
|
- curl
|
|
- ca-certificates
|
|
state: present
|
|
update_cache: yes
|
|
when: ansible_os_family == "Debian"
|
|
|
|
- name: Create directories
|
|
file:
|
|
path: "{{ item }}"
|
|
state: directory
|
|
mode: '0755'
|
|
loop:
|
|
- "{{ traefik_base_dir }}/{{ new_color }}"
|
|
- "{{ traefik_base_dir }}/{{ new_color }}/config"
|
|
- "{{ traefik_base_dir }}/{{ new_color }}/logs"
|
|
|
|
- name: Create acme.json
|
|
file:
|
|
path: "{{ traefik_base_dir }}/{{ new_color }}/acme.json"
|
|
state: touch
|
|
mode: '0600'
|
|
|
|
- name: Download binary from Forgejo
|
|
get_url:
|
|
url: "{{ forgejo_url }}/{{ forgejo_owner }}/{{ forgejo_repo }}/releases/download/{{ traefik_version }}/traefik-{{ traefik_version }}-linux-amd64.tar.gz"
|
|
dest: "/tmp/traefik_{{ new_color }}.tar.gz"
|
|
mode: '0644'
|
|
force: yes
|
|
|
|
- name: Extract binary
|
|
unarchive:
|
|
src: "/tmp/traefik_{{ new_color }}.tar.gz"
|
|
dest: "{{ traefik_base_dir }}/{{ new_color }}"
|
|
remote_src: yes
|
|
|
|
- name: Make executable
|
|
file:
|
|
path: "{{ traefik_base_dir }}/{{ new_color }}/traefik"
|
|
mode: '0755'
|
|
|
|
- name: Copy static config
|
|
template:
|
|
src: traefik.yml.j2
|
|
dest: "{{ traefik_base_dir }}/{{ new_color }}/config/traefik.yml"
|
|
mode: '0644'
|
|
|
|
- name: Copy dynamic config
|
|
template:
|
|
src: dynamic.yml.j2
|
|
dest: "{{ traefik_base_dir }}/{{ new_color }}/config/dynamic.yml"
|
|
mode: '0644'
|
|
|
|
- name: Create systemd service
|
|
template:
|
|
src: traefik.service.j2
|
|
dest: "/etc/systemd/system/traefik-{{ new_color }}.service"
|
|
mode: '0644'
|
|
|
|
- name: Reload systemd
|
|
systemd:
|
|
daemon_reload: yes
|
|
|
|
- name: Start new instance
|
|
systemd:
|
|
name: "traefik-{{ new_color }}"
|
|
state: started
|
|
enabled: yes
|
|
|
|
- name: Wait for health check
|
|
uri:
|
|
url: "http://localhost:8080/ping"
|
|
status_code: 200
|
|
register: result
|
|
until: result.status == 200
|
|
retries: 30
|
|
delay: 2
|
|
|
|
- name: Stop old instance
|
|
systemd:
|
|
name: "traefik-{{ current_color }}"
|
|
state: stopped
|
|
enabled: no
|
|
when: current_color != new_color
|
|
ignore_errors: yes
|
|
|
|
- name: Update color marker
|
|
copy:
|
|
content: "{{ new_color }}"
|
|
dest: "{{ current_color_file }}" |