← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 2009236] Re: Cloud-init inconsistently uses config

 

Tracked in Github Issues as https://github.com/canonical/cloud-
init/issues/4086

** Bug watch added: github.com/canonical/cloud-init/issues #4086
   https://github.com/canonical/cloud-init/issues/4086

** Changed in: cloud-init
       Status: Triaged => Expired

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

Title:
  Cloud-init inconsistently uses config

Status in cloud-init:
  Expired

Bug description:
  On boot, cloud-init is able to pass cloud-config via userdata_raw, a
  useful feature when testing behavior on a datasource that doesn't have
  its own way of retrieving userdata.

  system_info:
     datasource:
       None:
         userdata_raw: "#cloud-config\ngrub_dpkg:\n  enabled: true"

  
  This works during boot as one might expect:

  2023-03-03 21:15:59,255 - modules.py[DEBUG]: Running module grub-dpkg (<module 'cloudinit.config.cc_grub_dpkg' from '/
  usr/lib/python3/dist-packages/cloudinit/config/cc_grub_dpkg.py'>) with frequency once-per-instance
  2023-03-03 21:15:59,256 - handlers.py[DEBUG]: start: modules-config/config-grub-dpkg: running config-grub-dpkg with frequency once-per-instance

  
  However, cloud-init's single subcommand clearly uses a different configuration, since the following fails to run the same module with the same config:

  ```
  cloud-init --debug --force single --frequency always --name cc_grub_dpkg
  ```

  Furthermore, this userdata_raw isn't included in /run/cloud-
  init/instance-data-sensitive.json, nor in cloud-init query -a.

  Alarmingly, an invalid config provided via userdata_raw is not warned
  of by cloud-init schema --system:

  ```
  system_info:
     # This will affect which distro class gets used
     datasource:
       NoCloud:
         userdata_raw: |
           #cloud-config
           grub_dpkg:
             enabled: true
             invalid-key: true
  ```

  output:
  ```
  # cloud-init schema --system
  Found cloud-config data types: user-data, vendor-data

  1. user-data at /var/lib/cloud/instances/cloudinit-0302-160255pw859u9h/cloud-config.txt:
    Valid cloud-config: user-data

  2. vendor-data at /var/lib/cloud/instances/cloudinit-0302-160255pw859u9h/vendor-cloud-config.txt:
    Valid cloud-config: vendor-data
   ```

  These details reveal inconsistency in cloud-init config handling, and
  all contribute to a confusing user experience when using userdata_raw.

  There may be other inconsistencies too - configs passed directly on
  the kernel commandline (cc: <config> end_cc), and configs sourced from
  a url via the kernel commandline (cloud-config-url=) are both used
  during boot - but I haven't looked to see whether they behave
  correctly with (schema|single|query) subcommands or show up in
  /run/cloud-init/instance-data-sensitive.json, but after this finding
  we probably aught to audit for other issues like this.

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



References