← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1837530] [NEW] cloud-config in vendordata overriden by user-data

 

Public bug reported:

This may be a bug or valid behaviour, but by reading little available
vendordata documentations, I think either documentation is invalid or
at-least lacking something.

I'm trying to boot instances using config-drive and openstack dialect.
There is no Nova or metadata service involved, just plain config-drive
which happens to have user-data, vendor-data, network-data and metadata
in following hierarchy:

─── openstack
    ├── content
    │   └── hotplug-cpu-udev.rules
    └── latest
        ├── meta_data.json
        ├── network_data.json
        ├── user_data
        └── vendor_data.json

I'm using vendor_data to supply general instructions which is shared
between every machine. It is provided by me; as infrastructure provider
not user and contains instructions to make machines works with platform
that I provide. So I think it's valid to have these general instructions
in vendor_data and let users configure their machines as their wish by
providing user_data.

The problem is whenever user_data exists, vendor_data will be erased.
Actually logs says it's processed and there will be
/var/lib/cloud/instance/vendor-cloud-config.txt but If user_data and
vendor_data both have `runcmd` for example,
/var/lib/cloud/instance/scripts/runcmd will contain just user_data
scripts.

user_data cloud-config is like:

#cloud-config
hostname: ubuntu.default
manage_etc_hosts: localhost
growpart:
  mode: auto
  devices:
  - /
  ignore_growroot_disabled: false
runcmd:
- wget http://example/img -O /tmp/img
resize_rootfs: true
ssh_pwauth: false

So my understanding is, It should not prevent vendor-data to be ran. For
the reference vendor_data.json content is:

{"cloud-init": "#cloud-config\nruncmd:\n- touch /tmp/vendor"}

So, should I change user provided user_data to allow vendor data
execution? That would be a little weird since documentation said the
other way; user_data should contain instructions to disallow vendordata
executions. And if documentation is wrong, it's sill doesn't look nice
to ask users change their cloud-config to be run properly on my
platform.

** Affects: cloud-init
     Importance: Undecided
         Status: New

-- 
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/1837530

Title:
  cloud-config in vendordata overriden by user-data

Status in cloud-init:
  New

Bug description:
  This may be a bug or valid behaviour, but by reading little available
  vendordata documentations, I think either documentation is invalid or
  at-least lacking something.

  I'm trying to boot instances using config-drive and openstack dialect.
  There is no Nova or metadata service involved, just plain config-drive
  which happens to have user-data, vendor-data, network-data and
  metadata in following hierarchy:

  ─── openstack
      ├── content
      │   └── hotplug-cpu-udev.rules
      └── latest
          ├── meta_data.json
          ├── network_data.json
          ├── user_data
          └── vendor_data.json

  I'm using vendor_data to supply general instructions which is shared
  between every machine. It is provided by me; as infrastructure
  provider not user and contains instructions to make machines works
  with platform that I provide. So I think it's valid to have these
  general instructions in vendor_data and let users configure their
  machines as their wish by providing user_data.

  The problem is whenever user_data exists, vendor_data will be erased.
  Actually logs says it's processed and there will be
  /var/lib/cloud/instance/vendor-cloud-config.txt but If user_data and
  vendor_data both have `runcmd` for example,
  /var/lib/cloud/instance/scripts/runcmd will contain just user_data
  scripts.

  user_data cloud-config is like:

  #cloud-config
  hostname: ubuntu.default
  manage_etc_hosts: localhost
  growpart:
    mode: auto
    devices:
    - /
    ignore_growroot_disabled: false
  runcmd:
  - wget http://example/img -O /tmp/img
  resize_rootfs: true
  ssh_pwauth: false

  So my understanding is, It should not prevent vendor-data to be ran.
  For the reference vendor_data.json content is:

  {"cloud-init": "#cloud-config\nruncmd:\n- touch /tmp/vendor"}

  So, should I change user provided user_data to allow vendor data
  execution? That would be a little weird since documentation said the
  other way; user_data should contain instructions to disallow
  vendordata executions. And if documentation is wrong, it's sill
  doesn't look nice to ask users change their cloud-config to be run
  properly on my platform.

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


Follow ups