diff options
author | 2015-01-06 18:08:25 -0800 | |
---|---|---|
committer | 2015-01-06 18:08:25 -0800 | |
commit | ddef24620a67fa352d94415dc56121c01e3d8af8 (patch) | |
tree | f2383ee6e84a21e92f1524d23436ab28cfe04756 /tools/gce_setup/new_grpc_docker_builder_on_startup.sh | |
parent | 9f2b09e112f5b95e843de786d7d3ecfd026170b6 (diff) |
Adding the tools directory to the git export.
Diffstat (limited to 'tools/gce_setup/new_grpc_docker_builder_on_startup.sh')
-rwxr-xr-x | tools/gce_setup/new_grpc_docker_builder_on_startup.sh | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/tools/gce_setup/new_grpc_docker_builder_on_startup.sh b/tools/gce_setup/new_grpc_docker_builder_on_startup.sh new file mode 100755 index 0000000000..87e8aac1e7 --- /dev/null +++ b/tools/gce_setup/new_grpc_docker_builder_on_startup.sh @@ -0,0 +1,70 @@ +#!/bin/bash +# Startup script that initializes a grpc-dev GCE machine. +# +# A grpc-docker GCE machine is based on docker container image. +# +# On startup, it copies the grpc dockerfiles to a local directory, and update its address +# so that the docker containers within it have git-on-borg-access. + +# _load_metadata curls a metadata url +_load_metadata() { + local metadata_root=http://metadata/computeMetadata/v1 + local uri=$1 + [[ -n $uri ]] || { echo "missing arg: uri" >&2; return 1; } + + if [[ $uri =~ ^'attributes/' ]] + then + for a in $(curl -H "X-Google-Metadata-Request: True" $metadata_root/instance/attributes/) + do + [[ $uri =~ "/$a"$ ]] && { curl $metadata_root/instance/$uri -H "X-Google-Metadata-Request: True"; return; } + done + fi + + # if the uri is a full request uri + [[ $uri =~ ^$metadata_root ]] && { curl $uri -H "X-Google-Metadata-Request: True"; return; } +} + +_source_gs_script() { + local script_attr=$1 + [[ -n $script_attr ]] || { echo "missing arg: script_attr" >&2; return 1; } + + local gs_uri=$(_load_metadata "attributes/$script_attr") + [[ -n $gs_uri ]] || { echo "missing metadata: $script_attr" >&2; return 1; } + + local out_dir='/var/local/startup_scripts' + local script_path=$out_dir/$(basename $gs_uri) + mkdir -p $out_dir + gsutil cp $gs_uri $script_path || { + echo "could not cp $gs_uri -> $script_path" + return 1 + } + chmod a+rwx $out_dir $script_path + source $script_path +} + +main() { + local script_attr='shared_startup_script_url' + _source_gs_script $script_attr || { + echo "halting, script 'attributes/$script_attr' could not be sourced" + return 1 + } + grpc_dockerfile_pull + chmod -R a+rw /var/local/dockerfile + + # Install git and emacs + apt-get update && apt-get install -y git emacs || return 1 + + # Enable access to git repos on git-on-borg + local git_root='/var/local/git' + install_gob_daemon $git_root/gerrit-gcompute-tools || return 1 + + # Startup the docker registry + grpc_docker_launch_registry && grpc_docker_pull_known + + # Add a sentinel file to indicate that startup has completed. + local sentinel_file=/var/log/GRPC_DOCKER_IS_UP + touch $sentinel_file +} + +set -x +main "$@" |