From d21acb90f4262c8872edcd94c52e65006b977316 Mon Sep 17 00:00:00 2001 From: yohan <783b8c87@scimetis.net> Date: Tue, 31 Mar 2020 15:23:15 +0200 Subject: [PATCH] Using systemd to mount volumes and start containers at boot. --- create.sh | 17 +++++++++++++++++ docker-compose.yml | 1 - install.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ start.sh | 8 ++++++++ start_or_update.sh | 23 ----------------------- volume_list | 1 + 6 files changed, 68 insertions(+), 24 deletions(-) create mode 100755 create.sh create mode 100755 install.sh create mode 100755 start.sh delete mode 100755 start_or_update.sh create mode 100644 volume_list diff --git a/create.sh b/create.sh new file mode 100755 index 0000000..d302f3b --- /dev/null +++ b/create.sh @@ -0,0 +1,17 @@ +#!/bin/bash +#Absolute path to this script +SCRIPT=$(readlink -f $0) +#Absolute path this script is in +SCRIPTPATH=$(dirname $SCRIPT) + +cd $SCRIPTPATH +unset VERSION_ELASTICSEARCH +export VERSION_ELASTICSEARCH=$(git ls-remote https://git.scimetis.net/yohan/docker-elasticsearch.git| head -1 | cut -f 1|cut -c -10) + +mkdir -p ~/build +git clone https://git.scimetis.net/yohan/docker-elasticsearch.git ~/build/docker-elasticsearch +sudo docker build -t elasticsearch:$VERSION_ELASTICSEARCH ~/build/docker-elasticsearch + +sudo -E bash -c 'docker-compose up --no-start' + +rm -rf ~/build diff --git a/docker-compose.yml b/docker-compose.yml index 14b59d5..ee2d58b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,6 @@ services: environment: - discovery.type=single-node - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - restart: always expose: - '9200' - '9300' 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/start_or_update.sh b/start_or_update.sh deleted file mode 100755 index 00144a5..0000000 --- a/start_or_update.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# --force-recreate is used to recreate container when crontab file has changed -source ~/openrc.sh -INSTANCE=$(/home/yohan/env_py3/bin/openstack server show -c id --format value $(hostname)) -sudo mkdir -p /mnt/volumes/elasticsearch_data -if ! mountpoint -q /mnt/volumes/elasticsearch_data -then - VOLUME_ID=$(/home/yohan/env_py3/bin/openstack volume show elasticsearch_data -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/elasticsearch_data -fi - -unset VERSION_ELASTICSEARCH -export VERSION_ELASTICSEARCH=$(git ls-remote https://git.scimetis.net/yohan/docker-elasticsearch.git| head -1 | cut -f 1|cut -c -10) - -mkdir -p ~/build -git clone https://git.scimetis.net/yohan/docker-elasticsearch.git ~/build/docker-elasticsearch -sudo docker build -t elasticsearch:$VERSION_ELASTICSEARCH ~/build/docker-elasticsearch - -sudo -E bash -c 'docker-compose up -d --force-recreate' - -rm -rf ~/build diff --git a/volume_list b/volume_list new file mode 100644 index 0000000..69f957e --- /dev/null +++ b/volume_list @@ -0,0 +1 @@ +elasticsearch_data