summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Fedora/Dockerfile98
-rw-r--r--Fedora/README.md13
-rw-r--r--Fedora/gluster-brickmultiplex.service10
-rw-r--r--Fedora/gluster-brickmultiplex.sh74
-rw-r--r--Fedora/gluster-setup.service2
-rw-r--r--Fedora/gluster-setup.sh8
6 files changed, 156 insertions, 49 deletions
diff --git a/Fedora/Dockerfile b/Fedora/Dockerfile
index c0ea63d..da394cc 100644
--- a/Fedora/Dockerfile
+++ b/Fedora/Dockerfile
@@ -1,53 +1,65 @@
FROM fedora
-MAINTAINER Humble Chirammal hchiramm@redhat.com Mohamed Ashiq Liyazudeen mliyazud@redhat.com
+ENV NAME="gluster-fedora" \
+ DESC="GlusterFS on Fedora" \
+ VERSION=0 \
+ RELEASE=1 \
+ ARCH=x86_64 \
+ REPO="$FGC" \
+ container=docker
-ENV container docker
-
-LABEL architecture="x86_64" \
- name="gluster/gluster-fedora" \
- version="3.10" \
+LABEL name="$REPO/$NAME" \
+ version="$VERSION" \
+ release="$RELEASE.$DISTTAG" \
+ architecture="$ARCH" \
vendor="Red Hat, Inc" \
- summary="This image has a running glusterfs service ( Fedora + Gluster 3.10)" \
- io.k8s.display-name="Gluster 3.10 based on Fedora" \
- io.k8s.description="Gluster Image is based on Fedora Image which is a scalable network filesystem. Using common off-the-shelf hardware, you can create large, distributed storage solutions for media streaming, data analysis, and other data- and bandwidth-intensive tasks." \
- description="Gluster Image is based on fedora Image which is a scalable network filesystem. Using common off-the-shelf hardware, you can create large, distributed storage solutions for media streaming, data analysis, and other data- and bandwidth-intensive tasks." \
- io.openshift.tags="gluster,glusterfs,gluster-fedora"
-
+ summary="$DESC" \
+ usage="docker run -d $REPO/$NAME" \
+ io.k8s.display-name="$DESC" \
+ io.k8s.description="GlusterFS is a distributed and scalable network filesystem. Using common, off-the-shelf hardware you can create large, distributed storage solutions for media streaming, data analysis, and other data- and bandwidth-intensive tasks." \
+ io.openshift.tags="gluster,glusterfs,gluster-fedora" \
+ com.redhat.component="$NAME" \
+ maintainer="Jose A. Rivera <jarrpa@redhat.com>, Humble Chirammal <hchiramm@redhat.com>"
-RUN yum -y update;\
-yum -y install systemd; \
-(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/*; \
-yum --setopt=tsflags=nodocs -y install ntp nfs-utils iputils iproute attr glusterfs glusterfs-server glusterfs-geo-replication openssh-server; yum clean all;\
-sed -i '/Port 22/c\Port 2222' /etc/ssh/sshd_config; \
-sed -i 's/Requires\=rpcbind\.service//g' /usr/lib/systemd/system/glusterd.service; \
-sed -i 's/rpcbind\.service/gluster-setup\.service/g' /usr/lib/systemd/system/glusterd.service; \
-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; \
-sed -i.save -e "s#udev_sync = 1#udev_sync = 0#" -e "s#udev_rules = 1#udev_rules = 0#" -e "s#use_lvmetad = 1#use_lvmetad = 0#" /etc/lvm/lvm.conf;
+VOLUME [ "/sys/fs/cgroup/" ]
-VOLUME [ "/sys/fs/cgroup" ]
-ADD gluster-setup.service /etc/systemd/system/gluster-setup.service
-ADD gluster-setup.sh /usr/sbin/gluster-setup.sh
+COPY gluster-setup.sh gluster-brickmultiplex.service gluster-brickmultiplex.sh gluster-setup.service /
-RUN chmod 644 /etc/systemd/system/gluster-setup.service; \
-chmod 500 /usr/sbin/gluster-setup.sh; \
-systemctl disable nfs-server.service; \
-systemctl mask getty.target; \
-systemctl enable ntpd.service; \
-systemctl enable glusterd.service; \
-systemctl enable gluster-setup.service;
+RUN dnf -y update && \
+ sed -i "s/LANG/\#LANG/g" /etc/locale.conf && \
+ dnf -y install systemd-udev ntp glusterfs-server dbus-python nfs-utils attr iputils iproute glusterfs-geo-replication openssh-server openssh-clients cronie tar rsync sos sudo xfsprogs && \
+ dnf clean all && \
+ sed -i '/Port 22/c\Port 2222' /etc/ssh/sshd_config && \
+ sed -i 's/Requires\=rpcbind\.service//g' /usr/lib/systemd/system/glusterd.service && \
+ sed -i 's/rpcbind\.service/gluster-setup\.service/g' /usr/lib/systemd/system/glusterd.service && \
+ sed -i.save -e "s#udev_sync = 1#udev_sync = 0#" -e "s#udev_rules = 1#udev_rules = 0#" -e "s#use_lvmetad = 1#use_lvmetad = 0#" /etc/lvm/lvm.conf && \
+ # Back up the default/base configuration. The target directories get
+ # overwritten with the directories from the host which are initially
+ # empty.
+ 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 && \
+ mv /gluster-setup.sh /usr/sbin/gluster-setup.sh && \
+ mv /gluster-brickmultiplex.service /etc/systemd/system/gluster-brickmultiplex.service && \
+ mv /gluster-brickmultiplex.sh /usr/sbin/gluster-brickmultiplex.sh && \
+ mv /gluster-setup.service /etc/systemd/system/gluster-setup.service && \
+ chmod 644 /etc/systemd/system/gluster-setup.service && \
+ chmod 500 /usr/sbin/gluster-setup.sh && \
+ ln -s /usr/sbin/gluster-setup.sh /usr/sbin/setup.sh && \
+ chmod 644 /etc/systemd/system/gluster-brickmultiplex.service && \
+ chmod 500 /usr/sbin/gluster-brickmultiplex.sh && \
+ systemctl mask getty.target && \
+ systemctl disable systemd-udev-trigger.service && \
+ systemctl disable systemd-udevd.service && \
+ systemctl disable nfs-server.service && \
+ systemctl enable rpcbind.service && \
+ systemctl enable sshd.service && \
+ systemctl enable ntpd.service && \
+ systemctl enable gluster-setup.service && \
+ systemctl enable gluster-brickmultiplex.service && \
+ systemctl enable glusterd.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 49163
+EXPOSE 2222 111 245 443 24006 24007 2049 8080 6010 6011 6012 38465 38466 38468 38469 49152 49153 49154 49156 49157 49158 49159 49160 49161 49162
CMD ["/usr/sbin/init"]
-
diff --git a/Fedora/README.md b/Fedora/README.md
index 787446c..babdfa9 100644
--- a/Fedora/README.md
+++ b/Fedora/README.md
@@ -1 +1,12 @@
-This dockerfile can be used to build a Gluser image from Fedora 21.
+# gluster-fedora Docker image
+
+GlusterFS on Fedora
+
+## Tags
+
+* `latest` ([Dockerfile](https://github.com/jarrpa/gluster-containers/tree/fedora-update/Fedora)):
+ Latest stable image
+
+## Description
+
+GlusterFS is a distributed and scalable network filesystem. Using common, off-the-shelf hardware you can create large, distributed storage solutions for media streaming, data analysis, and other data- and bandwidth-intensive tasks.
diff --git a/Fedora/gluster-brickmultiplex.service b/Fedora/gluster-brickmultiplex.service
new file mode 100644
index 0000000..c0ba482
--- /dev/null
+++ b/Fedora/gluster-brickmultiplex.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Configure brick multiplexing in Gluster
+After=glusterd.service
+
+[Service]
+Type=oneshot
+ExecStart=/usr/sbin/gluster-brickmultiplex.sh
+
+[Install]
+WantedBy=multi-user.target
diff --git a/Fedora/gluster-brickmultiplex.sh b/Fedora/gluster-brickmultiplex.sh
new file mode 100644
index 0000000..968a3e2
--- /dev/null
+++ b/Fedora/gluster-brickmultiplex.sh
@@ -0,0 +1,74 @@
+#!/bin/bash
+
+###
+# Description: Script to enable brick multiplexing in gluster.
+# Copyright (c) 2017 Red Hat, Inc. <http://www.redhat.com>
+#
+# This file is part of GlusterFS.
+#
+# This file is licensed to you under your choice of the GNU Lesser
+# General Public License, version 3 or any later version (LGPLv3 or
+# later), or the GNU General Public License, version 2 (GPLv2), in all
+# cases as published by the Free Software Foundation.
+###
+
+main () {
+ GLUSTERFS_CONF_DIR="/etc/glusterfs"
+ GLUSTERFS_LOG_DIR="/var/log/glusterfs"
+ GLUSTERFS_META_DIR="/var/lib/glusterd"
+ GLUSTERFS_LOG_CONT_DIR="/var/log/glusterfs/container"
+ GLUSTERFS_CUSTOM_FSTAB="/var/lib/heketi/fstab"
+
+ GLUSTER_BRICKMULTIPLEX=${GLUSTER_BRICKMULTIPLEX-yes}
+
+ case "$GLUSTER_BRICKMULTIPLEX" in
+ [nN] | [nN][Oo] )
+ gluster v info | grep 'cluster.brick-multiplex: off' > $GLUSTERFS_LOG_CONT_DIR/brickmultiplexing
+ if [[ ${?} == 0 ]]; then
+ echo "cluster brick-multiplexing already disabled." >> $GLUSTERFS_LOG_CONT_DIR/brickmultiplexing
+ exit 0
+ fi
+
+ gluster --mode=script volume set all cluster.brick-multiplex off >> $GLUSTERFS_LOG_CONT_DIR/brickmultiplexing
+ if [[ ${?} != 0 ]]; then
+ echo "cluster brick-multiplexing set failed." >> $GLUSTERFS_LOG_CONT_DIR/brickmultiplexing
+ exit 1
+ fi
+
+ systemctl restart glusterd
+ if [[ ${?} != 0 ]]; then
+ echo "Restarting glusterd failed." >> $GLUSTERFS_LOG_CONT_DIR/brickmultiplexing
+ exit 1
+ fi
+
+ echo "Brick Multiplexing Successfully Disabled"
+ exit 0
+ ;;
+ [yY] | [yY][Ee][Ss] )
+ gluster v info | grep 'cluster.brick-multiplex: on' > $GLUSTERFS_LOG_CONT_DIR/brickmultiplexing
+ if [[ ${?} == 0 ]]; then
+ echo "cluster brick-multiplexing already set." >> $GLUSTERFS_LOG_CONT_DIR/brickmultiplexing
+ exit 0
+ fi
+
+ gluster --mode=script volume set all cluster.brick-multiplex on >> $GLUSTERFS_LOG_CONT_DIR/brickmultiplexing
+ if [[ ${?} != 0 ]]; then
+ echo "cluster brick-multiplexing set failed." >> $GLUSTERFS_LOG_CONT_DIR/brickmultiplexing
+ exit 1
+ fi
+
+ systemctl restart glusterd
+ if [[ ${?} != 0 ]]; then
+ echo "Restarting glusterd failed." >> $GLUSTERFS_LOG_CONT_DIR/brickmultiplexing
+ exit 1
+ fi
+
+ echo "Brick Multiplexing Successfully Enabled"
+ exit 0
+ ;;
+ *) echo "Invalid input"
+ ;;
+ esac
+}
+
+main
diff --git a/Fedora/gluster-setup.service b/Fedora/gluster-setup.service
index 4bb8b68..4cccd57 100644
--- a/Fedora/gluster-setup.service
+++ b/Fedora/gluster-setup.service
@@ -1,6 +1,6 @@
[Unit]
Description=Configuring GlusterFS in container
-Before=glusterd.service
+Before=rpcbind.service
[Service]
Type=oneshot
diff --git a/Fedora/gluster-setup.sh b/Fedora/gluster-setup.sh
index 77ec6ef..5ad062c 100644
--- a/Fedora/gluster-setup.sh
+++ b/Fedora/gluster-setup.sh
@@ -2,7 +2,7 @@
###
# Description: Script to move the glusterfs initial setup to bind mounted directories of Atomic Host.
-# Copyright (c) 2016 Red Hat, Inc. <http://www.redhat.com>
+# Copyright (c) 2016-2017 Red Hat, Inc. <http://www.redhat.com>
#
# This file is part of GlusterFS.
#
@@ -62,7 +62,7 @@ main () {
fi
echo "Mount command Successful" >> $GLUSTERFS_LOG_CONT_DIR/mountfstab
sleep 40
- cut -f 2 -d " " $GLUSTERFS_CUSTOM_FSTAB | while read line
+ cat $GLUSTERFS_CUSTOM_FSTAB|cut -f 2 -d " " | while read line
do
if grep -qs "$line" /proc/mounts; then
echo "$line mounted." >> $GLUSTERFS_LOG_CONT_DIR/mountfstab
@@ -75,12 +75,12 @@ main () {
sleep 1
fi
else
- grep $line $GLUSTERFS_CUSTOM_FSTAB >> $GLUSTERFS_LOG_CONT_DIR/failed_bricks
+ cat $GLUSTERFS_CUSTOM_FSTAB|grep $line >> $GLUSTERFS_LOG_CONT_DIR/failed_bricks
echo "$line not mounted." >> $GLUSTERFS_LOG_CONT_DIR/mountfstab
sleep 0.5
fi
done
- if [ $(wc -l $GLUSTERFS_LOG_CONT_DIR/failed_bricks ) -gt 1 ]
+ if [ $(cat $GLUSTERFS_LOG_CONT_DIR/failed_bricks | wc -l) -gt 1 ]
then
vgscan --mknodes > $GLUSTERFS_LOG_CONT_DIR/vgscan_mknodes
sleep 10