From bff88aa1ac15dd3bb0f29c5bc176eba6cefb8ce4 Mon Sep 17 00:00:00 2001 From: Sudoix Date: Wed, 8 Jan 2025 10:17:25 +0100 Subject: [PATCH] add keepalived ansible role --- .../roles/keepalived/files/check_nginx.sh | 7 ++++++ deployment/roles/keepalived/tasks/main.yml | 25 +++++++++++++++++++ .../keepalived/templates/keepalived.conf.j2 | 24 ++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 deployment/roles/keepalived/files/check_nginx.sh create mode 100644 deployment/roles/keepalived/tasks/main.yml create mode 100644 deployment/roles/keepalived/templates/keepalived.conf.j2 diff --git a/deployment/roles/keepalived/files/check_nginx.sh b/deployment/roles/keepalived/files/check_nginx.sh new file mode 100644 index 00000000..c52e170c --- /dev/null +++ b/deployment/roles/keepalived/files/check_nginx.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +STATUS_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost) + +if [ $STATUS_CODE -lt 200 ] || [ $STATUS_CODE -ge 400 ]; then + exit 1 +fi diff --git a/deployment/roles/keepalived/tasks/main.yml b/deployment/roles/keepalived/tasks/main.yml new file mode 100644 index 00000000..d451ef32 --- /dev/null +++ b/deployment/roles/keepalived/tasks/main.yml @@ -0,0 +1,25 @@ +- name: Install keepalived packages + apt: + name: + - keepalived + state: latest + update_cache: true + +- name: Copy check_nginx script to {{ vrrp_check_nginx_script_path }} + copy: + src: check_nginx.sh + dest: "{{ vrrp_check_nginx_script_path }}" + owner: root + group: root + mode: 0755 + +- name: Copy keepalived config + template: + src: keepalived.conf.j2 + dest: /etc/keepalived/keepalived.conf + +- name: Restart and enable the keepalived service + ansible.builtin.service: + name: keepalived + state: restarted + enabled: yes diff --git a/deployment/roles/keepalived/templates/keepalived.conf.j2 b/deployment/roles/keepalived/templates/keepalived.conf.j2 new file mode 100644 index 00000000..e4e3e42e --- /dev/null +++ b/deployment/roles/keepalived/templates/keepalived.conf.j2 @@ -0,0 +1,24 @@ +vrrp_script chk_nginx { + script "{{ vrrp_check_nginx_script_path }}" + interval 5 + timeout 3 + weight 2 +} + +vrrp_instance VI_1 { + state MASTER + interface {{ vrrp_interface }} + virtual_router_id 51 + priority 100 + advert_int 1 + authentication { + auth_type PASS + auth_pass {{ vrrp_auth_password }} + } + virtual_ipaddress { + {{ vrrp_virtual_ip }} dev {{ vrrp_interface }} + } + track_script { + chk_nginx + } +}