diff --git a/keepalived/README.md b/keepalived/README.md new file mode 100644 index 00000000..1768d403 --- /dev/null +++ b/keepalived/README.md @@ -0,0 +1,16 @@ +# keepalived + +Install Keepalived + +## Tasks + +Everything is in the `tasks/main.yml` file. + +## Available variables + +* `keepalived_interface` : Interface used by vrrpd instance (default is the interface reported by ansible_default_ipv4.interface) +* `keepalived_role` : This can be either master or backup (default: `master`) +* `keepalived_router_id` : Number between 0 and 255 used to differentiate multiple instances of vrrpd (default: `42`) +* `keepalived_priority` : Used for electing MASTER, highest priority wins (default : `100` when keepalived_role is set to `master` otherwise `50`) +* `keepalived_ip` : Address added or deleted on change to MASTER/BACKUP. This is mandatory (default: none) +* `keepalived_password` : Password for accessing vrrpd. Should be the same on all machines. This is mandatory (default: none) diff --git a/keepalived/defaults/main.yml b/keepalived/defaults/main.yml new file mode 100644 index 00000000..bc1294d4 --- /dev/null +++ b/keepalived/defaults/main.yml @@ -0,0 +1,6 @@ +keepalived_interface: "{{ ansible_default_ipv4.interface }}" +keepalived_role: "master" +keepalived_router_id: "42" +keepalived_priority: "{% if keepalived_role == 'master' %}100{% else %}50{% endif %}" +keepalived_ip: "" +keepalived_password: "" diff --git a/keepalived/handlers/main.yml b/keepalived/handlers/main.yml new file mode 100644 index 00000000..8d7db5d8 --- /dev/null +++ b/keepalived/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: restart keepalived + systemd: + name: keepalived + state: restarted diff --git a/keepalived/tasks/main.yml b/keepalived/tasks/main.yml new file mode 100644 index 00000000..6620137f --- /dev/null +++ b/keepalived/tasks/main.yml @@ -0,0 +1,18 @@ +- name: install Keepalived service + apt: + pkg: keepalived + state: present + +- name: generate Keepalived configuration + template: + src: keepalived.conf.j2 + dest: /etc/keepalived/keepalived.conf + mode: 0644 + notify: restart keepalived + +- name: enable and restart Keepalived service + systemd: + name: keepalived + daemon_reload: yes + state: started + enabled: yes diff --git a/keepalived/templates/keepalived.conf.j2 b/keepalived/templates/keepalived.conf.j2 new file mode 100644 index 00000000..4c439871 --- /dev/null +++ b/keepalived/templates/keepalived.conf.j2 @@ -0,0 +1,29 @@ +# {{ ansible_managed }} + +vrrp_script chk_sshd { + script "/usr/bin/pkill -0 sshd" + interval 5 + weight -4 + fall 2 + rise 1 +} + +vrrp_instance vrrp { + interface {{ keepalived_interface | mandatory }} + virtual_router_id {{ keepalived_router_id | mandatory }} + state {{ keepalived_role | upper }} + priority {{ keepalived_priority }} + + virtual_ipaddress { + {{ keepalived_ip | mandatory }} + } + + authentication { + auth_type PASS + auth_pass {{ keepalived_password | mandatory }} + } + + track_script { + chk_sshd + } +}