123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #!/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
|