From 67d1e23e56f820d6e994d1bbbbb9de4ebaad852c Mon Sep 17 00:00:00 2001 From: Tobias Florek Date: Thu, 23 Jun 2016 14:37:36 +0200 Subject: [PATCH 01/11] install epel via centos package --- CentOS/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CentOS/Dockerfile b/CentOS/Dockerfile index bb4b333..86d4bbc 100644 --- a/CentOS/Dockerfile +++ b/CentOS/Dockerfile @@ -17,7 +17,7 @@ rm -f /lib/systemd/system/anaconda.target.wants/*; RUN yum --setopt=tsflags=nodocs -y install wget nfs-utils attr iputils iproute centos-release-gluster -RUN wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm; rpm -ivh epel-release-latest-7.noarch.rpm; rm epel-release-latest-7.noarch.rpm; +RUN yum --setopt=tsflags=nodocs -y install epel-release RUN yum --setopt=tsflags=nodocs -y install openssh-server openssh-clients ntp rsync tar cronie sudo xfsprogs glusterfs glusterfs-server glusterfs-geo-replication;yum clean all; From b15d94789169aed0a4eb55eb553d8ff51cdce5fc Mon Sep 17 00:00:00 2001 From: Tobias Florek Date: Thu, 23 Jun 2016 16:52:15 +0200 Subject: [PATCH 02/11] group yum commands --- CentOS/Dockerfile | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/CentOS/Dockerfile b/CentOS/Dockerfile index 86d4bbc..91e2f1b 100644 --- a/CentOS/Dockerfile +++ b/CentOS/Dockerfile @@ -4,22 +4,19 @@ MAINTAINER Humble Chirammal hchiramm@redhat.com ENV container docker -RUN yum --setopt=tsflags=nodocs -y update; yum clean all; - -RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \ -rm -f /lib/systemd/system/multi-user.target.wants/*;\ -rm -f /etc/systemd/system/*.wants/*;\ -rm -f /lib/systemd/system/local-fs.target.wants/*; \ -rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ -rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ -rm -f /lib/systemd/system/basic.target.wants/*;\ -rm -f /lib/systemd/system/anaconda.target.wants/*; - -RUN yum --setopt=tsflags=nodocs -y install wget nfs-utils attr iputils iproute centos-release-gluster - -RUN yum --setopt=tsflags=nodocs -y install epel-release - -RUN yum --setopt=tsflags=nodocs -y install openssh-server openssh-clients ntp rsync tar cronie sudo xfsprogs glusterfs glusterfs-server glusterfs-geo-replication;yum clean all; +RUN yum --setopt=tsflags=nodocs -y install centos-release-gluster epel-release && \ + yum --setopt=tsflags=nodocs -y install wget nfs-utils attr iputils iproute \ + openssh-server openssh-clients ntp rsync tar cronie sudo xfsprogs \ + glusterfs glusterfs-server glusterfs-geo-replication && \ + yum clean all && \ + (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done) && \ + rm -f /lib/systemd/system/multi-user.target.wants/* && \ + rm -f /etc/systemd/system/*.wants/* && \ + rm -f /lib/systemd/system/local-fs.target.wants/* && \ + rm -f /lib/systemd/system/sockets.target.wants/*udev* && \ + rm -f /lib/systemd/system/sockets.target.wants/*initctl* && \ + rm -f /lib/systemd/system/basic.target.wants/* && \ + rm -f /lib/systemd/system/anaconda.target.wants/* RUN sed -i '/Defaults requiretty/c\#Defaults requiretty' /etc/sudoers From 8fd43ffde4d17b48b3c73bce9780de9c40fb2aaa Mon Sep 17 00:00:00 2001 From: Tobias Florek Date: Thu, 23 Jun 2016 16:52:50 +0200 Subject: [PATCH 03/11] remove redundant chpasswd RUN and VOLUME --- CentOS/Dockerfile | 3 --- 1 file changed, 3 deletions(-) diff --git a/CentOS/Dockerfile b/CentOS/Dockerfile index 91e2f1b..86e63b2 100644 --- a/CentOS/Dockerfile +++ b/CentOS/Dockerfile @@ -37,9 +37,6 @@ RUN chmod 644 /etc/systemd/system/gluster-setup.service ADD gluster-setup.sh /usr/sbin/gluster-setup.sh RUN chmod 500 /usr/sbin/gluster-setup.sh -RUN echo 'root:password' | chpasswd -VOLUME [ “/sys/fs/cgroup” ] - RUN systemctl disable nfs-server.service RUN systemctl enable ntpd.service RUN systemctl enable rpcbind.service From 1239d34bfa6e96f667c5d8e3e812bfcc9c1f5d25 Mon Sep 17 00:00:00 2001 From: Tobias Florek Date: Thu, 23 Jun 2016 16:56:21 +0200 Subject: [PATCH 04/11] VOLUME for the persistent dirs --- CentOS/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CentOS/Dockerfile b/CentOS/Dockerfile index 86e63b2..0c61d86 100644 --- a/CentOS/Dockerfile +++ b/CentOS/Dockerfile @@ -3,6 +3,8 @@ FROM centos:latest MAINTAINER Humble Chirammal hchiramm@redhat.com ENV container docker +VOLUME [ "/sys/fs/cgroup", "/etc/glusterfs", "/var/lib/glusterd", "/var/log/glusterfs" ] +EXPOSE 2222 111 245 443 24007 2049 8080 6010 6011 6012 38465 38466 38468 38469 49152 49153 49154 49156 49157 49158 49159 49160 49161 49162 RUN yum --setopt=tsflags=nodocs -y install centos-release-gluster epel-release && \ yum --setopt=tsflags=nodocs -y install wget nfs-utils attr iputils iproute \ From a8135f7e27efaba961c006d542240c4a8f0d14b8 Mon Sep 17 00:00:00 2001 From: Tobias Florek Date: Thu, 23 Jun 2016 17:02:23 +0200 Subject: [PATCH 05/11] group all RUNs --- CentOS/Dockerfile | 43 +++++++++++++++---------------------------- 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/CentOS/Dockerfile b/CentOS/Dockerfile index 0c61d86..5c8362b 100644 --- a/CentOS/Dockerfile +++ b/CentOS/Dockerfile @@ -6,6 +6,9 @@ ENV container docker VOLUME [ "/sys/fs/cgroup", "/etc/glusterfs", "/var/lib/glusterd", "/var/log/glusterfs" ] EXPOSE 2222 111 245 443 24007 2049 8080 6010 6011 6012 38465 38466 38468 38469 49152 49153 49154 49156 49157 49158 49159 49160 49161 49162 +ADD gluster-setup.service /etc/systemd/system/gluster-setup.service +ADD gluster-setup.sh /usr/sbin/gluster-setup.sh + RUN yum --setopt=tsflags=nodocs -y install centos-release-gluster epel-release && \ yum --setopt=tsflags=nodocs -y install wget nfs-utils attr iputils iproute \ openssh-server openssh-clients ntp rsync tar cronie sudo xfsprogs \ @@ -18,33 +21,17 @@ RUN yum --setopt=tsflags=nodocs -y install centos-release-gluster epel-release & rm -f /lib/systemd/system/sockets.target.wants/*udev* && \ rm -f /lib/systemd/system/sockets.target.wants/*initctl* && \ rm -f /lib/systemd/system/basic.target.wants/* && \ - rm -f /lib/systemd/system/anaconda.target.wants/* - -RUN sed -i '/Defaults requiretty/c\#Defaults requiretty' /etc/sudoers - -# Changing the port of sshd to avoid conflicting with host sshd -RUN sed -i '/Port 22/c\Port 2222' /etc/ssh/sshd_config - -# Backing up gluster config as it overlaps when bind mounting. -RUN mkdir -p /etc/glusterfs_bkp /var/lib/glusterd_bkp /var/log/glusterfs_bkp;\ -cp -r /etc/glusterfs/* /etc/glusterfs_bkp;\ -cp -r /var/lib/glusterd/* /var/lib/glusterd_bkp;\ -cp -r /var/log/glusterfs/* /var/log/glusterfs_bkp; - -# Adding script to move the glusterfs config file to location -ADD gluster-setup.service /etc/systemd/system/gluster-setup.service -RUN chmod 644 /etc/systemd/system/gluster-setup.service - -# Adding script to move the glusterfs config file to location -ADD gluster-setup.sh /usr/sbin/gluster-setup.sh -RUN chmod 500 /usr/sbin/gluster-setup.sh - -RUN systemctl disable nfs-server.service -RUN systemctl enable ntpd.service -RUN systemctl enable rpcbind.service -RUN systemctl enable glusterd.service -RUN systemctl enable gluster-setup.service - -EXPOSE 2222 111 245 443 24007 2049 8080 6010 6011 6012 38465 38466 38468 38469 49152 49153 49154 49156 49157 49158 49159 49160 49161 49162 + rm -f /lib/systemd/system/anaconda.target.wants/* && \ + sed -i '/Defaults requiretty/c\#Defaults requiretty' /etc/sudoers && \ + sed -i '/Port 22/c\Port 2222' /etc/ssh/sshd_config && \ + for dir in /etc/glusterfs /var/lib/glusterd /var/log/glusterfs; do \ + mkdir -p ${dir}_bkp && \ + cp -r $dir/* ${dir}_bkp ; \ + done && \ + chmod 644 /etc/systemd/system/gluster-setup.service && \ + chmod 500 /usr/sbin/gluster-setup.sh && \ + systemctl disable nfs-server.service && \ + systemctl enable ntpd.service rpcbind.service glusterd.service gluster-setup.service && \ + echo 'root:password' | chpasswd CMD ["/usr/sbin/init"] From cc0fe17f80b00f91643095d12b70d4f3beee96c9 Mon Sep 17 00:00:00 2001 From: Tobias Florek Date: Thu, 23 Jun 2016 17:12:11 +0200 Subject: [PATCH 06/11] do not duplicate restore actions --- CentOS/gluster-setup.sh | 54 ++++++++++++++--------------------------- 1 file changed, 18 insertions(+), 36 deletions(-) diff --git a/CentOS/gluster-setup.sh b/CentOS/gluster-setup.sh index 98570f5..b8937a7 100644 --- a/CentOS/gluster-setup.sh +++ b/CentOS/gluster-setup.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e ### # Description: Script to move the glusterfs initial setup to bind mounted directories of Atomic Host. @@ -12,58 +12,40 @@ # cases as published by the Free Software Foundation. ### +DIRS_TO_RESTORE="/etc/glusterfs /var/log/glusterfs /var/lib/glusterd" + +err() { + echo -ne $* 1>&2 +} + main () { if test "$(ls /var/lib/heketi/fstab)" then mount -a --fstab /var/lib/heketi/fstab if [ $? -eq 1 ] then - echo "mount failed" + err "mount failed" exit 1 fi echo "Mount Successful" else echo "heketi-fstab not found" fi - DIR_1="/etc/glusterfs" - DIR_2="/var/log/glusterfs" - DIR_3="/var/lib/glusterd" - var=0 - for i in $DIR_1 $DIR_2 $DIR_3 + + for dir in $DIRS_TO_RESTORE do - if test "$(ls $i)" + if test "$(ls $dir)" then - echo "$i is not empty" - var=$((var+1)) + echo "$dir is not empty" + else + if ! cp -r ${dir}_bkp/* $dir + then + err "Failed to copy $dir" + exit 1 + fi fi done - if [ $var -eq 3 ] - then - exit 1 - fi - - cp -r /etc/glusterfs_bkp/* /etc/glusterfs - if [ $? -eq 1 ] - then - echo "Failed to copy $DIR_1" - exit 1 - fi - - cp -r /var/log/glusterfs_bkp/* /var/log/glusterfs - if [ $? -eq 1 ] - then - echo "Failed to copy $DIR_2" - exit 1 - fi - - cp -r /var/lib/glusterd_bkp/* /var/lib/glusterd - if [ $? -eq 1 ] - then - echo "Failed to copy $DIR_3" - exit 1 - fi - echo "Script Ran Successfully" } main From c70f353c53834df9ee631eb02a70f8c1ab6d6f5b Mon Sep 17 00:00:00 2001 From: Tobias Florek Date: Thu, 23 Jun 2016 17:22:56 +0200 Subject: [PATCH 07/11] check that /var/lib/heketi/fstab is a file --- CentOS/gluster-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CentOS/gluster-setup.sh b/CentOS/gluster-setup.sh index b8937a7..f9c1108 100644 --- a/CentOS/gluster-setup.sh +++ b/CentOS/gluster-setup.sh @@ -19,7 +19,7 @@ err() { } main () { - if test "$(ls /var/lib/heketi/fstab)" + if [ -f /var/lib/heketi/fstab ] then mount -a --fstab /var/lib/heketi/fstab if [ $? -eq 1 ] From 5fd8c0dcb97dbc9423d19ef0ec280563eb4918e3 Mon Sep 17 00:00:00 2001 From: Tobias Florek Date: Thu, 23 Jun 2016 17:25:24 +0200 Subject: [PATCH 08/11] harmonize indenting --- CentOS/gluster-setup.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/CentOS/gluster-setup.sh b/CentOS/gluster-setup.sh index f9c1108..530e2cc 100644 --- a/CentOS/gluster-setup.sh +++ b/CentOS/gluster-setup.sh @@ -21,15 +21,15 @@ err() { main () { if [ -f /var/lib/heketi/fstab ] then - mount -a --fstab /var/lib/heketi/fstab - if [ $? -eq 1 ] - then - err "mount failed" - exit 1 - fi - echo "Mount Successful" + mount -a --fstab /var/lib/heketi/fstab + if [ $? -eq 1 ] + then + err "mount failed" + exit 1 + fi + echo "Mount Successful" else - echo "heketi-fstab not found" + echo "heketi-fstab not found" fi for dir in $DIRS_TO_RESTORE @@ -40,8 +40,8 @@ main () { else if ! cp -r ${dir}_bkp/* $dir then - err "Failed to copy $dir" - exit 1 + err "Failed to copy $dir" + exit 1 fi fi done From 4932edfa46d16385ca83d349f8a260fbd95e4440 Mon Sep 17 00:00:00 2001 From: Tobias Florek Date: Thu, 23 Jun 2016 17:30:14 +0200 Subject: [PATCH 09/11] mention heketi and where to store its fstab --- CentOS/Dockerfile | 2 +- CentOS/README.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CentOS/Dockerfile b/CentOS/Dockerfile index 5c8362b..e336959 100644 --- a/CentOS/Dockerfile +++ b/CentOS/Dockerfile @@ -3,7 +3,7 @@ FROM centos:latest MAINTAINER Humble Chirammal hchiramm@redhat.com ENV container docker -VOLUME [ "/sys/fs/cgroup", "/etc/glusterfs", "/var/lib/glusterd", "/var/log/glusterfs" ] +VOLUME [ "/sys/fs/cgroup", "/etc/glusterfs", "/var/lib/glusterd", "/var/log/glusterfs", "/var/lib/heketi" ] EXPOSE 2222 111 245 443 24007 2049 8080 6010 6011 6012 38465 38466 38468 38469 49152 49153 49154 49156 49157 49158 49159 49160 49161 49162 ADD gluster-setup.service /etc/systemd/system/gluster-setup.service diff --git a/CentOS/README.md b/CentOS/README.md index 0b065a0..d85f865 100644 --- a/CentOS/README.md +++ b/CentOS/README.md @@ -1 +1,3 @@ This dockerfile can be used to build a CentOS Gluster Container. + +If you are using heketi, it assumes you volume-mount /var/lib/heketi and store its fstab there. From 1bd680414ac41d4358deb6a37ebfbbdd2560480d Mon Sep 17 00:00:00 2001 From: Tobias Florek Date: Fri, 24 Jun 2016 11:22:17 +0200 Subject: [PATCH 10/11] selectively run non-core services --- CentOS/Dockerfile | 2 +- CentOS/README.md | 12 +++++++++++- CentOS/gluster-setup.sh | 21 +++++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/CentOS/Dockerfile b/CentOS/Dockerfile index e336959..c7b3aaa 100644 --- a/CentOS/Dockerfile +++ b/CentOS/Dockerfile @@ -31,7 +31,7 @@ RUN yum --setopt=tsflags=nodocs -y install centos-release-gluster epel-release & chmod 644 /etc/systemd/system/gluster-setup.service && \ chmod 500 /usr/sbin/gluster-setup.sh && \ systemctl disable nfs-server.service && \ - systemctl enable ntpd.service rpcbind.service glusterd.service gluster-setup.service && \ + systemctl enable glusterd.service gluster-setup.service && \ echo 'root:password' | chpasswd CMD ["/usr/sbin/init"] diff --git a/CentOS/README.md b/CentOS/README.md index d85f865..f1ab18c 100644 --- a/CentOS/README.md +++ b/CentOS/README.md @@ -1,3 +1,13 @@ This dockerfile can be used to build a CentOS Gluster Container. -If you are using heketi, it assumes you volume-mount /var/lib/heketi and store its fstab there. +## Automounting bricks + +If you volume-mount /var/lib/heketi/fstab, the container will mount all bricks in that file. + +## Enabling additional services + +By default, only glusterd will be enabled. To enable other services, set the following env variables to `yes`. + + * `ENABLE_NTPD` + * `ENABLE_SSHD` + * `ENABLE_RPCBIND` diff --git a/CentOS/gluster-setup.sh b/CentOS/gluster-setup.sh index 530e2cc..23884c8 100644 --- a/CentOS/gluster-setup.sh +++ b/CentOS/gluster-setup.sh @@ -13,11 +13,27 @@ ### DIRS_TO_RESTORE="/etc/glusterfs /var/log/glusterfs /var/lib/glusterd" +FSTAB=${FSTAB-/var/lib/heketi/fstab} +ENABLE_NTPD="${ENABLE_NTPD-yes}" +ENABLE_SSHD="${ENABLE_SSHD-no}" +ENABLE_RPCBIND="${ENABLE_RPCBIND-yes}" err() { echo -ne $* 1>&2 } +enable_start_unit_if_env() { + local unit="$1" + local env_var="$1" + case ${env_var,,} in + yes|y|true|t) + echo "Enable and start $unit" + systemctl enable $unit + systemctl start $unit + ;; + esac +} + main () { if [ -f /var/lib/heketi/fstab ] then @@ -46,6 +62,11 @@ main () { fi done + enable_start_unit_if_env rpcbind.service "$ENABLE_RPCBIND" + enable_start_unit_if_env ntpd.service "$ENABLE_NTPD" + enable_start_unit_if_env sshd.service "$ENABLE_SSHD" + echo "Script Ran Successfully" } + main From 993f3cc15d0f63353f4fca1fd0e69db36ce5b706 Mon Sep 17 00:00:00 2001 From: Tobias Florek Date: Fri, 24 Jun 2016 11:34:54 +0200 Subject: [PATCH 11/11] allow specifying fstab to mount --- CentOS/README.md | 7 ++++++- CentOS/gluster-setup.sh | 7 +++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/CentOS/README.md b/CentOS/README.md index f1ab18c..4c95aa8 100644 --- a/CentOS/README.md +++ b/CentOS/README.md @@ -1,8 +1,13 @@ This dockerfile can be used to build a CentOS Gluster Container. + ## Automounting bricks -If you volume-mount /var/lib/heketi/fstab, the container will mount all bricks in that file. +If you volume-mount an `fstab(5)` file, the container will mount all bricks in that file. +Specify the name with environment variable `FSTAB`. + +A deprecated way is volume mounting /var/lib/heketi/fstab without setting `FSTAB` to that file. + ## Enabling additional services diff --git a/CentOS/gluster-setup.sh b/CentOS/gluster-setup.sh index 23884c8..8803f7c 100644 --- a/CentOS/gluster-setup.sh +++ b/CentOS/gluster-setup.sh @@ -35,17 +35,16 @@ enable_start_unit_if_env() { } main () { - if [ -f /var/lib/heketi/fstab ] + if [ -f "$FSTAB" ] then - mount -a --fstab /var/lib/heketi/fstab - if [ $? -eq 1 ] + if ! mount -a --fstab "$FSTAB" then err "mount failed" exit 1 fi echo "Mount Successful" else - echo "heketi-fstab not found" + echo "fstab file $FSTAB not found" fi for dir in $DIRS_TO_RESTORE