From 149302a745f6ffedf5e96581e789b0bfc51e73aa Mon Sep 17 00:00:00 2001 From: yohan <783b8c87@scimetis.net> Date: Tue, 31 Mar 2020 18:00:50 +0200 Subject: [PATCH] Using systemd to mount volumes and start containers at boot. --- create.sh | 21 +++++++++++++++++++++ docker-compose.yml | 2 -- install.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ start.sh | 8 ++++++++ start_or_update.sh | 32 -------------------------------- volume_list | 2 ++ 6 files changed, 74 insertions(+), 34 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..cc70fb5 --- /dev/null +++ b/create.sh @@ -0,0 +1,21 @@ +#!/bin/bash +#Absolute path to this script +SCRIPT=$(readlink -f $0) +#Absolute path this script is in +SCRIPTPATH=$(dirname $SCRIPT) + +cd $SCRIPTPATH + +unset VERSION_APACHE_FPM VERSION_PHP_FPM +export VERSION_APACHE_FPM=$(git ls-remote https://git.scimetis.net/yohan/docker-apache-for-fpm.git| head -1 | cut -f 1|cut -c -10) +export VERSION_PHP_FPM=$(git ls-remote https://git.scimetis.net/yohan/docker-php5-fpm.git| head -1 | cut -f 1|cut -c -10) + +mkdir -p ~/build +git clone https://git.scimetis.net/yohan/docker-apache-for-fpm.git ~/build/docker-apache-for-fpm +sudo docker build -t apache-scuttle:$VERSION_APACHE_FPM ~/build/docker-apache-for-fpm +git clone https://git.scimetis.net/yohan/docker-php5-fpm.git ~/build/docker-php5-fpm +sudo docker build -t php5-fpm:$VERSION_PHP_FPM ~/build/docker-php5-fpm + +sudo -E bash -c 'docker-compose up --no-start' + +rm -rf ~/build diff --git a/docker-compose.yml b/docker-compose.yml index 20b7b3f..6439bde 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,7 +6,6 @@ services: image: apache-scuttle:$VERSION_APACHE_FPM #build: "https://git.scimetis.net/yohan/docker-apache-for-fpm.git" container_name: apache-scuttle - restart: always networks: - reverse-proxy - php5-fpm @@ -20,7 +19,6 @@ services: image: php5-fpm:$VERSION_PHP_FPM #build: "https://git.scimetis.net/yohan/docker-php5-fpm.git" container_name: php5-fpm - restart: always networks: - php5-fpm - mysqlnet diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..737ca49 --- /dev/null +++ b/install.sh @@ -0,0 +1,43 @@ +#!/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 + VOLUME_ESCAPED=$(systemd-escape ${VOLUME}) + cat << EOF >> /etc/systemd/system/${STACK}.service +After=mnt-cinder-volume@${VOLUME_ESCAPED}.service +After=mnt-volumes-${VOLUME_ESCAPED}.mount +Wants=mnt-cinder-volume@${VOLUME_ESCAPED}.service +Requires=mnt-volumes-${VOLUME_ESCAPED}.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 de54d8a..0000000 --- a/start_or_update.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -source ~/openrc.sh -INSTANCE=$(/home/yohan/env_py3/bin/openstack server show -c id --format value $(hostname)) -sudo mkdir -p /mnt/volumes/scuttle_code /mnt/volumes/scuttle_php5-fpm_conf -if ! mountpoint -q /mnt/volumes/scuttle_code -then - VOLUME_ID=$(/home/yohan/env_py3/bin/openstack volume show scuttle_code -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/scuttle_code -fi -if ! mountpoint -q /mnt/volumes/scuttle_php5-fpm_conf -then - VOLUME_ID=$(/home/yohan/env_py3/bin/openstack volume show scuttle_php5-fpm_conf -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/scuttle_php5-fpm_conf -fi - -unset VERSION_APACHE_FPM VERSION_PHP_FPM -export VERSION_APACHE_FPM=$(git ls-remote https://git.scimetis.net/yohan/docker-apache-for-fpm.git| head -1 | cut -f 1|cut -c -10) -export VERSION_PHP_FPM=$(git ls-remote https://git.scimetis.net/yohan/docker-php5-fpm.git| head -1 | cut -f 1|cut -c -10) - -mkdir -p ~/build -git clone https://git.scimetis.net/yohan/docker-apache-for-fpm.git ~/build/docker-apache-for-fpm -sudo docker build -t apache-scuttle:$VERSION_APACHE_FPM ~/build/docker-apache-for-fpm -git clone https://git.scimetis.net/yohan/docker-php5-fpm.git ~/build/docker-php5-fpm -sudo docker build -t php5-fpm:$VERSION_PHP_FPM ~/build/docker-php5-fpm - -sudo -E bash -c 'docker-compose up -d' - -rm -rf ~/build diff --git a/volume_list b/volume_list new file mode 100644 index 0000000..0e37659 --- /dev/null +++ b/volume_list @@ -0,0 +1,2 @@ +scuttle_code +scuttle_php5-fpm_conf