summaryrefslogtreecommitdiffstats
path: root/roles/openshift_gcp/files/bootstrap-script.sh
diff options
context:
space:
mode:
authorScott Dodson <sdodson@redhat.com>2018-01-24 08:10:53 -0500
committerGitHub <noreply@github.com>2018-01-24 08:10:53 -0500
commit7e112b2c5893623dcd059813c993b0fab57e58b4 (patch)
treefb226772ec0f0273cef60f903ab7f3bd17d06e68 /roles/openshift_gcp/files/bootstrap-script.sh
parentdd5c2a24872490f34be8516e4f03a4076be35789 (diff)
parentf2b14d2e76d8a9b19d9515f00c0eac85876363f5 (diff)
downloadopenshift-7e112b2c5893623dcd059813c993b0fab57e58b4.tar.gz
openshift-7e112b2c5893623dcd059813c993b0fab57e58b4.tar.bz2
openshift-7e112b2c5893623dcd059813c993b0fab57e58b4.tar.xz
openshift-7e112b2c5893623dcd059813c993b0fab57e58b4.zip
Merge pull request #6541 from smarterclayton/move_gcp_in
Allow openshift-ansible image to deploy to GCP
Diffstat (limited to 'roles/openshift_gcp/files/bootstrap-script.sh')
-rw-r--r--roles/openshift_gcp/files/bootstrap-script.sh42
1 files changed, 42 insertions, 0 deletions
diff --git a/roles/openshift_gcp/files/bootstrap-script.sh b/roles/openshift_gcp/files/bootstrap-script.sh
new file mode 100644
index 000000000..0c3f1999b
--- /dev/null
+++ b/roles/openshift_gcp/files/bootstrap-script.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+#
+# This script is a startup script for bootstrapping a GCP node
+# from a config stored in the project metadata. It loops until
+# it finds the script and then starts the origin-node service.
+# TODO: generalize
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+if [[ "$( curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/bootstrap" -H "Metadata-Flavor: Google" )" != "true" ]]; then
+ echo "info: Bootstrap is not enabled for this instance, skipping" 1>&2
+ exit 0
+fi
+
+if ! id=$( curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/cluster-id" -H "Metadata-Flavor: Google" ); then
+ echo "error: Unable to get cluster-id for instance from cluster metadata" 1>&2
+ exit 1
+fi
+
+if ! node_group=$( curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/node-group" -H "Metadata-Flavor: Google" ); then
+ echo "error: Unable to get node-group for instance from cluster metadata" 1>&2
+ exit 1
+fi
+
+if ! config=$( curl -f "http://metadata.google.internal/computeMetadata/v1/instance/attributes/bootstrap-config" -H "Metadata-Flavor: Google" 2>/dev/null ); then
+ while true; do
+ if config=$( curl -f "http://metadata.google.internal/computeMetadata/v1/project/attributes/${id}-bootstrap-config" -H "Metadata-Flavor: Google" 2>/dev/null ); then
+ break
+ fi
+ echo "info: waiting for ${id}-bootstrap-config to become available in cluster metadata ..." 1>&2
+ sleep 5
+ done
+fi
+
+echo "Got bootstrap config from metadata"
+mkdir -p /etc/origin/node
+echo -n "${config}" > /etc/origin/node/bootstrap.kubeconfig
+echo "BOOTSTRAP_CONFIG_NAME=node-config-${node_group}" >> /etc/sysconfig/origin-node
+systemctl enable origin-node
+systemctl start origin-node