diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d6ed1d45d0977c0003620a7888ab574e66f04015..cf3a2d531e6a10ddd7b614b1e410b9a00516ba48 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -142,7 +142,51 @@ production-deploy:
   stage: deploy
   tags: [build]
   script:
-    - echo "swap the floating IP between prod and newly deployed instances"
+    - 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}')
+    - export prod_queue_volume=$(openstack server show $prod_instance_id -c volumes_attached -f value | awk -F"'" '{print $4}' | awk 'NR==2')
+
+    - |
+      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
+    - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$prod_floating_ip sudo umount /data/xdmod/queues && df -h
+    - openstack server remove volume $prod_instance_id $prod_volume
+    - openstack server remove volume $prod_instance_id $prod_queue_volume
+    - openstack server stop $prod_instance_id
+
+    # Exporting Staging Volume IDs
+    - export staging_volume=$(openstack server show $instance_id -c volumes_attached -f value | awk -F"'" '{print $4}' | awk 'NR==1')
+    - export staging_queue_volume=$(openstack server show $instance_id -c volumes_attached -f value | awk -F"'" '{print $4}' | awk 'NR==2')
+
+    # Logging Information
+    - echo "Detaching staging_volume_id=${staging_volume} and staging_queue_volume_id=${staging_queue_volume} from staging_instance_id=${instance_id}"
+
+    # Stopping MariaDB Service on Staging Instance
+    - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$staging_floating_ip sudo systemctl stop mariadb
+
+    # Unmounting MySQL Data Directories
+    - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$staging_floating_ip sudo umount /var/lib/mysql && df -h
+    - ssh -o StrictHostKeyChecking=no $SSH_USERNAME@$staging_floating_ip sudo umount /data/xdmod/queues && df -h
+
+    # Removing Volumes from Server
+    - openstack server remove volume $instance_id $staging_volume
+    - openstack server remove volume $instance_id $staging_queue_volume
+
+    - echo "Attach prod volume $xdmod-prod-vol-$BUILD_DATE to staging instance $instance_id"
+    - echo "Attach prod queue volume xdmod-prod-queue-vol-$BUILD_DATE to staging instance $instance_id"
+    - openstack volume snapshot create --volume $prod_volume xdmod-prod-data-vol-snapshot-$BUILD_DATE
+    - openstack volume snapshot create --volume $prod_queue_volume xdmod-prod-queue-vol-snapshot-$BUILD_DATE
+    - openstack volume create --snapshot xdmod-prod-data-vol-snapshot-$BUILD_DATE --size 150 xdmod-prod-vol-$BUILD_DATE
+    - openstack volume create --snapshot xdmod-prod-queue-vol-snapshot-$BUILD_DATE --size 1 xdmod-prod-queue-vol-$BUILD_DATE
+    - openstack server add volume $instance_id xdmod-prod-vol-$BUILD_DATE --device /dev/vdb
+    - openstack server add volume $instance_id xdmod-prod-queue-vol-$BUILD_DATE --device /dev/vdc
+
+    - 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 $instance_id $instance_floating_ip
     - openstack server add floating ip $instance_id $prod_floating_ip
diff --git a/main.tf b/main.tf
index d9ef8ee19c62691048a108d714de45ea43240aaa..025e0b11d052e42fe78341dcdf0b18cd9b029328 100644
--- a/main.tf
+++ b/main.tf
@@ -57,6 +57,7 @@ output "keypair_name" {
 
 data "openstack_networking_network_v2" "external_net" {name = var.external_network}
 data "openstack_blockstorage_volume_v3" "disk" {name = var.data_volume}
+data "openstack_blockstorage_volume_v3" "disk2" {name = var.xdmod_queue_data_volume}
 
 # runs the ohpc-instance module - creates ohpc instance using variables defined above
 # calls functions from dmz-network, import-keypair, and floating-ip-address modules to get values created there for use
@@ -72,7 +73,10 @@ module "create-ohpc-instance" {
     floating_ip_ohpc = module.floating-ip-address.ohpc_address
     ohpc_user =  var.ohpc_user
     ssh_private_key = var.ssh_private_key
-    vol_id = data.openstack_blockstorage_volume_v3.disk.id
+    vol_ids = [
+      data.openstack_blockstorage_volume_v3.disk.id,
+      data.openstack_blockstorage_volume_v3.disk2.id,
+    ]
 }
 
 # runs the ood-instance module - creates ood instance using variables defined above
diff --git a/ohpc-instance/main.tf b/ohpc-instance/main.tf
index 85e17ef43b7e436b9c05871652f1680e2c7a0b65..a8e26f3737d365069da8af047808514601d8add8 100644
--- a/ohpc-instance/main.tf
+++ b/ohpc-instance/main.tf
@@ -26,7 +26,10 @@ variable "floating_ip_ohpc" {type = string}
 
 variable "ohpc_user" {}
 variable "ssh_private_key" {}
-variable "vol_id" {}
+variable "vol_ids" {
+  type    = list(string)
+  default = []
+}
 
 # creates details for the OHPC instance
 resource "openstack_compute_instance_v2" "ohpc" {
@@ -73,14 +76,15 @@ resource "openstack_compute_floatingip_associate_v2" "ohpc" {
   instance_id = openstack_compute_instance_v2.ohpc.id
 }
 
-# Attach a volume
+# Attach volumes
 resource "openstack_compute_volume_attach_v2" "volume_attach" {
+  count       = length(var.vol_ids)
   instance_id = openstack_compute_instance_v2.ohpc.id
-  volume_id   = var.vol_id
+  volume_id   = var.vol_ids[count.index]
 }
 
 output "xdmod_instance_id" {
-    value = openstack_compute_instance_v2.ohpc.id
+  value = openstack_compute_instance_v2.ohpc.id
 }
 
 output "ssh_host" {
@@ -88,5 +92,8 @@ output "ssh_host" {
 }
 
 output "device" {
-    value = openstack_compute_volume_attach_v2.volume_attach.device
+  value = [
+    openstack_compute_volume_attach_v2.volume_attach[0].device,
+    openstack_compute_volume_attach_v2.volume_attach[1].device,
+  ]
 }
diff --git a/vars.tf b/vars.tf
index 11d61852277b38cd42cb3e6681e16849317b11b1..e12b0aff918feaa97254a27a5799335e8fb76101 100644
--- a/vars.tf
+++ b/vars.tf
@@ -26,6 +26,7 @@ variable "ohpc_user" {default = "centos"}
 variable "ood_user" {default = "centos"}
 variable "ssh_private_key" {default = "~/.ssh/id_rsa"}
 variable "data_volume" {default = ""}
+variable "xdmod_queue_data_volume" {default = "xdmod_queue_data_volume"}
 
 # variables for node creation module
 variable "image_compute" {default = "compute-v1"}