Skip to content
Snippets Groups Projects

Draft: adding compute build and deploy

Closed Krish Moodbidri requested to merge krish94/hpc-factory:feat-add-compute into feat-hpc-factory
Compare and
1 file
+ 78
0
Compare changes
  • Side-by-side
  • Inline
+ 78
0
@@ -107,6 +107,48 @@ workflow:
@@ -107,6 +107,48 @@ workflow:
reports:
reports:
dotenv: image.env
dotenv: image.env
 
.build_compute_image_template: &build_compute_image_template
 
script:
 
- *update_ansible_repo
 
- *get_ansible_files
 
# packer vars for job env
 
- export PKR_VAR_flavor="${PROXY_BUILD_FLAVOR:-$PKR_VAR_flavor}"
 
- export PKR_VAR_build_instance_name="${BUILD_TARGET}-${EXT_REPO_HEAD}"
 
- export PKR_VAR_image_date_suffix=false
 
- |
 
if [ $CI_PIPELINE_SOURCE == 'merge_request_event' ]; then
 
export PKR_VAR_image_name="${BUILD_TARGET}-PR-${CI_MERGE_REQUEST_IID}"
 
elif [ $CI_PIPELINE_SOURCE == 'schedule' ]; then
 
export PKR_VAR_image_name="${BUILD_TARGET}-${BUILD_DATE}"
 
fi
 
# Ansible var overrides
 
- |
 
# packer commands
 
- packer init openstack-proxy
 
- packer validate openstack-proxy
 
- packer build -machine-readable openstack-proxy | tee proxy_build.log
 
- export BUILT_COMPUTE_IMAGE_ID=$(grep 'Image:' proxy_build.log | awk '{print $4}')
 
- echo BUILT_COMPUTE_IMAGE_ID=${BUILT_COMPUTE_IMAGE_ID} | tee -a $CI_PROJECT_DIR/image.env
 
# set image properties with repo state
 
- openstack image set --property EXT_PR_SRC_REPO=${EXT_PR_SRC_REPO} --property EXT_PR_SRC_BRANCH_SHA=${EXT_PR_SRC_BRANCH_SHA} --property EXT_PR_TARGET_REPO=${EXT_PR_TARGET_REPO} --property EXT_PR_TARGET_BRANCH_SHA=${EXT_PR_TARGET_BRANCH_SHA} --property PACKER_IMAGE_HEAD=${PACKER_IMAGE_HEAD} ${BUILT_COMPUTE_IMAGE_ID}
 
artifacts:
 
reports:
 
dotenv: image.env
 
 
 
build_compute_image:
 
stage: build
 
environment:
 
name: $ENV
 
tags:
 
- build
 
variables:
 
PROXY_ENABLE_VAR: "enable_compute"
 
<<: *build_compute_image_template
 
rules:
 
- if: $PIPELINE_TARGET == "build" && $BUILD_TARGET == "http-proxy"
 
when: always
 
build_http_proxy_image:
build_http_proxy_image:
stage: build
stage: build
environment:
environment:
@@ -133,6 +175,42 @@ build_ssh_proxy_image:
@@ -133,6 +175,42 @@ build_ssh_proxy_image:
- if: $PIPELINE_TARGET == "build" && $BUILD_TARGET == "ssh-proxy"
- if: $PIPELINE_TARGET == "build" && $BUILD_TARGET == "ssh-proxy"
when: always
when: always
 
deploy_compute_node:
 
stage: deploy
 
environment:
 
name: $ENV
 
tags:
 
- build
 
script:
 
- openstack image set --accept $compute-${BUILD_DATE} || true
 
- FAILED=false
 
- |
 
cat > user_data.txt <<EOF
 
#!/bin/bash
 
cat >> /etc/NetworkManager/conf.d/90-dns-none.conf<<EEOF
 
[main]
 
dns=none
 
EEOF
 
systemctl reload NetworkManager
 
echo "$DEV_KEY" >> /root/.ssh/authorized_keys
 
ip route replace default via ${DEFAULT_GATEWAY_IP} dev eth0
 
git clone ${CI_REPOSITORY_URL} /tmp/${CI_PROJECT_NAME}
 
cd /tmp/${CI_PROJECT_NAME}
 
git checkout ${CI_COMMIT_REF_NAME}
 
cat >> ansible/hosts<<EEOF
 
[$ENV]
 
127.0.0.1
 
EEOF
 
ansible-playbook -c local -i ansible/hosts --extra-vars="$EXTRA_VARS" ansible/cluster.yml | tee -a /tmp/ansible.log
 
rm -rf /tmp/${CI_PROJECT_NAME}
 
EOF
 
- |
 
 
rules:
 
- if: $PIPELINE_TARGET == "deploy"
 
when: always
 
 
deploy_http_proxy_node:
deploy_http_proxy_node:
stage: deploy
stage: deploy
environment:
environment:
Loading