From 89a69bebc58d0af6b00d4fc2690cc48d5621958a Mon Sep 17 00:00:00 2001 From: ofreax Date: Fri, 12 Aug 2016 14:03:36 +0200 Subject: [PATCH 2/6] Upgrade baseimage: light-baseimage:0.2.5 --- CHANGELOG.md | 3 +++ Makefile | 4 ++-- README.md | 28 +++++++++++++--------------- image/Dockerfile | 2 +- 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05ae6d5..f8de246 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 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 diff --git a/Makefile b/Makefile index d6d205c..ed35a08 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ NAME = osixia/keepalived -VERSION = 0.2.2 +VERSION = 0.2.3 .PHONY: all build build-nocache test tag_latest release @@ -15,7 +15,7 @@ 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 diff --git a/README.md b/README.md index 99924ce..25d0763 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,10 @@ [![Docker Pulls](https://img.shields.io/docker/pulls/osixia/keepalived.svg)][hub] [![Docker Stars](https://img.shields.io/docker/stars/osixia/keepalived.svg)][hub] -[![Image Size](https://img.shields.io/imagelayers/image-size/osixia/keepalived/latest.svg)](https://imagelayers.io/?images=osixia/keepalived:latest) -[![Image Layers](https://img.shields.io/imagelayers/layers/osixia/keepalived/latest.svg)](https://imagelayers.io/?images=osixia/keepalived:latest) [hub]: https://hub.docker.com/r/osixia/keepalived/ -Latest release: 0.2.2 - Keepalived 1.2.23 - [Changelog](CHANGELOG.md) | [Docker Hub](https://hub.docker.com/r/osixia/keepalived/)  +Latest release: 0.2.3 - Keepalived 1.2.23 - [Changelog](CHANGELOG.md) | [Docker Hub](https://hub.docker.com/r/osixia/keepalived/)  A docker image to run Keepalived. > [keepalived.org](http://keepalived.org/) @@ -23,7 +21,7 @@ A docker image to run Keepalived. - [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:0.2.2 image](#extend-osixiakeepalived022-image) + - [Extend osixia/keepalived:0.2.3 image](#extend-osixiakeepalived023-image) - [Make your own keepalived image](#make-your-own-keepalived-image) - [Tests](#tests) - [Under the hood: osixia/light-baseimage](#under-the-hood-osixialight-baseimage) @@ -33,7 +31,7 @@ A docker image to run Keepalived. 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 --cap-add=NET_ADMIN --net=host -d osixia/keepalived:0.2.2 + docker run --cap-add=NET_ADMIN --net=host -d osixia/keepalived:0.2.3 ## Beginner Guide @@ -43,7 +41,7 @@ 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:0.2.2 + docker run --volume /data/my-keepalived.conf:/container/service/keepalived/assets/keepalived.conf --detach osixia/keepalived:0.2.3 - Add your config file by extending or cloning this image, please refer to the [Advanced User Guide](#advanced-user-guide) @@ -53,7 +51,7 @@ You may have some problems with mounted files on some systems. The startup scrip To fix that run the container with `--copy-service` argument : - docker run [your options] osixia/keepalived:0.2.2 --copy-service + docker run [your options] osixia/keepalived:0.2.3 --copy-service ### Debug @@ -62,11 +60,11 @@ Available levels are: `none`, `error`, `warning`, `info`, `debug` and `trace`. Example command to run the container in `debug` mode: - docker run --detach osixia/keepalived:0.2.2 --loglevel debug + docker run --detach osixia/keepalived:0.2.3 --loglevel debug See all command line options: - docker run osixia/keepalived:0.2.2 --help + docker run osixia/keepalived:0.2.3 --help ## Environment Variables @@ -86,7 +84,7 @@ See how to [set your own environment variables](#set-your-own-environment-variab 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:0.2.2 + docker run --env KEEPALIVED_UNICAST_PEERS="#PYTHON2BASH:['192.168.1.10', '192.168.1.11']" --detach osixia/keepalived:0.2.3 To convert yaml to python online : http://yaml-online-parser.appspot.com/ @@ -108,7 +106,7 @@ See how to [set your own environment variables](#set-your-own-environment-variab 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:0.2.2 + --env KEEPALIVED_PRIORITY="100" --detach osixia/keepalived:0.2.3 #### Link environment file @@ -116,7 +114,7 @@ Environment variables can be set by adding the --env argument in the command lin 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:0.2.2 + --detach osixia/keepalived:0.2.3 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). @@ -126,13 +124,13 @@ This is the best solution if you have a private registry. Please refer to the [A ## Advanced User Guide -### Extend osixia/keepalived:0.2.2 image +### Extend osixia/keepalived:0.2.3 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/osixia/keepalived:0.2.2 + FROM osixia/osixia/keepalived:0.2.3 MAINTAINER Your Name ADD keepalived.conf /container/service/keepalived/assets/keepalived.conf @@ -151,7 +149,7 @@ Clone this project : Adapt Makefile, set your image NAME and VERSION, for example : NAME = osixia/keepalived - VERSION = 0.2.2 + VERSION = 0.2.3 becomes : NAME = billy-the-king/keepalived diff --git a/image/Dockerfile b/image/Dockerfile index c870904..afc6085 100644 --- a/image/Dockerfile +++ b/image/Dockerfile @@ -1,6 +1,6 @@ # Use osixia/light-baseimage # sources: https://github.com/osixia/docker-light-baseimage -FROM osixia/light-baseimage:0.2.4 +FROM osixia/light-baseimage:0.2.5 MAINTAINER Bertrand Gouny # Keepalived version From e8fb1f02e2297bb8c5470b97005eafa1d501e4b6 Mon Sep 17 00:00:00 2001 From: ofreax Date: Fri, 19 Aug 2016 11:58:49 +0200 Subject: [PATCH 3/6] split environment variables --- image/environment/default.startup.yaml | 16 ++++++++++++++++ image/environment/default.yaml | 17 ----------------- 2 files changed, 16 insertions(+), 17 deletions(-) create mode 100644 image/environment/default.startup.yaml diff --git a/image/environment/default.startup.yaml b/image/environment/default.startup.yaml new file mode 100644 index 0000000..b3017d3 --- /dev/null +++ b/image/environment/default.startup.yaml @@ -0,0 +1,16 @@ +KEEPALIVED_INTERFACE: eth0 +KEEPALIVED_PASSWORD: d0cker + +# For electing MASTER, highest priority wins. +# to be MASTER, make 50 more than other machines +KEEPALIVED_PRIORITY: 150 + +KEEPALIVED_UNICAST_PEERS: + - 192.168.1.10 + - 192.168.1.11 + +KEEPALIVED_VIRTUAL_IPS: + - 192.168.1.231 + - 192.168.1.232 + +KEEPALIVED_NOTIFY: /container/service/keepalived/assets/notify.sh diff --git a/image/environment/default.yaml b/image/environment/default.yaml index 738bd6f..ebeafb2 100644 --- a/image/environment/default.yaml +++ b/image/environment/default.yaml @@ -1,18 +1 @@ -KEEPALIVED_INTERFACE: eth0 -KEEPALIVED_PASSWORD: d0cker - -# For electing MASTER, highest priority wins. -# to be MASTER, make 50 more than other machines -KEEPALIVED_PRIORITY: 150 - -KEEPALIVED_UNICAST_PEERS: - - 192.168.1.10 - - 192.168.1.11 - -KEEPALIVED_VIRTUAL_IPS: - - 192.168.1.231 - - 192.168.1.232 - -KEEPALIVED_NOTIFY: /container/service/keepalived/assets/notify.sh - KEEPALIVED_COMMAND_LINE_ARGUMENTS: --log-detail --dump-conf From 4ae2a8641f82796513952c5b78ce6b131ea5730f Mon Sep 17 00:00:00 2001 From: ofreax Date: Sat, 27 Aug 2016 10:37:00 +0200 Subject: [PATCH 4/6] finish script --- image/service/keepalived/finish.sh | 13 +++++++++++++ image/service/keepalived/startup.sh | 6 ++++++ 2 files changed, 19 insertions(+) create mode 100755 image/service/keepalived/finish.sh diff --git a/image/service/keepalived/finish.sh b/image/service/keepalived/finish.sh new file mode 100755 index 0000000..9d1280a --- /dev/null +++ b/image/service/keepalived/finish.sh @@ -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 diff --git a/image/service/keepalived/startup.sh b/image/service/keepalived/startup.sh index 51206db..387f969 100755 --- a/image/service/keepalived/startup.sh +++ b/image/service/keepalived/startup.sh @@ -39,6 +39,12 @@ if [ ! -e "$FIRST_START_DONE" ]; then 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 From 5028b568eb9e503eb41b181a5bab54692ae3a687 Mon Sep 17 00:00:00 2001 From: ofreax Date: Mon, 29 Aug 2016 09:25:20 +0200 Subject: [PATCH 5/6] - --- image/service/keepalived/assets/keepalived.conf | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/image/service/keepalived/assets/keepalived.conf b/image/service/keepalived/assets/keepalived.conf index e446bab..e553f0f 100644 --- a/image/service/keepalived/assets/keepalived.conf +++ b/image/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 }} } From 56b686c9cdc5b1c11b400a3436e12815624feb16 Mon Sep 17 00:00:00 2001 From: ofreax Date: Fri, 2 Sep 2016 20:56:07 +0200 Subject: [PATCH 6/6] test --- test/test_helper.bash | 40 ++++------------------------------------ 1 file changed, 4 insertions(+), 36 deletions(-) diff --git a/test/test_helper.bash b/test/test_helper.bash index 676eefe..2297afa 100644 --- a/test/test_helper.bash +++ b/test/test_helper.bash @@ -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,30 +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 $2 > /dev/null 2>&1 -} - -wait_service_by_cid() { - +wait_process_by_cid() { cid=$1 - - # first wait image init end - while ! is_file_exists_by_cid $cid /container/run/state/startup-done - do - sleep 0.5 - done - - for service in "${@:2}" - do - # wait service - while ! is_service_running_by_cid $cid $service - do - sleep 0.5 - done - done + docker exec $cid /container/tool/wait-process ${@:2} }