From f05b5d75ce56e1159e987d974de4cd9b40e8904e Mon Sep 17 00:00:00 2001 From: Jesus Rodriguez Date: Fri, 30 Jun 2017 13:20:49 -0400 Subject: [PATCH] techdebt: fix Makefile deploy (#250) * remove unused templates * move and edit run_template.sh * move run_template.sh to deploy.sh * add comments * pass in parameters to deploy.sh * use appropriate template dir * add ${TAG} to deploy target * stop ignoring templates/broker-deployment * delete clusterrolebinding * remove OPENSHIFT USER and PASS variables * change PROJECT to ORG, also pass to deploy script --- .gitignore | 1 - Makefile | 6 +- docs/deployment.md | 2 - scripts/deploy.sh | 104 +++++++++++++--------- templates/broker-deployment_template.yaml | 33 ------- templates/etcd-deployment.yaml | 56 ------------ templates/route.yaml | 14 --- templates/run_template.sh | 30 ------- templates/services.yaml | 36 -------- 9 files changed, 66 insertions(+), 216 deletions(-) delete mode 100644 templates/broker-deployment_template.yaml delete mode 100644 templates/etcd-deployment.yaml delete mode 100644 templates/route.yaml delete mode 100755 templates/run_template.sh delete mode 100644 templates/services.yaml diff --git a/.gitignore b/.gitignore index 6a9d7c4ac6..d18b3cea87 100644 --- a/.gitignore +++ b/.gitignore @@ -29,7 +29,6 @@ gosrc etc/dev.config.yaml etc/prod.config.yaml etc/mock.config.yaml -templates/broker-deployment.yaml #Compiled binaries broker diff --git a/Makefile b/Makefile index 639637a7a4..448f927dfb 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ REGISTRY ?= docker.io -PROJECT ?= ansibleplaybookbundle +ORG ?= ansibleplaybookbundle TAG ?= latest -BROKER_IMAGE ?= $(REGISTRY)/$(PROJECT)/ansible-service-broker +BROKER_IMAGE ?= $(REGISTRY)/$(ORG)/ansible-service-broker BUILD_DIR = "${GOPATH}/src/github.com/openshift/ansible-service-broker/build" PREFIX ?= /usr/local BROKER_CONFIG ?= $(PWD)/etc/generated_local_development.yaml @@ -52,7 +52,7 @@ clean: @rm -f build/broker deploy: - @${GOPATH}/src/github.com/openshift/ansible-service-broker/scripts/deploy.sh + @${GOPATH}/src/github.com/openshift/ansible-service-broker/scripts/deploy.sh ${BROKER_IMAGE}:${TAG} ${REGISTRY} ${ORG} test: go test ./pkg/... diff --git a/docs/deployment.md b/docs/deployment.md index 2b58660c08..ce930f7ee0 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -13,8 +13,6 @@ DOCKERHUB_ORG | ansibleplaybookbundle | Dockerhub organization DOCKERHUB_USER | changeme | Dockerhub user Name DOCKERHUB_PASS | changeme | Dockerhub user Password OPENSHIFT_TARGET | https://kubernetes.default | OpenShift Target URL -OPENSHIFT_USER | admin | OpenShift User Name -OPENSHIFT_PASS | admin | OpenShift User Password REGISTRY_TYPE | dockerhub | Registry Type REGISTRY_URL | docker.io | Registry URL DEV_BROKER | true | Include Broker Development Endpoint (true/false) diff --git a/scripts/deploy.sh b/scripts/deploy.sh index b0f1169c6a..b164ed32e4 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -1,48 +1,70 @@ #!/bin/bash -PROJECT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/.. +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +PROJECT_ROOT=${SCRIPT_DIR}/.. TEMPLATE_DIR="${PROJECT_ROOT}/templates" -set -e - -# Based on https://gist.github.com/pkuczynski/8665367 -function parse_yaml() { - local prefix=$2 - local s - local w - local fs - s='[[:space:]]*' - w='[a-zA-Z0-9_]*' - fs="$(echo @|tr @ '\034')" - sed -ne "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \ - -e "s|^\($s\)\($w\)$s[:-]$s\(.*\)$s\$|\1$fs\2$fs\3|p" "$1" | - awk -F"$fs" '{ - indent = length($1)/2; - vname[indent] = $2; - for (i in vname) {if (i > indent) {delete vname[i]}} - if (length($3) > 0) { - vn=""; for (i=0; i /tmp/dev-config -sed -i "s/=(\"--\")//" /tmp/dev-config - -for tpl in services.yaml route.yaml etcd-deployment.yaml broker-deployment.yaml; do - if [ "${tpl}" == "broker-deployment.yaml" ]; then - cp $TEMPLATE_DIR/broker-deployment_template.yaml $TEMPLATE_DIR/$tpl - sed -i "s/{{dockerhub_pass}}/${registry_pass}/" $TEMPLATE_DIR/$tpl - sed -i "s/{{dockerhub_user}}/${registry_user}/" $TEMPLATE_DIR/$tpl - sed -i "s/{{dockerhub_org}}/${registry_org}/" $TEMPLATE_DIR/$tpl - sed -i "s/{{openshift_pass}}/${openshift_pass}/" $TEMPLATE_DIR/$tpl - sed -i "s/{{openshift_target}}/${openshift_target}/" $TEMPLATE_DIR/$tpl - sed -i "s/{{openshift_user}}/${openshift_user}/" $TEMPLATE_DIR/$tpl +source ${MY_VARS} +if [ "$?" -ne "0" ]; then + echo "Error reading in ${MY_VARS}" + exit 1 +fi + +function validate_var { + if [ -z ${2+x} ] + then + echo "${1} is unset" + exit 1 fi - source /tmp/dev-config - oc_create $tpl +} + +# check the variables that do not have defaults +validate_var "BROKER_IMAGE" $BROKER_IMAGE +validate_var "REGISTRY" $REGISTRY +validate_var "DOCKERHUB_USERNAME" $DOCKERHUB_USERNAME +validate_var "DOCKERHUB_PASSWORD" $DOCKERHUB_PASSWORD +validate_var "DOCKERHUB_ORG" $DOCKERHUB_ORG + +# configure variables to pass to template +VARS="-p BROKER_IMAGE=${BROKER_IMAGE} -p OPENSHIFT_TARGET=${OPENSHIFT_TARGET} -p DOCKERHUB_ORG=${DOCKERHUB_ORG} -p DOCKERHUB_PASS=${DOCKERHUB_PASS} -p DOCKERHUB_USER=${DOCKERHUB_USER} -p REGISTRY_TYPE=${REGISTRY_TYPE} -p REGISTRY_URL=${REGISTRY} -p DEV_BROKER=${DEV_BROKER} -p LAUNCH_APB_ON_BIND=${LAUNCH_APB_ON_BIND} -p OUTPUT_REQUEST=${OUTPUT_REQUEST} -p RECOVERY=${RECOVERY}" + +# cleanup old deployment +oc delete project --ignore-not-found=true ${PROJECT} +oc projects | grep ${PROJECT} +while [ $? -eq 0 ] +do + echo "Waiting for ${PROJECT} to be deleted" + sleep 5; + oc projects | grep ${PROJECT} done +# delete the clusterrolebinding to avoid template error +oc delete clusterrolebindings --ignore-not-found=true asb + +# deploy +oc new-project ${PROJECT} +oc process -f ${TEMPLATE_DIR}/deploy-ansible-service-broker.template.yaml -n ${PROJECT} ${VARS} | oc create -f - diff --git a/templates/broker-deployment_template.yaml b/templates/broker-deployment_template.yaml deleted file mode 100644 index 0e6816435f..0000000000 --- a/templates/broker-deployment_template.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: asb - namespace: ansible-service-broker - labels: - app: ansible-service-broker - service: asb -spec: - strategy: - type: Recreate - replicas: 1 - template: - metadata: - labels: - app: ansible-service-broker - service: asb - spec: - restartPolicy: Always - containers: - - image: "{{dockerhub_org}}/ansible-service-broker:latest" - name: asb - imagePullPolicy: Always - ports: - - containerPort: 1338 - protocol: TCP - env: - - name: DOCKERHUB_PASS - value: "{{dockerhub_pass}}" - - name: DOCKERHUB_USER - value: "{{dockerhub_user}}" - - name: DOCKERHUB_ORG - value: "{{dockerhub_org}}" diff --git a/templates/etcd-deployment.yaml b/templates/etcd-deployment.yaml deleted file mode 100644 index 1999acc7bc..0000000000 --- a/templates/etcd-deployment.yaml +++ /dev/null @@ -1,56 +0,0 @@ ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: etcd -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi - ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: etcd - namespace: ansible-service-broker - labels: - app: ansible-service-broker - service: etcd -spec: - strategy: - type: Recreate - replicas: 1 - template: - metadata: - labels: - app: ansible-service-broker - service: etcd - spec: - restartPolicy: Always - containers: - - image: ansibleapp/ansible-service-broker-etcd:latest - name: main - imagePullPolicy: IfNotPresent - workingDir: /etcd - args: - - ./etcd - - --data-dir=/data - - --listen-client-urls=http://0.0.0.0:2379 - - --advertise-client-urls=http://0.0.0.0:2379 - ports: - - containerPort: 2379 - protocol: TCP - env: - - name: ETCDCTL_API - value: "3" - volumeMounts: - - mountPath: /data - name: etcd - volumes: - - name: etcd - persistentVolumeClaim: - claimName: etcd - diff --git a/templates/route.yaml b/templates/route.yaml deleted file mode 100644 index e1fcd5b4b0..0000000000 --- a/templates/route.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: Route -metadata: - name: asb-1338 - namespace: ansible-service-broker - labels: - app: ansible-service-broker - service: asb -spec: - to: - kind: Service - name: asb - port: - targetPort: port-1338 diff --git a/templates/run_template.sh b/templates/run_template.sh deleted file mode 100755 index cfce766711..0000000000 --- a/templates/run_template.sh +++ /dev/null @@ -1,30 +0,0 @@ -PROJECT="ansible-service-broker" -BROKER_IMAGE="ansibleplaybookbundle/ansible-service-broker:latest" -OPENSHIFT_TARGET="https://kubernetes.default" -OPENSHIFT_USER="admin" -OPENSHIFT_PASS="admin" -DOCKERHUB_USER="CHANGEME" -DOCKERHUB_PASS="CHANGEME" -DOCKERHUB_ORG="ansibleplaybookbundle" -REGISTRY_TYPE="dockerhub" -REGISTRY_URL="docker.io" -DEV_BROKER="true" -LAUNCH_APB_ON_BIND="false" -OUTPUT_REQUEST="true" -RECOVERY="true" - - -VARS="-p BROKER_IMAGE=${BROKER_IMAGE} -p OPENSHIFT_TARGET=${OPENSHIFT_TARGET} -p OPENSHIFT_PASS=${OPENSHIFT_PASS} -p OPENSHIFT_USER=${OPENSHIFT_USER} -p DOCKERHUB_ORG=${DOCKERHUB_ORG} -p DOCKERHUB_PASS=${DOCKERHUB_PASS} -p DOCKERHUB_USER=${DOCKERHUB_USER} -p REGISTRY_TYPE=${REGISTRY_TYPE} -p REGISTRY_URL=${REGISTRY_URL} -p DEV_BROKER=${DEV_BROKER} -p LAUNCH_APB_ON_BIND=${LAUNCH_APB_ON_BIND} -p OUTPUT_REQUEST=${OUTPUT_REQUEST} -p RECOVERY=${RECOVERY}" - -oc delete project ${PROJECT} -oc projects | grep ${PROJECT} -while [ $? -eq 0 ] -do - echo "Waiting for ${PROJECT} to be deleted" - sleep 5; - oc projects | grep ${PROJECT} -done - - -oc new-project ${PROJECT} -oc process -f deploy-ansible-service-broker.template.yaml -n ${PROJECT} ${VARS} | oc create -f - diff --git a/templates/services.yaml b/templates/services.yaml deleted file mode 100644 index d11191be0f..0000000000 --- a/templates/services.yaml +++ /dev/null @@ -1,36 +0,0 @@ ---- -apiVersion: v1 -kind: Namespace -metadata: - name: ansible-service-broker - ---- -apiVersion: v1 -kind: Service -labels: - app: ansible-service-broker - service: asb -metadata: - name: asb - namespace: ansible-service-broker -spec: - ports: - - name: port-1338 - port: 1338 - selector: - app: ansible-service-broker - service: asb - ---- -apiVersion: v1 -kind: Service -metadata: - name: etcd - namespace: ansible-service-broker -spec: - ports: - - name: etcd-advertise - port: 2379 - selector: - app: ansible-service-broker - service: etcd