Skip to content
This repository has been archived by the owner on Feb 8, 2023. It is now read-only.

Keepalived role, supporting multiple vrrp instances

License

Notifications You must be signed in to change notification settings

uZer/ansible-role-keepalived

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ansible-role-keepalived

Build Status

This role installs keepalived from apt/yum repository. Can setup multiple service checks and multiple VIP.

All variables should be configured in host_vars or group_vars.

Dependencies

Should work on Centos, Redhat, Ubuntu, Debian.

Exhaustive usage example

  • Host variables (should be defined in host_vars/...):
keepalived_role:
  "VI_1": "MASTER"              # Can be MASTER or SLAVE
  "VI_2": "MASTER"
  "VI_3": "SLAVE"
  • Group variables (should be defined in group_vars/... per keepalived pod):
keepalived_vrrp_instances:
  "VI_1":
    virtual_router_id: 51       # Will be used as interface label
    master_priority: 100         # Priority. The bigger, the greater
    slave_priority: 50
    shared_iface: eth0
    shared_vips:
      - '10.127.50.3'
    auth_pass: "{{ vault_vrrp_passwords["VI_1"] }}"

  "VI_2":
    virtual_router_id: 52
    master_priority: 100
    slave_priority: 50
    shared_iface: eth0
    shared_vips:
      - '10.127.50.4'
    auth_pass: "{{ vault_vrrp_passwords["VI_2"] }}"

  "VI_3":
    virtual_router_id: 53
    master_priority: 100
    slave_priority: 50
    shared_iface: eth0
    shared_vips:
      - '10.127.50.5'
    auth_pass: "{{ vault_vrrp_passwords["VI_3"] }}"
    checks:
      - chk_nginx
      - chk_keepalived
    settings:
      garp_master_refresh: 20

keepalived_checks:
  "chk_nginx":
    process: nginx              # Monitor NGINX using `killall -0`
    period: 2                   # every 2 seconds
  "chk_keepalived":
    script: pgrep keepalived    # Monitor Keepalived
    period: 2                   # every 2 seconds

# In vault:
vault_keepalived_vrrp_passwords:
    "VI_1": 'YUiszRrpLEXbnMLqDapwWLvPAJ'
    "VI_2": 'rJEUkQnmSRahwRTpjUkFVid'
    "VI_3": 'itkcbxmaXwFBiUZJhePmtX'

# OPTIONAL FOR NOTIFICATION AND TUNING
keepalived_advert_interval: 1
keepalived_notify_from: "keepalived@{{ ansible_fqdn }}"
keepalived_notify_smtp_server: "smtp.example.com"
keepalived_notify_smtp_timeout: "30"
keepalived_notify_list:
  - "noc@example.com"
  - "abuse@example.com"
keepalived_global_defs:
  vrrp_garp_master_refresh: 60

Minimum usage example

You should at least define these variables:

# Per host
keepalived_role:
  "VI_1": "MASTER"

# Per group
keepalived_vrrp_instances:
  "VI_1":
    virtual_router_id: 10
    shared_iface: eth0
    shared_vips:
      - '10.127.50.5'
    auth_pass: 'NLxQZYzXUfhjkJqWzVrPMua'

License

"THE (extended) BEER-WARE LICENSE" (Revision 42.0815):

As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me some beers in return.

Author Information

Youenn Piolet

Releases

No releases published

Packages