Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • rrand11/terraform-openstack
  • louistw/terraform-openstack
  • chirag24/terraform-openstack
  • mmoo97/terraform-openstack
  • jpr/terraform-openstack
  • ravi89/terraform-openstack
  • noe121/terraform-openstack
  • ishan747/terraform-openstack
  • clint93/terraform-openstack
  • ravi89/terraform_openstack
  • krish94/terraform-openstack
  • rc/terraform-openstack
12 results
Show changes
Commits on Source (38)
...@@ -28,26 +28,41 @@ stages: # List of stages for jobs, and their order of execution ...@@ -28,26 +28,41 @@ stages: # List of stages for jobs, and their order of execution
prep-deploy: prep-deploy:
stage: .pre stage: .pre
tags: [build] tags: [build]
environment:
name: $TARGET_ENV
script: script:
- export BUILD_DATE=$(TZ=America/Chicago date +%Y-%m-%d-%H-%M-%S) - export BUILD_DATE=$(TZ=America/Chicago date +%Y-%m-%dT%H%M%S)
- | - |
if [ "$TARGET_ENV" = "dev" ]; then if [ "$TARGET_ENV" = "dev" ]; then
TF_VAR_data_volume="xdmod-dev-volume-$BUILD_DATE" TF_VAR_data_volume="xdmod-dev-volume-$BUILD_DATE"
TF_VAR_flavor="m1.medium"
openstack volume create --snapshot xdmod-dev-volume-snap --size 20 $TF_VAR_data_volume openstack volume create --snapshot xdmod-dev-volume-snap --size 20 $TF_VAR_data_volume
elif [ "$TARGET_ENV" = "staging" ]; then elif [ "$TARGET_ENV" = "staging" ]; then
TF_VAR_data_volume="xdmod-staging-volume-$BUILD_DATE" TF_VAR_data_volume="xdmod-staging-volume-$BUILD_DATE"
TF_VAR_flavor="m1.large" openstack volume create --snapshot xdmod-staging-vol-snapshot --size 150 $TF_VAR_data_volume
openstack volume create --snapshot xdmod-staging-volume-snap --size 150 $TF_VAR_data_volume
elif [ "$TARGET_ENV" = "production" ]; then elif [ "$TARGET_ENV" = "production" ]; then
TF_VAR_data_volume="xdmod-staging-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}')
TF_VAR_flavor="m1.xlarge" 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
fi fi
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 "prod_instance_id=${prod_instance_id}" | tee -a $CI_PROJECT_DIR/vars.env
artifacts: artifacts:
reports: reports:
dotenv: vars.env dotenv: vars.env
...@@ -55,6 +70,8 @@ prep-deploy: ...@@ -55,6 +70,8 @@ prep-deploy:
tf-validate: tf-validate:
stage: validate stage: validate
tags: [build] tags: [build]
environment:
name: $TARGET_ENV
script: script:
- cd CRI_XCBC && git checkout dev && cd .. - cd CRI_XCBC && git checkout dev && cd ..
- terraform --version - terraform --version
...@@ -70,47 +87,38 @@ tf-apply: ...@@ -70,47 +87,38 @@ tf-apply:
- .terraform/ - .terraform/
stage: build stage: build
tags: [build] tags: [build]
environment:
name: $TARGET_ENV
script: script:
- echo "TF_VAR_data_volume=${TF_VAR_data_volume}" - echo "TF_VAR_data_volume=${TF_VAR_data_volume}"
- echo "TF_VAR_flavor=${TF_VAR_flavor}" - echo "TF_VAR_flavor=${TF_VAR_flavor}"
- export BUILD_DATE=$(TZ=America/Chicago date +%Y%m%d%H%M%S)
- export TF_VAR_internal_network="xdmod-packer-clusternet-$BUILD_DATE" - export TF_VAR_internal_network="xdmod-packer-clusternet-$BUILD_DATE"
- | - |
if [ -z $TF_VAR_image_ohpc ]; if [ -z $TF_VAR_image_ohpc ];
then then
XDMOD_IMAGES=($(openstack image list --sort-column Name --sort-descending -f value -c Name -c ID | grep -P ' xdmod-$TARGET_ENV-\d{14}$' | awk '{print $2}')) XDMOD_IMAGES=($(openstack image list --sort-column Name --sort-descending -f value -c Name -c ID | grep -P " xdmod-$TARGET_ENV-\d{4}-\d{2}-\d{2}T\d{6}$" | awk '{print $2}'))
export TF_VAR_image_ohpc="${XDMOD_IMAGES[0]}" export TF_VAR_image_ohpc="${XDMOD_IMAGES[0]}"
echo $TF_VAR_image_ohpc echo $TF_VAR_image_ohpc
else else
echo "image_ohpc defined as ${TF_VAR_image_ohpc}" echo "image_ohpc defined as ${TF_VAR_image_ohpc}"
fi
- export TF_VAR_keypair_name="os-gen-keypair-$BUILD_DATE"
- |
terraform apply -auto-approve
if [ $? -ne 0 ]; then
echo "Terraform apply failed. Running terraform destroy..."
terraform destroy -auto-approve
TF_SUCCESS=false
else
TF_SUCCESS=true
fi fi
echo "Terraform success: $TF_SUCCESS" - export TF_VAR_keypair_name="os-gen-keypair-$BUILD_DATE"
- terraform apply -auto-approve
- export instance_floating_ip=$(terraform output -raw floating_ip_ohpc) - export instance_floating_ip=$(terraform output -raw floating_ip_ohpc)
- 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
staging-post-deploy: staging-post-deploy:
environment: environment:
name: staging name: staging
stage: build stage: build
tags: [build] tags: [build]
script: script:
- export staging_floating_ip="138.26.49.15"
- export old_instance_id=$(openstack floating ip show $staging_floating_ip -c port_details -f value | awk -F', ' '{print $2}' | awk -F"'" '{print $2}') - export old_instance_id=$(openstack floating ip show $staging_floating_ip -c port_details -f value | awk -F', ' '{print $2}' | awk -F"'" '{print $2}')
- echo "staging_floating_ip=${staging_floating_ip}" - echo "staging_floating_ip=${staging_floating_ip}"
- echo "old_instance_id=${old_instance_id}" - echo "old_instance_id=${old_instance_id}"
...@@ -128,10 +136,27 @@ staging-post-deploy: ...@@ -128,10 +136,27 @@ staging-post-deploy:
rules: rules:
- if: '$TARGET_ENV == "staging"' - if: '$TARGET_ENV == "staging"'
production-deploy:
environment:
name: production
stage: deploy
tags: [build]
script:
- 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
needs:
- job: tf-apply
artifacts: true
rules:
- if: '$TARGET_ENV == "production"'
clean-up: clean-up:
stage: cleanup stage: cleanup
tags: [build] tags: [build]
environment:
name: $TARGET_ENV
script: script:
- terraform destroy -auto-approve - terraform destroy -auto-approve
when: manual when: manual
...@@ -55,7 +55,7 @@ output "keypair_name" { ...@@ -55,7 +55,7 @@ output "keypair_name" {
} }
data "openstack_networking_network_v2" "external_net" {name = var.external_network} data "openstack_networking_network_v2" "external_net" {name = var.external_network}
data "openstack_blockstorage_volume_v2" "disk" {name = var.data_volume} data "openstack_blockstorage_volume_v3" "disk" {name = var.data_volume}
# runs the ohpc-instance module - creates ohpc instance using variables defined above # 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 # calls functions from dmz-network, import-keypair, and floating-ip-address modules to get values created there for use
...@@ -71,7 +71,7 @@ module "create-ohpc-instance" { ...@@ -71,7 +71,7 @@ module "create-ohpc-instance" {
floating_ip_ohpc = module.floating-ip-address.ohpc_address floating_ip_ohpc = module.floating-ip-address.ohpc_address
ohpc_user = var.ohpc_user ohpc_user = var.ohpc_user
ssh_private_key = var.ssh_private_key ssh_private_key = var.ssh_private_key
vol_id = data.openstack_blockstorage_volume_v2.disk.id vol_id = data.openstack_blockstorage_volume_v3.disk.id
} }
# runs the ood-instance module - creates ood instance using variables defined above # runs the ood-instance module - creates ood instance using variables defined above
...@@ -147,6 +147,14 @@ provisioner "remote-exec" { ...@@ -147,6 +147,14 @@ provisioner "remote-exec" {
] ]
} }
provisioner "remote-exec" {
inline = [
"sudo mount ${module.create-ohpc-instance.device}1 /var/lib/mysql",
"sudo df -h",
"sudo systemctl restart mariadb",
]
}
# compute node registration on ohpc # compute node registration on ohpc
provisioner "remote-exec" { provisioner "remote-exec" {
inline = [ inline = [
...@@ -162,12 +170,4 @@ provisioner "remote-exec" { ...@@ -162,12 +170,4 @@ provisioner "remote-exec" {
# "ansible-playbook -c local -i /CRI_XCBC/hosts -l `hostname -s` -e \"{'compute_nodes':[{'name':'${var.ood_instance_name}', 'ip':'${net.fixed_ip_v4}', 'mac':'${net.mac}', 'vnfs':'', 'sockets':'1', 'corespersocket':'1'}]}\" /CRI_XCBC/site-ops.yaml -b -v"] # "ansible-playbook -c local -i /CRI_XCBC/hosts -l `hostname -s` -e \"{'compute_nodes':[{'name':'${var.ood_instance_name}', 'ip':'${net.fixed_ip_v4}', 'mac':'${net.mac}', 'vnfs':'', 'sockets':'1', 'corespersocket':'1'}]}\" /CRI_XCBC/site-ops.yaml -b -v"]
# } # }
provisioner "remote-exec" {
inline = [
"sudo mount ${module.create-ohpc-instance.device}1 /var/lib/mysql",
"sudo df -h",
"sudo systemctl restart mariadb",
]
}
} }