Compare commits

..

85 Commits

Author SHA1 Message Date
Bertrand Gouny 33eba9fd39 Merge branch 'feature-1.3.5-1' into stable 2017-03-21 11:30:55 +01:00
Bertrand Gouny 605bbf64ce keepalived 1.3.5 2017-03-21 11:19:41 +01:00
osixia 7146db6642 Update README.md 2017-03-20 10:10:13 +01:00
Bertrand Gouny a5e6705191 add snmp 2017-03-20 09:43:42 +01:00
Bertrand Gouny 0fbce849e4 [twgit] Init feature 'feature-1.3.5-1'. 2017-03-20 09:33:01 +01:00
Bertrand Gouny d5d3d9b44b Merge branch 'hotfix-1.3.5' into stable 2017-03-20 08:57:14 +01:00
Bertrand Gouny ec1f596785 Merge branch 'stable' into hotfix-1.3.5 2017-03-20 08:45:03 +01:00
Bertrand Gouny cc2ea65bad keepalived 1.3.5 2017-03-20 08:42:37 +01:00
Bertrand Gouny a6919deb35 [twgit] Init hotfix 'hotfix-1.3.5'. 2017-03-20 08:40:49 +01:00
osixia 79719556de Merge pull request #3 from hangyan/hangyan-patch-1
Fix dockerfile example FROM error
2017-03-01 10:17:20 +01:00
Hang Yan e52a547c89 Fix dockerfile example FROM error 2017-03-01 10:47:23 +08:00
Bertrand Gouny 11cba54c1d Merge branch 'hotfix-1.3.4' into stable 2017-02-19 21:19:40 +01:00
Bertrand Gouny 0f70c6167e keepalived 1.3.4 2017-02-19 20:59:03 +01:00
Bertrand Gouny 8ceb176ee9 keepalived 1.3.4 2017-02-19 20:53:54 +01:00
Bertrand Gouny 67bdbf2d9c [twgit] Init hotfix 'hotfix-1.3.4'. 2017-02-19 20:52:22 +01:00
ofreax 779f13d12c Merge branch 'release-1.3.2' into stable 2016-11-29 11:45:59 +01:00
ofreax 24b1c979b8 keepalived 1.3.2 2016-11-29 11:31:58 +01:00
ofreax 9be7fbb790 [twgit] Init release 'release-1.3.2'. 2016-11-29 11:26:52 +01:00
Bertrand Gouny d67320ca3c Merge branch 'hotfix-1.3.1' into stable 2016-11-22 14:04:40 +01:00
Bertrand Gouny cc4c6a347d keepalived 1.3.1 2016-11-22 13:59:26 +01:00
Bertrand Gouny 5dad559e3c [twgit] Init hotfix 'hotfix-1.3.1'. 2016-11-22 13:51:13 +01:00
Bertrand Gouny 9d0ae4d5a2 Merge branch 'release-1.3.0' into stable 2016-11-21 11:11:04 +01:00
Bertrand Gouny 6c7a9d15d9 let libssl 2016-11-21 10:39:19 +01:00
Bertrand Gouny 84ce87e02b libnfnetlink-dev 2016-11-21 10:35:11 +01:00
Bertrand Gouny e31cf435e9 libnfnetlink 2016-11-21 10:33:49 +01:00
Bertrand Gouny 7f4d922e6a libnl-route-3-dev 2016-11-21 10:31:42 +01:00
Bertrand Gouny db8f6bcf6b light-baseimage:0.2.6 2016-11-21 10:27:23 +01:00
Bertrand Gouny 961ed484a0 keepalived 1.3.0 2016-11-21 10:27:01 +01:00
Bertrand Gouny cc7c917f05 [twgit] Init release 'release-1.3.0'. 2016-11-21 10:24:27 +01:00
ofreax 33c31a8d01 update README.md 2016-09-18 11:58:20 +02:00
Bertrand Gouny 1f465eac48 Merge branch 'release-1.2.24' into stable 2016-09-13 11:04:21 +02:00
Bertrand Gouny 6cdb425f7b keepalived 1.2.24 2016-09-13 10:50:32 +02:00
Bertrand Gouny 4b36f9b03d [twgit] Init release 'release-1.2.24'. 2016-09-13 10:47:07 +02:00
ofreax d557989f1d Merge branch 'hotfix-0.2.3' into stable 2016-09-03 00:34:13 +02:00
ofreax 56b686c9cd test 2016-09-02 20:56:07 +02:00
ofreax 5028b568eb - 2016-08-29 09:25:20 +02:00
ofreax 4ae2a8641f finish script 2016-08-27 10:37:00 +02:00
ofreax e8fb1f02e2 split environment variables 2016-08-19 11:58:49 +02:00
ofreax 89a69bebc5 Upgrade baseimage: light-baseimage:0.2.5 2016-08-12 14:03:36 +02:00
ofreax 975d9b7b02 [twgit] Init hotfix 'hotfix-0.2.3'. 2016-08-03 21:31:44 +02:00
osixia 30dde078d3 Update README.md 2016-07-26 17:30:58 +02:00
Bertrand Gouny a835acec86 Merge branch 'hotfix-0.2.2' into stable 2016-07-26 13:47:56 +02:00
Bertrand Gouny 1e5715cf8f v0.2.2 / keepalived 1.2.23 2016-07-26 13:44:51 +02:00
Bertrand Gouny 9f12c7f588 [twgit] Init hotfix 'hotfix-0.2.2'. 2016-07-26 13:40:08 +02:00
osixia d897c17294 Update README.md 2016-03-01 15:26:45 +01:00
ofreax 438f86407c Merge branch 'hotfix-0.2.1' into stable 2016-02-20 11:22:26 +01:00
Bertrand Gouny 9a375afa88 follow best practices 2016-02-18 11:18:54 +01:00
Bertrand Gouny fe99a80170 docs 2016-02-01 13:42:50 +01:00
ofreax 4745810e69 v0.2.1 2016-01-29 12:54:00 +01:00
ofreax 295b98ad0c [twgit] Init hotfix 'hotfix-0.2.1'. 2016-01-29 12:50:59 +01:00
Bertrand Gouny 27de0483fa Merge branch 'release-0.2.0' into stable 2016-01-27 14:01:05 +01:00
Bertrand Gouny 56e95efc54 --follow-symlinks 2016-01-27 13:46:29 +01:00
Bertrand Gouny c11e41c673 KEEPALIVED_COMMAND_LINE_ARGUMENTS 2016-01-20 09:48:53 +01:00
ofreax 0fc4b060e3 complex-bash-env 2016-01-19 20:59:40 +01:00
Bertrand Gouny 46b1825a10 docs 2016-01-19 17:18:32 +01:00
ofreax 27699af638 docs 2016-01-18 22:17:29 +01:00
ofreax 3e42563339 docs 2016-01-18 21:38:30 +01:00
ofreax 59869d4a53 docs 2016-01-17 15:19:06 +01:00
ofreax 72151d1efe docs 2016-01-17 12:36:32 +01:00
ofreax 418919e3b0 light-baseimage:0.2.1 2016-01-17 12:24:24 +01:00
ofreax 030d80b0a4 light-baseimage:0.2.1 2016-01-17 12:12:04 +01:00
ofreax 351dd6e113 Merge branch 'release-0.2.0' of github.com:osixia/docker-keepalived into release-0.2.0 2015-12-28 20:50:46 +01:00
ofreax 577da2e6b8 README.md 2015-12-28 20:50:35 +01:00
Bertrand Gouny 1a9c7307ed Merge branch 'release-0.2.0' of github.com:osixia/docker-keepalived into release-0.2.0 2015-12-22 17:40:33 +01:00
Bertrand Gouny b6fdec0d09 fix sed 2015-12-22 17:40:24 +01:00
ofreax 197ac3dee9 --no-install-recommends 2015-12-21 21:39:16 +01:00
Bertrand Gouny b779b4d438 add chmod+x KEEPALIVED_NOTIFY file 2015-12-21 10:20:18 +01:00
ofreax b0905af741 sed with follow-symlinks 2015-12-14 22:33:16 +01:00
ofreax baa3f9649c Makefile with build no cacheMakefile with build no cache 2015-12-14 19:26:21 +01:00
ofreax 76b4efa3fc Upgrade baseimage: light-baseimage:0.2.0 2015-12-12 13:48:53 +01:00
ofreax cc7a2b606b [twgit] Init release 'release-0.2.0'. 2015-12-12 13:46:57 +01:00
ofreax 3f44f60f3f Merge branch 'hotfix-0.1.9' into stable 2015-11-20 10:46:32 +01:00
ofreax 1ca3a0da5b light-baseimage:0.1.5 2015-11-20 10:21:54 +01:00
ofreax 569a582839 [twgit] Init hotfix 'hotfix-0.1.9'. 2015-11-20 10:20:54 +01:00
Bertrand Gouny bf445ef9bf Merge branch 'hotfix-0.1.8' into stable 2015-11-19 15:16:19 +01:00
Bertrand Gouny c7291a3a97 light-baseimage:0.1.4 2015-11-19 15:09:38 +01:00
Bertrand Gouny b5e8781264 [twgit] Init hotfix 'hotfix-0.1.8'. 2015-11-19 15:08:49 +01:00
Bertrand Gouny de03d7af70 Merge branch 'hotfix-0.1.7' into stable 2015-10-26 15:21:44 +01:00
Bertrand Gouny 8184cf1a10 Upgrade baseimage: osixia/light-baseimage:0.1.2 2015-10-26 15:12:52 +01:00
Bertrand Gouny db6af708db [twgit] Init hotfix 'hotfix-0.1.7'. 2015-10-26 15:12:34 +01:00
osixia c199795650 Update README.md 2015-08-24 19:46:29 +02:00
ofreax 8eb1d69938 Merge branch 'hotfix-0.1.6' into stable 2015-08-21 11:24:39 +02:00
ofreax ed7277f100 improve doc and better custom config 2015-08-21 11:22:46 +02:00
ofreax 9b82c576bd improve doc and better custom config 2015-08-21 11:21:46 +02:00
ofreax e8b5a271c3 [twgit] Init hotfix 'hotfix-0.1.6'. 2015-08-21 10:56:52 +02:00
14 changed files with 342 additions and 151 deletions
+48 -1
View File
@@ -1,7 +1,54 @@
# Changelog
## 1.3.5
- Keepalived version 1.3.5
## 1.3.4
- Keepalived version 1.3.4
## 1.3.2
- Keepalived version 1.3.2
## 1.3.1
- Keepalived version 1.3.1
## 1.3.0
- Keepalived version 1.3.0
- Upgrade baseimage: light-baseimage:0.2.6
## 1.2.24
- Keepalived version 1.2.24
- We now use the keepalived version number as docker image tag
## 0.2.3
- Upgrade baseimage: light-baseimage:0.2.5
## 0.2.2
- Upgrade baseimage: light-baseimage:0.2.4
- Keepalived version 1.2.23
## 0.2.1
- Upgrade baseimage: light-baseimage:0.2.2
## 0.2.0
- Upgrade baseimage: light-baseimage:0.2.1
- Makefile with build no cache
## 0.1.9
- Upgrade baseimage: light-baseimage:0.1.5
## 0.1.8
- Upgrade baseimage: light-baseimage:0.1.4
## 0.1.7
- Upgrade baseimage: light-baseimage:0.1.2
## 0.1.6
- Better way to add custom config
- Improve documentation
## 0.1.5
- Upgrade baseimage: osixia/light-baseimage:0.1.1
- Upgrade baseimage: light-baseimage:0.1.1
## 0.1.4
- Use light-baseimage
+6 -3
View File
@@ -1,18 +1,21 @@
NAME = osixia/keepalived
VERSION = 0.1.5
VERSION = 1.3.5
.PHONY: all build test tag_latest release
.PHONY: all build build-nocache test tag_latest release
all: build
build:
docker build -t $(NAME):$(VERSION) --rm image
build-nocache:
docker build -t $(NAME):$(VERSION) --no-cache --rm image
test:
env NAME=$(NAME) VERSION=$(VERSION) bats test/test.bats
tag_latest:
docker tag -f $(NAME):$(VERSION) $(NAME):latest
docker tag $(NAME):$(VERSION) $(NAME):latest
release: build test tag_latest
@if ! docker images $(NAME) | awk '{ print $$2 }' | grep -q -F $(VERSION); then echo "$(NAME) version $(VERSION) is not yet built. Please run 'make build'"; false; fi
+181 -4
View File
@@ -1,12 +1,189 @@
# osixia/keepalived
[![](https://badge.imagelayers.io/osixia/keepalived:latest.svg)](https://imagelayers.io/?images=osixia/keepalived:latest 'Get your own badge on imagelayers.io')
[![Docker Pulls](https://img.shields.io/docker/pulls/osixia/keepalived.svg)][hub]
[![Docker Stars](https://img.shields.io/docker/stars/osixia/keepalived.svg)][hub]
[![](https://images.microbadger.com/badges/image/osixia/keepalived.svg)](http://microbadger.com/images/osixia/keepalived "Get your own image badge on microbadger.com")
A docker image to run Keepalived.
[hub]: https://hub.docker.com/r/osixia/keepalived/
Latest release: 1.3.5 - Keepalived 1.3.5 - [Changelog](CHANGELOG.md) | [Docker Hub](https://hub.docker.com/r/osixia/keepalived/) 
## /!\ Due to segmentation fault in keepalived 1.3.5 the image have been removed please use v1.3.4
**A docker image to run Keepalived.**
> [keepalived.org](http://keepalived.org/)
- [Quick start](#quick-start)
- [Beginner Guide](#beginner-guide)
- [Use your own Backup Manager config](#use-your-own-backup-manager-config)
- [Fix docker mounted file problems](#fix-docker-mounted-file-problems)
- [Debug](#debug)
- [Environment Variables](#environment-variables)
- [Set your own environment variables](#set-your-own-environment-variables)
- [Use command line argument](#use-command-line-argument)
- [Link environment file](#link-environment-file)
- [Make your own image or extend this image](#make-your-own-image-or-extend-this-image)
- [Advanced User Guide](#advanced-user-guide)
- [Extend osixia/keepalived:1.3.5 image](#extend-osixiakeepalived135-image)
- [Make your own keepalived image](#make-your-own-keepalived-image)
- [Tests](#tests)
- [Under the hood: osixia/light-baseimage](#under-the-hood-osixialight-baseimage)
- [Changelog](#changelog)
## Quick start
This image require the kernel module ip_vs loaded on the host and need to be run with : --privileged --net=host
This image require the kernel module ip_vs loaded on the host (`modprobe ip_vs`) and need to be run with : --cap-add=NET_ADMIN --net=host
docker run --privileged --net=host -d osixia/keepalived
docker run --cap-add=NET_ADMIN --net=host -d osixia/keepalived:1.3.5
## Beginner Guide
### Use your own Keepalived config
This image comes with a keepalived config file that can be easily customized via environment variables for a quick bootstrap,
but setting your own keepalived.conf is possible. 2 options:
- Link your config file at run time to `/container/service/keepalived/assets/keepalived.conf` :
docker run --volume /data/my-keepalived.conf:/container/service/keepalived/assets/keepalived.conf --detach osixia/keepalived:1.3.5
- Add your config file by extending or cloning this image, please refer to the [Advanced User Guide](#advanced-user-guide)
### Fix docker mounted file problems
You may have some problems with mounted files on some systems. The startup script try to make some file adjustment and fix files owner and permissions, this can result in multiple errors. See [Docker documentation](https://docs.docker.com/v1.4/userguide/dockervolumes/#mount-a-host-file-as-a-data-volume).
To fix that run the container with `--copy-service` argument :
docker run [your options] osixia/keepalived:1.3.5 --copy-service
### Debug
The container default log level is **info**.
Available levels are: `none`, `error`, `warning`, `info`, `debug` and `trace`.
Example command to run the container in `debug` mode:
docker run --detach osixia/keepalived:1.3.5 --loglevel debug
See all command line options:
docker run osixia/keepalived:1.3.5 --help
## Environment Variables
Environment variables defaults are set in **image/environment/default.yaml**
See how to [set your own environment variables](#set-your-own-environment-variables)
- **KEEPALIVED_INTERFACE**: Keepalived network interface. Defaults to `eth0`
- **KEEPALIVED_PASSWORD**: Keepalived password. Defaults to `d0cker`
- **KEEPALIVED_PRIORITY** Keepalived node priority. Defaults to `150`
- **KEEPALIVED_UNICAST_PEERS** Keepalived unicast peers. Defaults to :
- 192.168.1.10
- 192.168.1.11
If you want to set this variable at docker run command add the tag `#PYTHON2BASH:` and convert the yaml in python:
docker run --env KEEPALIVED_UNICAST_PEERS="#PYTHON2BASH:['192.168.1.10', '192.168.1.11']" --detach osixia/keepalived:1.3.5
To convert yaml to python online : http://yaml-online-parser.appspot.com/
- **KEEPALIVED_VIRTUAL_IPS** Keepalived virtual IPs. Defaults to :
- 192.168.1.231
- 192.168.1.232
If you want to set this variable at docker run command convert the yaml in python, see above.
- **KEEPALIVED_NOTIFY** Script to execute when node state change. Defaults to `/container/service/keepalived/assets/notify.sh`
- **KEEPALIVED_COMMAND_LINE_ARGUMENTS** Keepalived command line arguments; Defaults to `--log-detail --dump-conf`
### Set your own environment variables
#### Use command line argument
Environment variables can be set by adding the --env argument in the command line, for example:
docker run --env KEEPALIVED_INTERFACE="eno1" --env KEEPALIVED_PASSWORD="password!" \
--env KEEPALIVED_PRIORITY="100" --detach osixia/keepalived:1.3.5
#### Link environment file
For example if your environment file is in : /data/environment/my-env.yaml
docker run --volume /data/environment/my-env.yaml:/container/environment/01-custom/env.yaml \
--detach osixia/keepalived:1.3.5
Take care to link your environment file to `/container/environment/XX-somedir` (with XX < 99 so they will be processed before default environment files) and not directly to `/container/environment` because this directory contains predefined baseimage environment files to fix container environment (INITRD, LANG, LANGUAGE and LC_CTYPE).
#### Make your own image or extend this image
This is the best solution if you have a private registry. Please refer to the [Advanced User Guide](#advanced-user-guide) just below.
## Advanced User Guide
### Extend osixia/keepalived:1.3.5 image
If you need to add your custom TLS certificate, bootstrap config or environment files the easiest way is to extends this image.
Dockerfile example:
FROM osixia/keepalived:1.3.5
MAINTAINER Your Name <your@name.com>
ADD keepalived.conf /container/service/keepalived/assets/keepalived.conf
ADD environment /container/environment/01-custom
ADD scripts.sh /container/service/keepalived/assets/notify.sh
### Make your own keepalived image
Clone this project :
git clone https://github.com/osixia/docker-keepalived
cd docker-keepalived
Adapt Makefile, set your image NAME and VERSION, for example :
NAME = osixia/keepalived
VERSION = 1.3.5
becomes :
NAME = billy-the-king/keepalived
VERSION = 0.1.0
Add your custom scripts, environment files, config ...
Build your image :
make build
Run your image :
docker run -d billy-the-king/keepalived:0.1.0
### Tests
We use **Bats** (Bash Automated Testing System) to test this image:
> [https://github.com/sstephenson/bats](https://github.com/sstephenson/bats)
Install Bats, and in this project directory run :
make test
### Under the hood: osixia/light-baseimage
This image is based on osixia/light-baseimage.
More info: https://github.com/osixia/docker-light-baseimage
## Changelog
Please refer to: [CHANGELOG.md](CHANGELOG.md)
+23 -21
View File
@@ -1,42 +1,44 @@
FROM osixia/light-baseimage:0.1.1
# Use osixia/light-baseimage
# sources: https://github.com/osixia/docker-light-baseimage
FROM osixia/light-baseimage:0.2.6
MAINTAINER Bertrand Gouny <bertrand.gouny@osixia.net>
# Keepalived version
ENV KEEPALIVED_VERSION 1.2.19
ENV KEEPALIVED_VERSION 1.3.5
# Use baseimage's init system.
# https://github.com/osixia/docker-light-baseimage/blob/stable/image/tool/run
CMD ["/container/tool/run"]
# Install Keepalived
# Download, build and install Keepalived
RUN apt-get -y update \
&& LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -y \
&& LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
curl \
make \
gcc \
pkg-config \
libssl-dev \
iptables-dev \
libipset-dev \
libnl-3-dev \
libnl-genl-3-dev \
libnl-route-3-dev \
libnfnetlink-dev \
libssl-dev \
make \
pkg-config \
&& curl -o keepalived.tar.gz -SL http://keepalived.org/software/keepalived-${KEEPALIVED_VERSION}.tar.gz \
&& mkdir -p /container/keepalived-sources \
&& tar -xzf keepalived.tar.gz --strip 1 -C /container/keepalived-sources \
&& cd container/keepalived-sources \
&& ./configure --with-kernel-dir=/lib/modules/$(uname -r)/build \
&& ./configure --disable-dynamic-linking \
&& make && make install \
&& cd - && mkdir -p /etc/keepalived \
&& apt-get remove -y --purge --auto-remove curl make gcc pkg-config libssl-dev
# Add service directory to /container/service
ADD service /container/service
# Use baseimage install-service script and clean all
# https://github.com/osixia/docker-light-baseimage/blob/stable/image/tool/install-service
RUN /container/tool/install-service \
&& apt-get remove -y --purge --auto-remove curl make gcc pkg-config \
&& rm -f keepalived.tar.gz \
&& rm -rf /container/keepalived-sources \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Add service directory to /container/service
ADD service /container/service
# Use baseimage install-service script
# https://github.com/osixia/docker-light-baseimage/blob/stable/image/tool/install-service
RUN /container/tool/install-service
# Add default env variables
ADD env.yaml /etc/env.yaml
ADD environment /container/environment/99-default
+1
View File
@@ -0,0 +1 @@
KEEPALIVED_COMMAND_LINE_ARGUMENTS: --log-detail --dump-conf
+1 -1
View File
@@ -1 +1 @@
Add your custom keepalived.conf file here or mount one at docker run to /etc/keepalived/keepalived.conf
Add your custom keepalived.conf file here or mount one at docker run to /container/service/keepalived/assets/keepalived.conf
@@ -1,11 +1,3 @@
vrrp_sync_group VG_1 {
group {
VI_1
}
{{ keepalived_notify }}
}
vrrp_instance VI_1 {
interface {{ keepalived_interface }}
@@ -30,4 +22,6 @@ vrrp_instance VI_1 {
auth_type PASS
auth_pass {{ keepalived_password }}
}
{{ keepalived_notify }}
}
@@ -1,67 +0,0 @@
#!/bin/bash -e
FIRST_START_DONE="/etc/docker-keepalived-first-start-done"
# container first start
if [ ! -e "$FIRST_START_DONE" ]; then
# config folder is empty use bootstrap config if available
if [ ! -e /etc/keepalived/keepalived.conf ]; then
echo "No keepalived.conf provided using image default one"
if [ ! -e /container/service/keepalived/assets/keepalived.conf ]; then
echo "Error: No default keepalived.conf found in /container/service/keepalived/assets/keepalived.conf"
exit 1
else
ln -s /container/service/keepalived/assets/keepalived.conf /etc/keepalived/keepalived.conf
#
# bootstrap config
#
sed -i "s|{{ keepalived_interface }}|$KEEPALIVED_INTERFACE|g" /etc/keepalived/keepalived.conf
sed -i "s|{{ keepalived_priority }}|$KEEPALIVED_PRIORITY|g" /etc/keepalived/keepalived.conf
sed -i "s|{{ keepalived_password }}|$KEEPALIVED_PASSWORD|g" /etc/keepalived/keepalived.conf
if [ -n "$KEEPALIVED_NOTIFY" ]; then
sed -i "s|{{ keepalived_notify }}|notify \"$KEEPALIVED_NOTIFY\"|g" /etc/keepalived/keepalived.conf
else
sed -i "/{{ keepalived_notify }}/d" /etc/keepalived/keepalived.conf
fi
# unicast peers
KEEPALIVED_UNICAST_PEERS=($KEEPALIVED_UNICAST_PEERS)
for peer in "${KEEPALIVED_UNICAST_PEERS[@]}"
do
# it's just a peer
# stored in a variable
if [ -n "${!peer}" ]; then
sed -i "s|{{ keepalived_unicast_peers }}|${!peer}\n {{ keepalived_unicast_peers }}|g" /etc/keepalived/keepalived.conf
# directly
else
sed -i "s|{{ keepalived_unicast_peers }}|${peer}\n {{ keepalived_unicast_peers }}|g" /etc/keepalived/keepalived.conf
fi
done
sed -i "/{{ keepalived_unicast_peers }}/d" /etc/keepalived/keepalived.conf
# virtual ips
KEEPALIVED_VIRTUAL_IPS=($KEEPALIVED_VIRTUAL_IPS)
for vip in "${KEEPALIVED_VIRTUAL_IPS[@]}"
do
# it's just a peer
# stored in a variable
if [ -n "${!vip}" ]; then
sed -i "s|{{ keepalived_virtual_ips }}|${!vip}\n {{ keepalived_virtual_ips }}|g" /etc/keepalived/keepalived.conf
# directly
else
sed -i "s|{{ keepalived_virtual_ips }}|${vip}\n {{ keepalived_virtual_ips }}|g" /etc/keepalived/keepalived.conf
fi
done
sed -i "/{{ keepalived_virtual_ips }}/d" /etc/keepalived/keepalived.conf
fi
fi
touch $FIRST_START_DONE
fi
exit 0
-2
View File
@@ -1,2 +0,0 @@
#!/bin/bash -e
exec /usr/local/sbin/keepalived -f /etc/keepalived/keepalived.conf --dont-fork --log-console -D -d
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash -e
# set -x (bash debug) if log level is trace
# https://github.com/osixia/docker-light-baseimage/blob/stable/image/tool/log-helper
log-helper level eq trace && set -x
# try to delete virtual ips from interface
for vip in $(complex-bash-env iterate KEEPALIVED_VIRTUAL_IPS)
do
ip addr del ${vip}/32 dev ${KEEPALIVED_INTERFACE} || true
done
exit 0
+7
View File
@@ -0,0 +1,7 @@
#!/bin/bash -e
# set -x (bash debug) if log level is trace
# https://github.com/osixia/docker-light-baseimage/blob/stable/image/tool/log-helper
log-helper level eq trace && set -x
exec /usr/local/sbin/keepalived -f /etc/keepalived/keepalived.conf --dont-fork --log-console ${KEEPALIVED_COMMAND_LINE_ARGUMENTS}
+52
View File
@@ -0,0 +1,52 @@
#!/bin/bash -e
# set -x (bash debug) if log level is trace
# https://github.com/osixia/docker-light-baseimage/blob/stable/image/tool/log-helper
log-helper level eq trace && set -x
FIRST_START_DONE="${CONTAINER_STATE_DIR}/docker-keepalived-first-start-done"
# container first start
if [ ! -e "$FIRST_START_DONE" ]; then
#
# bootstrap config
#
sed -i --follow-symlinks "s|{{ keepalived_interface }}|$KEEPALIVED_INTERFACE|g" ${CONTAINER_SERVICE_DIR}/keepalived/assets/keepalived.conf
sed -i --follow-symlinks "s|{{ keepalived_priority }}|$KEEPALIVED_PRIORITY|g" ${CONTAINER_SERVICE_DIR}/keepalived/assets/keepalived.conf
sed -i --follow-symlinks "s|{{ keepalived_password }}|$KEEPALIVED_PASSWORD|g" ${CONTAINER_SERVICE_DIR}/keepalived/assets/keepalived.conf
if [ -n "$KEEPALIVED_NOTIFY" ]; then
sed -i --follow-symlinks "s|{{ keepalived_notify }}|notify \"$KEEPALIVED_NOTIFY\"|g" ${CONTAINER_SERVICE_DIR}/keepalived/assets/keepalived.conf
chmod +x $KEEPALIVED_NOTIFY
else
sed -i --follow-symlinks "/{{ keepalived_notify }}/d" ${CONTAINER_SERVICE_DIR}/keepalived/assets/keepalived.conf
fi
# unicast peers
for peer in $(complex-bash-env iterate KEEPALIVED_UNICAST_PEERS)
do
sed -i --follow-symlinks "s|{{ keepalived_unicast_peers }}|${!peer}\n {{ keepalived_unicast_peers }}|g" ${CONTAINER_SERVICE_DIR}/keepalived/assets/keepalived.conf
done
sed -i --follow-symlinks "/{{ keepalived_unicast_peers }}/d" ${CONTAINER_SERVICE_DIR}/keepalived/assets/keepalived.conf
# virtual ips
for vip in $(complex-bash-env iterate KEEPALIVED_VIRTUAL_IPS)
do
sed -i --follow-symlinks "s|{{ keepalived_virtual_ips }}|${!vip}\n {{ keepalived_virtual_ips }}|g" ${CONTAINER_SERVICE_DIR}/keepalived/assets/keepalived.conf
done
sed -i --follow-symlinks "/{{ keepalived_virtual_ips }}/d" ${CONTAINER_SERVICE_DIR}/keepalived/assets/keepalived.conf
touch $FIRST_START_DONE
fi
# try to delete virtual ips from interface
for vip in $(complex-bash-env iterate KEEPALIVED_VIRTUAL_IPS)
do
ip addr del ${vip}/32 dev ${KEEPALIVED_INTERFACE} || true
done
if [ ! -e "/etc/backup-manager.conf" ]; then
ln -sf ${CONTAINER_SERVICE_DIR}/keepalived/assets/keepalived.conf /etc/keepalived/keepalived.conf
fi
exit 0
+4 -40
View File
@@ -30,19 +30,10 @@ clear_container() {
remove_containers_by_cid $CONTAINER_ID
}
is_service_running() {
is_service_running_by_cid $CONTAINER_ID $1
wait_process() {
wait_process_by_cid $CONTAINER_ID $@
}
is_file_exists() {
is_file_exists_by_cid $CONTAINER_ID $1
}
wait_service() {
wait_service_by_cid $CONTAINER_ID $@
}
# generic functions
get_container_ip_by_cid() {
local IP=$(docker inspect -f "{{ .NetworkSettings.IPAddress }}" $1)
@@ -78,34 +69,7 @@ clear_containers_by_cid() {
remove_containers_by_cid $@
}
is_service_running_by_cid() {
docker exec $1 ps cax | grep $2 > /dev/null
}
is_file_exists_by_cid() {
docker exec $1 cat "/etc/my_init_startup_files_completed" > /dev/null 2>&1
}
wait_service_by_cid() {
wait_process_by_cid() {
cid=$1
sleep 1
# first wait image init end
while ! is_file_exists_by_cid $cid /etc/my_init_startup_files_completed
do
sleep 1
done
for service in "${@:2}"
do
# wait service
while ! is_service_running_by_cid $cid $service
do
sleep 1
done
done
sleep 5
docker exec $cid /container/tool/wait-process ${@:2}
}