From 97676d64853533885db93ce7d57061280e097cf3 Mon Sep 17 00:00:00 2001 From: Bertrand Lanson Date: Wed, 31 Jan 2024 17:38:13 +0100 Subject: [PATCH] feat(install): make haproxy usersystem user, ensure haproxy stays up if upgraded in bulk --- defaults/main.yml | 2 +- tasks/install_host.yml | 26 ++++++++++++++++++++++++++ tasks/prerequisites.yml | 1 + vars/main.yml | 2 ++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/defaults/main.yml b/defaults/main.yml index 5c6b761..2647a5b 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,7 +1,7 @@ --- # defaults file for deploy_haproxy deploy_haproxy_deploy_method: host # deployment method, either host or docker -deploy_haproxy_version: latest +deploy_haproxy_version: "2.6" # Options from the "default" config block in haproxy.cfg # The default values here are usually set, but you can change any of them. diff --git a/tasks/install_host.yml b/tasks/install_host.yml index 75ecc36..583b0ef 100644 --- a/tasks/install_host.yml +++ b/tasks/install_host.yml @@ -7,3 +7,29 @@ manage_repositories_enable_default_repo: false manage_repositories_enable_custom_repo: true manage_repositories_custom_repo: "{{ deploy_haproxy_repository[ansible_distribution|lower] }}" + +- name: "Get service haproxy" + ansible.builtin.service_facts: + +- name: "Install from repostories" + throttle: 1 + block: + - name: "Install haproxy version: {{ deploy_haproxy_version }}" + ansible.builtin.apt: + update_cache: yes + name: "haproxy{{ '='~deploy_haproxy_version~'*' if deploy_haproxy_version != 'latest' }}" + state: "{{ 'present' if deploy_haproxy_version != 'latest' else deploy_haproxy_version}}" + allow_downgrade: true + cache_valid_time: 3600 + + - name: "Ensure haproxy is running" + ansible.builtin.service: + name: "{{ deploy_haproxy_service_name }}" + state: started + register: _haproxy_service_health + until: _haproxy_service_health.status.ActiveState == "active" + retries: 15 + delay: 2 + when: + ansible_facts.services[deploy_haproxy_service_name~'.service'] is defined + and ansible_facts.services[deploy_haproxy_service_name~'.service']['state'] == 'running' diff --git a/tasks/prerequisites.yml b/tasks/prerequisites.yml index 7fc6a41..f728e25 100644 --- a/tasks/prerequisites.yml +++ b/tasks/prerequisites.yml @@ -15,6 +15,7 @@ home: "{{ deploy_haproxy_chroot }}" create_home: false shell: /bin/false + system: true state: present - name: "Create directory {{ deploy_haproxy_config_dir }}" diff --git a/vars/main.yml b/vars/main.yml index b9ba8d3..76d1f0a 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -5,6 +5,8 @@ deploy_haproxy_socket: /var/lib/haproxy/stats deploy_haproxy_chroot: /var/lib/haproxy deploy_haproxy_user: haproxy deploy_haproxy_group: haproxy +deploy_haproxy_service_name: "haproxy{{ '_container' if deploy_haproxy_deploy_method == 'docker' }}" +deploy_haproxy_docker_image: haproxy deploy_haproxy_version_map: latest: "2.9"