ansible-role-keepalived/README.md

151 lines
5.4 KiB
Markdown
Raw Normal View History

2019-04-12 16:29:11 +00:00
# Ansible role: Keepalived
2024-05-07 07:05:17 +00:00
[![Version](https://img.shields.io/badge/latest_version-1.1.0-green.svg)](https://code.waks.be/nishiki/ansible-role-keepalived/releases)
[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](https://code.waks.be/nishiki/ansible-role-keepalived/src/branch/main/LICENSE)
2019-04-12 16:29:11 +00:00
Install and configure Keepalived
## Requirements
2024-05-07 07:05:17 +00:00
- Ansible >= 2.9
- Debian
- Bullseye
- Bookworm
2019-04-12 16:29:11 +00:00
## Role variables
2024-05-07 07:05:17 +00:00
| Name | Type | Required | Default | Comment |
| ----------------------------- | ----- | -------- | --------------------- | --------------------------------- |
2020-03-28 22:15:22 +00:00
| 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 | hash | no | | the vrrp instances |
| keepalived_vrrp_scripts | hash | no | | the vrrp check scripts |
2021-11-05 09:06:32 +00:00
| keepalived_track_files | hash | no | | the track files |
2020-03-28 22:15:22 +00:00
### keepalived_vrrp_instances
| Name | Type | Required | Default | Comment |
2024-05-07 07:05:17 +00:00
| ------------------- | ----- | -------- | ------- | -------------------------------------------- |
| key | str | yes | | the instance name |
2020-03-28 22:15:22 +00:00
| 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 |
2021-11-05 09:06:32 +00:00
| track_files | array | no | | add a tracking file to the interface |
2020-03-28 22:15:22 +00:00
| notify | hash | no | | notify scripts, alert as above |
Example:
2019-04-12 16:29:11 +00:00
```
vip_ngninx:
2019-04-12 16:29:11 +00:00
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
2024-05-07 07:05:17 +00:00
| Name | Type | Required | Default | Comment |
| -------- | ---- | -------- | ------- | ------------------------------------- |
| key | str | yes | | the script name |
| 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 |
| weight | int | no | 1 | weigth of script |
2020-03-28 22:15:22 +00:00
Example:
2019-04-12 16:29:11 +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
```
2021-11-05 09:06:32 +00:00
### keepalived_track_file
2024-05-07 07:05:17 +00:00
| Name | Type | Required | Default | Comment |
| ------ | ---- | -------- | ------- | ------------------------- |
| key | str | yes | | the track file name |
| file | str | yes | | path of the file to track |
| weight | int | no | 1 | weigth of file |
2021-11-05 09:06:32 +00:00
Example:
```
master_file:
file: /tmp/master
weight: 3
```
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
2024-05-07 07:05:17 +00:00
- install [docker](https://docs.docker.com/engine/installation/)
- 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.
```