2019-04-12 16:29:11 +00:00
|
|
|
# Ansible role: Keepalived
|
|
|
|
|
2021-08-18 16:43:43 +00:00
|
|
|
[![Version](https://img.shields.io/badge/latest_version-1.1.0-green.svg)](https://git.yaegashi.fr/nishiki/ansible-role-keepalived/releases)
|
2019-04-12 16:29:11 +00:00
|
|
|
[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](https://git.yaegashi.fr/nishiki/ansible-role-keepalived/src/branch/master/LICENSE)
|
|
|
|
|
|
|
|
Install and configure Keepalived
|
|
|
|
|
|
|
|
## Requirements
|
|
|
|
|
2021-08-18 16:42:28 +00:00
|
|
|
* Ansible >= 2.9
|
|
|
|
* Debian
|
|
|
|
* Buster
|
|
|
|
* Bullseye
|
2019-04-12 16:29:11 +00:00
|
|
|
|
|
|
|
## Role variables
|
|
|
|
|
2020-03-28 22:15:22 +00:00
|
|
|
| Name | Type | Required |Default | Comment |
|
|
|
|
|-------------------------------|-------|----------|-----------------------|-----------------------------------|
|
|
|
|
| keepalived_mail_from | str | no | keepalived@test.local | from header for notification mail |
|
|
|
|
| keepalived_smtp_server | str | no | localhost | the smtp server |
|
|
|
|
| keepalived_notification_mails | array | no | | the mail addresses to notify |
|
|
|
|
| keepalived_vrrp_instances | array | no | | the vrrp instances |
|
2021-11-05 09:05:58 +00:00
|
|
|
| keepalived_vrrp_scripts | hash | no | | the vrrp check scripts |
|
2020-03-28 22:15:22 +00:00
|
|
|
|
|
|
|
### keepalived_vrrp_instances
|
|
|
|
|
|
|
|
| Name | Type | Required | Default | Comment |
|
|
|
|
|---------------------|-------|----------|---------|----------------------------------------------|
|
|
|
|
| name | str | yes | | the instance name |
|
|
|
|
| state | str | yes | | Initial state, MASTER or BACKUP |
|
|
|
|
| interface | str | yes | | interface for inside_network, bound by vrrp |
|
|
|
|
| virtual_router_id | int | yes | | arbitrary unique number from 1 to 255 |
|
|
|
|
| priority | int | yes | | for electing MASTER, highest priority wins |
|
|
|
|
| smtp_alert | bool | yes | | send SMTP alerts |
|
|
|
|
| authentication | hash | no | | use an authentication `deprecated` |
|
|
|
|
| virtual_ipaddresses | array | yes | | addresses add on change to MASTER, to BACKUP |
|
|
|
|
| track_scripts | array | no | | add a tracking script to the interface |
|
|
|
|
| notify | hash | no | | notify scripts, alert as above |
|
|
|
|
|
|
|
|
Example:
|
2019-04-12 16:29:11 +00:00
|
|
|
|
|
|
|
```
|
|
|
|
- name: vip_ngninx
|
|
|
|
state: master
|
|
|
|
interface: eth0
|
|
|
|
virtual_router_id: 5
|
|
|
|
priority: 200
|
|
|
|
smtp_alert: true
|
|
|
|
authentication:
|
|
|
|
type: pass
|
|
|
|
pass: 12345678
|
|
|
|
virtual_ipaddresses:
|
|
|
|
- 172.255.0.254/32 dev eth0
|
|
|
|
track_scripts:
|
|
|
|
- check_nginx
|
|
|
|
notify:
|
|
|
|
master: /usr/bin/notification.sh
|
|
|
|
|
|
|
|
```
|
|
|
|
|
2020-03-28 22:15:22 +00:00
|
|
|
### keepalived_vrrp_scripts
|
|
|
|
|
|
|
|
| Name | Type | Required | Default | Comment |
|
|
|
|
|----------|-------|----------|---------|---------------------------------------|
|
2021-11-05 09:05:58 +00:00
|
|
|
| key | str | yes | | the script name |
|
2020-03-28 22:15:22 +00:00
|
|
|
| script | str | yes | | path of the script to execute |
|
|
|
|
| interval | int | no | 2 | seconds between script invocations |
|
|
|
|
| fall | int | no | 2 | number of successes for KO transition |
|
|
|
|
| rise | int | no | 2 | number of successes for OK transition |
|
2021-11-05 09:05:58 +00:00
|
|
|
| weight | int | no | 1 | weigth of script |
|
2020-03-28 22:15:22 +00:00
|
|
|
|
|
|
|
Example:
|
2019-04-12 16:29:11 +00:00
|
|
|
|
|
|
|
```
|
2021-11-05 09:05:58 +00:00
|
|
|
check_nginx:
|
2019-04-12 16:29:11 +00:00
|
|
|
script: /usr/local/bin/check_nginx
|
|
|
|
fall: 3
|
|
|
|
rise: 5
|
2020-03-28 22:15:22 +00:00
|
|
|
interval: 10
|
2019-04-12 16:29:11 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
## How to use
|
|
|
|
|
|
|
|
```
|
|
|
|
- hosts: server
|
|
|
|
roles:
|
|
|
|
- keepalived
|
2020-03-28 22:15:22 +00:00
|
|
|
vars:
|
|
|
|
keepalived_vrrp_scripts:
|
|
|
|
- name: check_file
|
|
|
|
script: test -e /path/file
|
|
|
|
interval: 5
|
|
|
|
keepalived_vrrp_instances:
|
|
|
|
- name: test
|
|
|
|
state: master
|
|
|
|
interface: eth0
|
|
|
|
virtual_router_id: 5
|
|
|
|
priority: 200
|
|
|
|
virtual_ipaddresses:
|
|
|
|
- 172.255.0.254/32 dev eth0
|
|
|
|
track_scripts:
|
|
|
|
- check_file
|
|
|
|
notify:
|
|
|
|
master: touch /tmp/keepalived
|
2019-04-12 16:29:11 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
## Development
|
|
|
|
|
2020-03-28 21:31:50 +00:00
|
|
|
### Test with molecule and docker
|
2019-04-12 16:29:11 +00:00
|
|
|
|
|
|
|
* install [docker](https://docs.docker.com/engine/installation/)
|
2020-03-28 21:31:50 +00:00
|
|
|
* install `python3` and `python3-pip`
|
|
|
|
* install molecule and dependencies `pip3 install molecule 'molecule[docker]' docker ansible-lint testinfra yamllint`
|
|
|
|
* run `molecule test`
|
2019-04-12 16:29:11 +00:00
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
```
|
|
|
|
Copyright (c) 2019 Adrien Waksberg
|
|
|
|
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
you may not use this file except in compliance with the License.
|
|
|
|
You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|
|
|
|
```
|