From e418b65c76a4a8bf5f6682f815a49db6d3b1aa09 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Thu, 10 Apr 2014 21:48:11 -0700 Subject: [PATCH 1/2] fix(coreos-base/oem-gce): Silence bogus /etc/hosts error On first boot /etc/hosts doesn't exist yet, causing an error to be logged. This is a bit misleading --- .../coreos-base/oem-gce/files/gce-add-metadata-host | 2 +- .../coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.1-r2.ebuild | 1 - .../{oem-gce-0.0.2-r4.ebuild => oem-gce-0.0.2-r5.ebuild} | 0 3 files changed, 1 insertion(+), 2 deletions(-) delete mode 120000 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.1-r2.ebuild rename sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/{oem-gce-0.0.2-r4.ebuild => oem-gce-0.0.2-r5.ebuild} (100%) diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-add-metadata-host b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-add-metadata-host index f91bf64c97..e4fd4cd92c 100755 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-add-metadata-host +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/gce-add-metadata-host @@ -2,7 +2,7 @@ entry="169.254.169.254 metadata" -grep -q "${entry}" /etc/hosts +grep -qs "${entry}" /etc/hosts if [ $? -ne 0 ]; then echo ${entry} >> /etc/hosts diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.1-r2.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.1-r2.ebuild deleted file mode 120000 index aed2a55f1d..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.1-r2.ebuild +++ /dev/null @@ -1 +0,0 @@ -oem-gce-0.0.1.ebuild \ No newline at end of file diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r4.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r5.ebuild similarity index 100% rename from sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r4.ebuild rename to sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r5.ebuild From ae9321dda612d42c62fe3ceecbc057aad0b180bd Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Fri, 11 Apr 2014 11:19:34 -0700 Subject: [PATCH 2/2] fix(coreos-base/oem-gce): Robustify the GCE user-data script. - Provide some logging on what actually happened. - Tolerate empty user-data, just no-op. - Apply both project and instance data. --- .../oem-gce/files/gce-coreos-cloudinit | 34 +++++++++++++++---- ....0.2-r5.ebuild => oem-gce-0.0.2-r6.ebuild} | 0 2 files changed, 28 insertions(+), 6 deletions(-) rename sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/{oem-gce-0.0.2-r5.ebuild => oem-gce-0.0.2-r6.ebuild} (100%) 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 index 5df57a5d5e..f0eb855fd0 100644 --- 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 @@ -1,10 +1,32 @@ -#!/bin/bash -e +#!/bin/bash +URL_PREFIX="http://169.254.169.254/computeMetadata/v1/" TMPFILE=$(mktemp /tmp/XXXXXX-cloud-init) -trap 'echo "removing ${TMPFILE}"; rm -f ${TMPFILE}' INT TERM EXIT +if [[ $? -ne 0 || ! -f "${TMPFILE}" ]]; then + echo "Failed to create temp file for user-data" >&2 + exit 1 +fi +trap "rm -f '${TMPFILE}'" 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} +try_cloudinit() { + local id="$1" + local url="${URL_PREFIX}${id}/attributes/user-data" -/usr/bin/coreos-cloudinit --from-file=${TMPFILE} + echo "Trying to fetch $id user-data..." + curl --retry 5 --retry-delay 2 --silent --fail --show-error \ + -H "X-Google-Metadata-Request: True" -o "${TMPFILE}" "${url}" + + ret=$? + if [[ $ret -ne 0 && $ret -ne 22 ]]; then + echo "curl failed with error code $ret" >&2 + return $ret + elif [[ $ret -eq 22 || ! -s "${TMPFILE}" ]]; then + echo "$id user-data is missing or empty, skipping" + return 0 + fi + + coreos-cloudinit --from-file="${TMPFILE}" + return $? +} + +try_cloudinit project && try_cloudinit instance diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r5.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r6.ebuild similarity index 100% rename from sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r5.ebuild rename to sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r6.ebuild