From 6d3033294ee26eaabb65f67697794dc29febe423 Mon Sep 17 00:00:00 2001 From: Eesaan Atluri <atlurie@uab.edu> Date: Sat, 9 Dec 2023 04:53:22 -0600 Subject: [PATCH] Move the code to copy volume from instance to prep-deploy job. This is done so we can directly use it to instantiate a server with volume copy. Removed code that becomes obsolete when this approach of creating a server with volume copy is implemented. --- .gitlab-ci.yml | 53 ++++++++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 32 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 50154d4..c3313f7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -40,7 +40,27 @@ prep-deploy: TF_VAR_data_volume="xdmod-staging-volume-$BUILD_DATE" openstack volume create --snapshot xdmod-staging-vol-snapshot --size 150 $TF_VAR_data_volume elif [ "$TARGET_ENV" = "production" ]; then - echo $TARGET_ENV + export prod_instance_id=$(openstack floating ip show $prod_floating_ip -c port_details -f value | awk -F', ' '{print $2}' | awk -F"'" '{print $2}') + export prod_volume=$(openstack server show $prod_instance_id -c volumes_attached -f value | awk -F"'" '{print $4}') + echo "Detaching prod_volume=${prod_volume} from prod_instance_id=${prod_instance_id} and creating a snapshot" + eval $(ssh-agent -s) + chmod 400 "${SSH_PRIV_KEY}" + ssh-add "${SSH_PRIV_KEY}" + mkdir ~/.ssh + chmod 700 ~/.ssh + ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo systemctl stop mariadb + ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo umount /var/lib/mysql && df -h + openstack server remove volume $prod_instance_id $prod_volume + openstack volume snapshot create --volume $prod_volume xdmod-prod-vol-snapshot-$BUILD_DATE + + echo "Reattach the prod_volume=${prod_volume} to prod_instance_id=${prod_instance_id} after snapshot is created" + openstack server add volume $prod_instance_id $prod_volume --device /dev/vdb + ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo mount /dev/vdb1 /var/lib/mysql && df -h + ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo systemctl start mariadb + + echo "Make a copy of prod volume $prod_volume to be used in tf-apply" + TF_VAR_data_volume="xdmod-prod-vol-$BUILD_DATE" + openstack volume create --snapshot xdmod-prod-vol-snapshot-$BUILD_DATE --size 150 $TF_VAR_data_volume else echo "Unknown TARGET_ENV: $TARGET_ENV" exit 1 @@ -126,41 +146,10 @@ production-deploy: stage: deploy tags: [build] script: - - | - eval $(ssh-agent -s) - chmod 400 "${SSH_PRIV_KEY}" - ssh-add "${SSH_PRIV_KEY}" - mkdir ~/.ssh - chmod 700 ~/.ssh - - export instance_volume=$(openstack server show $instance_id -c volumes_attached -f value | awk -F"'" '{print $4}') - - echo "Detaching instance_volume_id=${instance_volume} from new instance=${instance_id}" - - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$instance_floating_ip sudo systemctl stop mariadb - - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$instance_floating_ip sudo umount /var/lib/mysql && df -h - - openstack server remove volume $instance_id $instance_volume - - - export prod_instance_id=$(openstack floating ip show $prod_floating_ip -c port_details -f value | awk -F', ' '{print $2}' | awk -F"'" '{print $2}') - - export prod_volume=$(openstack server show $prod_instance_id -c volumes_attached -f value | awk -F"'" '{print $4}') - - echo "Detaching prod_volume=${prod_volume} from prod_instance_id=${prod_instance_id} and creating a snapshot" - - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo systemctl stop mariadb - - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo umount /var/lib/mysql && df -h - - openstack server remove volume $prod_instance_id $prod_volume - - openstack volume snapshot create --volume $prod_volume xdmod-prod-data-vol-snapshot-$BUILD_DATE - - - echo "Reattach the prod_volume=${prod_volume} to prod_instance_id=${prod_instance_id} after snapshot is created" - - openstack server add volume $prod_instance_id $prod_volume --device /dev/vdb - - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo mount /dev/vdb1 /var/lib/mysql && df -h - - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo systemctl start mariadb - - echo "swap the floating IP between prod and newly deployed instances" - openstack server remove floating ip $prod_instance_id $prod_floating_ip - openstack server remove floating ip $instance_id $instance_floating_ip - openstack server add floating ip $instance_id $prod_floating_ip - - - echo "Attach copy of prod volume $xdmod-prod-vol-$BUILD_DATE to newly deployed instance $instance_id" - - openstack volume create --snapshot xdmod-prod-data-vol-snapshot-$BUILD_DATE --size 150 xdmod-prod-vol-$BUILD_DATE - - openstack server add volume $instance_id xdmod-prod-vol-$BUILD_DATE --device /dev/vdb - - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo mount /dev/vdb1 /var/lib/mysql - - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo systemctl start mariadb needs: - job: tf-apply artifacts: true -- GitLab