diff options
Diffstat (limited to 'Fedora')
-rw-r--r-- | Fedora/Dockerfile | 27 | ||||
-rw-r--r-- | Fedora/gluster-setup.service | 10 | ||||
-rw-r--r-- | Fedora/gluster-setup.sh | 96 |
3 files changed, 127 insertions, 6 deletions
diff --git a/Fedora/Dockerfile b/Fedora/Dockerfile index fc3f722..c0ea63d 100644 --- a/Fedora/Dockerfile +++ b/Fedora/Dockerfile @@ -25,14 +25,29 @@ 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 wget nfs-utils iputils iproute attr glusterfs glusterfs-server glusterfs-geo-replication openssh-server; yum clean all;\ -systemctl disable nfs-server.service;\ -systemctl enable rpcbind.service;\ -systemctl enable glusterd.service; +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" ] - -EXPOSE 22 111 245 443 24007 2049 8080 6010 6011 6012 38465 38466 38468 38469 49152 49153 49154 49156 49157 49158 49159 49160 49161 49162 49163 +ADD gluster-setup.service /etc/systemd/system/gluster-setup.service +ADD gluster-setup.sh /usr/sbin/gluster-setup.sh + +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; + +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 CMD ["/usr/sbin/init"] diff --git a/Fedora/gluster-setup.service b/Fedora/gluster-setup.service new file mode 100644 index 0000000..4bb8b68 --- /dev/null +++ b/Fedora/gluster-setup.service @@ -0,0 +1,10 @@ +[Unit] +Description=Configuring GlusterFS in container +Before=glusterd.service + +[Service] +Type=oneshot +ExecStart=/usr/sbin/gluster-setup.sh + +[Install] +WantedBy=multi-user.target diff --git a/Fedora/gluster-setup.sh b/Fedora/gluster-setup.sh new file mode 100644 index 0000000..77ec6ef --- /dev/null +++ b/Fedora/gluster-setup.sh @@ -0,0 +1,96 @@ +#!/bin/bash + +### +# 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> +# +# 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" + + mkdir $GLUSTERFS_LOG_CONT_DIR + for i in $GLUSTERFS_CONF_DIR $GLUSTERFS_LOG_DIR $GLUSTERFS_META_DIR + do + if test "$(ls $i)" + then + echo "$i is not empty" + else + bkp=$i"_bkp" + cp -r $bkp/* $i + if [ $? -eq 1 ] + then + echo "Failed to copy $i" + exit 1 + fi + ls -R $i > ${GLUSTERFS_LOG_CONT_DIR}/${i}_ls + fi + done + + if test "$(ls $GLUSTERFS_LOG_CONT_DIR)" + then + echo "" > $GLUSTERFS_LOG_CONT_DIR/brickattr + echo "" > $GLUSTERFS_LOG_CONT_DIR/failed_bricks + echo "" > $GLUSTERFS_LOG_CONT_DIR/lvscan + echo "" > $GLUSTERFS_LOG_CONT_DIR/mountfstab + else + mkdir $GLUSTERFS_LOG_CONT_DIR + echo "" > $GLUSTERFS_LOG_CONT_DIR/brickattr + echo "" > $GLUSTERFS_LOG_CONT_DIR/failed_bricks + fi + if test "$(ls $GLUSTERFS_CUSTOM_FSTAB)" + then + sleep 5 + pvscan > $GLUSTERFS_LOG_CONT_DIR/pvscan + vgscan > $GLUSTERFS_LOG_CONT_DIR/vgscan + lvscan > $GLUSTERFS_LOG_CONT_DIR/lvscan + mount -a --fstab $GLUSTERFS_CUSTOM_FSTAB > $GLUSTERFS_LOG_CONT_DIR/mountfstab + if [ $? -eq 1 ] + then + echo "mount binary not failed" >> $GLUSTERFS_LOG_CONT_DIR/mountfstab + exit 1 + fi + echo "Mount command Successful" >> $GLUSTERFS_LOG_CONT_DIR/mountfstab + sleep 40 + cut -f 2 -d " " $GLUSTERFS_CUSTOM_FSTAB | while read line + do + if grep -qs "$line" /proc/mounts; then + echo "$line mounted." >> $GLUSTERFS_LOG_CONT_DIR/mountfstab + if test "ls $line/brick" + then + echo "$line/brick is present" >> $GLUSTERFS_LOG_CONT_DIR/mountfstab + getfattr -d -m . -e hex $line/brick >> $GLUSTERFS_LOG_CONT_DIR/brickattr + else + echo "$line/brick is not present" >> $GLUSTERFS_LOG_CONT_DIR/mountfstab + sleep 1 + fi + else + grep $line $GLUSTERFS_CUSTOM_FSTAB >> $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 ] + then + vgscan --mknodes > $GLUSTERFS_LOG_CONT_DIR/vgscan_mknodes + sleep 10 + mount -a --fstab $GLUSTERFS_LOG_CONT_DIR/failed_bricks + fi + else + echo "heketi-fstab not found" + fi + + echo "Script Ran Successfully" + exit 0 +} +main |