From 0edc9c723027df470af86f4b694c4cca88519e77 Mon Sep 17 00:00:00 2001 From: yohan <783b8c87@scimetis.net> Date: Tue, 31 Mar 2020 17:05:18 +0200 Subject: [PATCH] Using systemd to mount volumes and start containers at boot. --- start_or_update.sh => create.sh | 23 +++++++----------- docker-compose.yml | 1 - install.sh | 42 +++++++++++++++++++++++++++++++++ start.sh | 8 +++++++ volume_list | 3 +++ 5 files changed, 61 insertions(+), 16 deletions(-) rename start_or_update.sh => create.sh (70%) create mode 100755 install.sh create mode 100755 start.sh create mode 100644 volume_list diff --git a/start_or_update.sh b/create.sh similarity index 70% rename from start_or_update.sh rename to create.sh index 982af52..f5a7bdc 100755 --- a/start_or_update.sh +++ b/create.sh @@ -1,4 +1,11 @@ #!/bin/bash +#Absolute path to this script +SCRIPT=$(readlink -f $0) +#Absolute path this script is in +SCRIPTPATH=$(dirname $SCRIPT) + +cd $SCRIPTPATH + for NETWORK in reverse-proxy do sudo docker network inspect ${NETWORK} &> /dev/null && continue @@ -9,20 +16,6 @@ done test -f ~/openrc.sh || { echo "ERROR: ~/openrc.sh not found, exiting."; exit 1; } source ~/openrc.sh -INSTANCE=$(~/env_py3/bin/openstack server show -c id --format value $(hostname)) -for VOLUME in reverse-proxy_conf reverse-proxy_conf_enabled reverse-proxy_letsencrypt -do - sudo mkdir -p /mnt/volumes/${VOLUME} - if ! mountpoint -q /mnt/volumes/${VOLUME} - then - VOLUME_ID=$(/home/yohan/env_py3/bin/openstack volume show ${VOLUME} -c id --format value) - test -e /dev/disk/by-id/*${VOLUME_ID:0:20} || nova volume-attach $INSTANCE $VOLUME_ID auto - sleep 3 - sudo mount /dev/disk/by-id/*${VOLUME_ID:0:20} /mnt/volumes/${VOLUME} - mountpoint -q /mnt/volumes/${VOLUME} || { echo "ERROR: could not mount /mnt/volumes/${VOLUME}, exiting."; exit 1; } - fi -done - export OS_REGION_NAME=GRA test -f ~/duplicity_password.sh || { echo "ERROR: ~/duplicity_password.sh not found, exiting."; exit 1; } source ~/duplicity_password.sh @@ -52,6 +45,6 @@ cd ~/build/docker-reverse-proxy; export VERSION_PROXY=$(git show-ref --head| hea sudo docker build -t reverse-proxy:$VERSION_PROXY ~/build/docker-reverse-proxy -sudo -E bash -c 'docker-compose up -d --force-recreate' +sudo -E bash -c 'docker-compose up --no-start --force-recreate' rm -rf ~/build diff --git a/docker-compose.yml b/docker-compose.yml index 0ce3993..87ff91e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,6 @@ services: reverse-proxy: image: reverse-proxy:$VERSION_PROXY #build: "https://git.scimetis.net/yohan/docker-reverse-proxy.git" - restart: always ports: - 80:80/tcp - 443:443/tcp diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..a1e79a3 --- /dev/null +++ b/install.sh @@ -0,0 +1,42 @@ +#!/bin/bash +#Absolute path to this script +SCRIPT=$(readlink -f $0) +#Absolute path this script is in +SCRIPTPATH=$(dirname $SCRIPT) +STACK=$(basename "$SCRIPTPATH") + +for VOLUME in $(awk NF $SCRIPTPATH/volume_list | tr -d "[:blank:]") +do + systemctl enable mnt-cinder-volume@${VOLUME}.service +done + +cat << EOF > /etc/systemd/system/${STACK}.service +[Unit] +Description=Starting ${STACK} +After=network-online.target firewalld.service docker.service docker.socket +Wants=network-online.target docker.service +Requires=docker.socket +EOF + +for VOLUME in $(awk NF $SCRIPTPATH/volume_list | tr -d "[:blank:]") +do + cat << EOF >> /etc/systemd/system/${STACK}.service +After=mnt-cinder-volume@${VOLUME}.service +After=mnt-volumes-${VOLUME}.mount +Wants=mnt-cinder-volume@${VOLUME}.service +Requires=mnt-volumes-${VOLUME}.mount + +EOF +done + +cat << EOF >> /etc/systemd/system/${STACK}.service +[Service] +Type=oneshot +User=$SUDO_USER +ExecStart=$SCRIPTPATH/start.sh + +[Install] +WantedBy=multi-user.target +EOF +systemctl daemon-reload +systemctl enable ${STACK}.service diff --git a/start.sh b/start.sh new file mode 100755 index 0000000..1f4bfdf --- /dev/null +++ b/start.sh @@ -0,0 +1,8 @@ +#!/bin/bash +#Absolute path to this script +SCRIPT=$(readlink -f $0) +#Absolute path this script is in +SCRIPTPATH=$(dirname $SCRIPT) + +cd $SCRIPTPATH +sudo docker-compose start diff --git a/volume_list b/volume_list new file mode 100644 index 0000000..468fcb1 --- /dev/null +++ b/volume_list @@ -0,0 +1,3 @@ +reverse-proxy_conf +reverse-proxy_conf_enabled +reverse-proxy_letsencrypt