This bug was fixed in the package cloud-init - 0.7.5-0ubuntu1.4

---------------
cloud-init (0.7.5-0ubuntu1.4) trusty; urgency=medium

  [ Ben Howard ]
  * d/patches/lp-1383794-gce-short_name.patch: Use short hostname for GCE
    (LP: #1383794).

  [ Wayne Witzel III ]
  * d/patches/lp-1404311-gce-data_encoding.patch: Enable user-data encoding
    support for GCE (LP: #1404311).

  [ Daniel Watkins ]
  * d/patches/lp-1422919-azure-g5_ephemeral.patch: Properly format G5 series
    cloud instances (LP: #1422919).
 -- Ben Howard <ben.how...@ubuntu.com>   Tue, 17 Feb 2015 14:56:16 -0700

** Changed in: cloud-init (Ubuntu Trusty)
       Status: Fix Committed => Fix Released

** Changed in: cloud-init (Ubuntu Precise)
       Status: Fix Committed => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to cloud-init.
https://bugs.launchpad.net/bugs/1404311

Title:
  [SRU] gce metadata api doesn't properly stream binary data

Status in Init scripts for use on cloud images:
  Fix Committed
Status in cloud-init package in Ubuntu:
  Fix Released
Status in cloud-init source package in Precise:
  Fix Released
Status in cloud-init source package in Trusty:
  Fix Released
Status in cloud-init source package in Utopic:
  Fix Released
Status in cloud-init source package in Vivid:
  Fix Released

Bug description:
  [IMPACT] Due to limitations in GCE, binary user-data is mangled when
  sent as user-data.

  [FIX] Allow user to declare binary encoding on user-data.

  [VERIFICATION]
  1. Create pristine image from -proposed
  2. For step 6
  3. Boot GCE instance w/ normal user-data, i.e.:
     $ cat user-data
     #cloud-config
     ssh_import_id: [utlemming]
     $ gcloud compute instances create <image from step 1> \
              --metadata-from-file user-data=user-data
  4. Confirm that user-data was parsed properly
  5. GZIP user-data, and encode using base64:
     gzip -c user-data.txt | base64 > user-data.b64
  6. Boot GCE instance w/ user-data.b64 and character encoding meta-data 
     set: 
     $ gcloud compute instances create <image from step 1> \
              --metadata-from-file user-data=user-data.b64 \
              --metadata user-data-encoding=base64
  7. Confirm that user-data was consumed; attach /var/log/cloud-init.log
     to report. 

  [RISK] If a user sets the user-data-encoding to base64, but does not
  provide base64 data the instance will fail to provision. However,
  since the user has to explicitly setup the circumstances, it is low
  risk.

  [ORIGINAL REPORT]
  The GCE datasource uses the long hostname. Hostnames longer than 64 
characters can break several tools.
  While implementing the GCE provider for Juju we found that the metadata API 
breaks when trying to retrieve certain binary formats. In our case the gz of 
user-data. The API only streams out the first 5 bytes, encounters what it 
preceives as a EOF/nil character and truncates the rest of the request.

  We've opened an issue with Google directly, but in the meantime a work
  around is to allow an explicit encoding to be set for the user-data
  field of the GCE metadata. This will allow use to base64 encode the
  binary blob, which the API returns the entire contents of without
  issue.

To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-init/+bug/1404311/+subscriptions

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to