diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-ami/files/ec2-ssh-key b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-ami/files/ec2-ssh-key index bdd50d4b23..65dfeaae55 100755 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-ami/files/ec2-ssh-key +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-ami/files/ec2-ssh-key @@ -1,6 +1,4 @@ -#!/bin/sh - -set -e +#!/bin/sh -e KEY_URL="http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key" diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/cloud-config.yml b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/cloud-config.yml index 691e93a139..f2eca19ca5 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/cloud-config.yml +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/cloud-config.yml @@ -2,7 +2,27 @@ coreos: units: - - name: ec2-ssh-key.service + - name: gce-coreos-cloudinit.service + runtime: yes + content: | + [Unit] + Requires=gce-setup-environment.service + After=gce-setup-environment.service + + [Service] + EnvironmentFile=/etc/environment + ExecStart=/usr/share/oem/bin/gce-coreos-cloudinit + - name: gce-setup-environment.service + runtime: yes + content: | + [Unit] + Description=Setup environment variables from metadata + + [Service] + Type=oneshot + StandardOutput=journal+console + ExecStart=/usr/share/oem/bin/gce-setup-environment /etc/environment + - name: gce-ssh-key.service runtime: yes content: | [Unit] diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-coreos-cloudinit b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-coreos-cloudinit new file mode 100644 index 0000000000..5df57a5d5e --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-coreos-cloudinit @@ -0,0 +1,10 @@ +#!/bin/bash -e + +TMPFILE=$(mktemp /tmp/XXXXXX-cloud-init) +trap 'echo "removing ${TMPFILE}"; rm -f ${TMPFILE}' INT TERM EXIT + +curl --retry 5 --retry-delay 2 --silent --fail \ + "http://169.254.169.254/computeMetadata/v1/instance/attributes/user-data" \ + -H "X-Google-Metadata-Request: True" > ${TMPFILE} + +/usr/bin/coreos-cloudinit --from-file=${TMPFILE} diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-setup-environment b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-setup-environment new file mode 100755 index 0000000000..0ffd55d92f --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-setup-environment @@ -0,0 +1,31 @@ +#!/bin/bash -e + +ENV=$1 + +if [ -z "$ENV" ]; then + echo usage: $0 /etc/environment + exit 1 +fi + +# test for rw +touch $ENV +if [ $? -ne 0 ]; then + echo exiting, unable to modify: $ENV + exit 1 +fi + +sed -i -e '/^COREOS_PUBLIC_IPV4=/d' \ + -e '/^COREOS_PRIVATE_IPV4=/d' \ + "${ENV}" + +external_ip=$(curl --retry 5 --retry-delay 2 --silent --fail \ + "http://169.254.169.254/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip" \ + -H "X-Google-Metadata-Request: True") + + +public_ip=$(curl --retry 5 --retry-delay 2 --silent --fail \ + "http://169.254.169.254/computeMetadata/v1/instance/network-interfaces/0/ip" \ + -H "X-Google-Metadata-Request: True") + +echo COREOS_PUBLIC_IPV4=${external_ip} >> $ENV +echo COREOS_PRIVATE_IPV4=${public_ip} >> $ENV diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-ssh-key b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-ssh-key index 9a0e750051..2820a99494 100755 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-ssh-key +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-ssh-key @@ -1,8 +1,8 @@ -#!/bin/bash +#!/bin/bash -e set -e -URL_PREFIX="http://metadata/computeMetadata/v1beta1/" +URL_PREFIX="http://169.254.169.254/computeMetadata/v1beta1/" update_keys() { local id="$1" diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.1.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.1.ebuild index 7d4861cc9e..fcc12bd5ec 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.1.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.1.ebuild @@ -18,6 +18,8 @@ S="${WORKDIR}" src_install() { into "/" dobin ${FILESDIR}/gce-ssh-key + dobin ${FILESDIR}/gce-coreos-cloudinit + dobin ${FILESDIR}/gce-setup-environment insinto "/" doins ${FILESDIR}/cloud-config.yml diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/coreos-setup-environment b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/coreos-setup-environment index 58119841da..2e5f9c1bd0 100755 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/coreos-setup-environment +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/coreos-setup-environment @@ -1,4 +1,4 @@ -#!/bin/bash +x +#!/bin/bash -e ENV=$1