Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
T
Terraform_Openstack
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Ravi Tripathi
Terraform_Openstack
Commits
24763ae8
Commit
24763ae8
authored
1 year ago
by
Ravi Tripathi
Browse files
Options
Downloads
Plain Diff
Merge branch terraform-openstack:master into master
parents
5dd57cb7
9d71a190
No related branches found
No related tags found
No related merge requests found
Pipeline
#9576
passed with stages
in 2 minutes and 32 seconds
Changes
1
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
.gitlab-ci.yml
+23
-34
23 additions, 34 deletions
.gitlab-ci.yml
with
23 additions
and
34 deletions
.gitlab-ci.yml
+
23
−
34
View file @
24763ae8
...
@@ -40,7 +40,20 @@ prep-deploy:
...
@@ -40,7 +40,20 @@ prep-deploy:
TF_VAR_data_volume="xdmod-staging-volume-$BUILD_DATE"
TF_VAR_data_volume="xdmod-staging-volume-$BUILD_DATE"
openstack volume create --snapshot xdmod-staging-vol-snapshot --size 150 $TF_VAR_data_volume
openstack volume create --snapshot xdmod-staging-vol-snapshot --size 150 $TF_VAR_data_volume
elif [ "$TARGET_ENV" = "production" ]; then
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"
openstack server stop $prod_instance_id && openstack server show $prod_instance_id
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
openstack server start $prod_instance_id
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
else
echo "Unknown TARGET_ENV: $TARGET_ENV"
echo "Unknown TARGET_ENV: $TARGET_ENV"
exit 1
exit 1
...
@@ -48,6 +61,8 @@ prep-deploy:
...
@@ -48,6 +61,8 @@ prep-deploy:
echo "TF_VAR_data_volume=${TF_VAR_data_volume}" | tee -a $CI_PROJECT_DIR/vars.env
echo "TF_VAR_data_volume=${TF_VAR_data_volume}" | tee -a $CI_PROJECT_DIR/vars.env
echo "TF_VAR_flavor=${TF_VAR_flavor}" | tee -a $CI_PROJECT_DIR/vars.env
echo "TF_VAR_flavor=${TF_VAR_flavor}" | tee -a $CI_PROJECT_DIR/vars.env
echo "BUILD_DATE=${BUILD_DATE}" | tee -a $CI_PROJECT_DIR/vars.env
echo "BUILD_DATE=${BUILD_DATE}" | tee -a $CI_PROJECT_DIR/vars.env
echo "prod_instance_id=${prod_instance_id}" | tee -a $CI_PROJECT_DIR/vars.env
artifacts
:
artifacts
:
reports
:
reports
:
dotenv
:
vars.env
dotenv
:
vars.env
...
@@ -93,6 +108,7 @@ tf-apply:
...
@@ -93,6 +108,7 @@ tf-apply:
-
export instance_id=$(terraform output -raw xdmod_instance_id)
-
export instance_id=$(terraform output -raw xdmod_instance_id)
-
echo "instance_floating_ip=${instance_floating_ip}" | tee -a $CI_PROJECT_DIR/vars.env
-
echo "instance_floating_ip=${instance_floating_ip}" | tee -a $CI_PROJECT_DIR/vars.env
-
echo "instance_id=${instance_id}" | tee -a $CI_PROJECT_DIR/vars.env
-
echo "instance_id=${instance_id}" | tee -a $CI_PROJECT_DIR/vars.env
-
echo "prod_instance_id=${prod_instance_id}" | tee -a $CI_PROJECT_DIR/vars.env
artifacts
:
artifacts
:
reports
:
reports
:
dotenv
:
vars.env
dotenv
:
vars.env
...
@@ -126,42 +142,15 @@ production-deploy:
...
@@ -126,42 +142,15 @@ production-deploy:
stage
:
deploy
stage
:
deploy
tags
:
[
build
]
tags
:
[
build
]
script
:
script
:
-
export prod_instance_id=$(openstack floating ip show $prod_floating_ip -c port_details -f value | awk -F', ' '{print $2}' | awk -F"'" '{print $2}')
-
echo "swap the floating IP between prod and newly deployed instances"
-
export prod_volume=$(openstack server show $prod_instance_id -c volumes_attached -f value | awk -F"'" '{print $4}')
-
echo "Detaching prod_volume_id=${prod_volume} from prod_instance_id=${prod_instance_id}"
-
|
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 server stop $prod_instance_id
-
export staging_volume=$(openstack server show $instance_id -c volumes_attached -f value | awk -F"'" '{print $4}')
-
echo "Detaching staging_volume_id=${staging_volume} from staging_instance_id=${instance_id}"
-
ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$staging_floating_ip sudo systemctl stop mariadb
-
ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$staging_floating_ip sudo umount /var/lib/mysql && df -h
-
openstack server remove volume $instance_id $staging_volume
-
echo "Attach prod volume $xdmod-prod-vol-$BUILD_DATE to staging instance $instance_id"
-
openstack volume snapshot create --volume $prod_volume xdmod-prod-data-vol-snapshot-$BUILD_DATE
-
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
-
echo "swap the floating IP between prod and staging instances"
-
openstack server remove floating ip $prod_instance_id $prod_floating_ip
-
openstack server remove floating ip $prod_instance_id $prod_floating_ip
-
openstack server remove floating ip $instance_id $sta
ging
_floating_ip
-
openstack server remove floating ip $instance_id $
in
sta
nce
_floating_ip
-
openstack server add floating ip $instance_id $prod_floating_ip
-
openstack server add floating ip $instance_id $prod_floating_ip
needs
:
-
ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo mount /dev/vdb1 /var/lib/mysql
-
job
:
tf-apply
-
ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo systemctl start mariadb
artifacts
:
true
when
:
manual
rules
:
rules
:
-
if
:
'
$TARGET_ENV
!
=
"
dev
"'
-
if
:
'
$TARGET_ENV
=
=
"
production
"'
clean-up
:
clean-up
:
stage
:
cleanup
stage
:
cleanup
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment