← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1892171] [NEW] cloud-init doesn't start when no data source is present

 

Public bug reported:

I am using KVM (via libvirt)

1. I take bionic-server-cloudimg-amd64.img from cloud-images.ubuntu.com

2. I create a simple user-data file
----
#cloud-config


users:
        - default
        - name: ubuntu
          ssh-authorized-keys:
                  - ssh-rsa <contents of id_rsa.pub> 
----

3. I create the seed ISO. 
----
cloud-localds --hostname TEMPLATE --verbose seed.iso user-data
----

4. I boot the VM. Within the VM I run some provisioning ...
----
cloud-init status --wait
# Some provisioning here
apt-get install some devel libraries
truncate -s 0 /etc/machine-id
rm -rf /etc/netplan/*
rm -rf /etc/ssh/ssh_host_*
cloud-init clean --seed --logs
----

5. I shut down the VM. This, in theory, should become my template from
which I should be able to clone new VMs, correct? However, when I clone
and boot it, cloud-init does not run on the clones at all.

In /run/cloud-init/cloud.cfg I see
----
di_report:
  datasource_list: [ ]
  # reporting not found result. notfound=disabled
----

In /run/cloud-init/cloud-init-generator.log I see (among other things)
----
ds-identify rc=1
ds-identify_RET=notfound
cloud-init is enabled but no datasource found. disabling
----

Finally, in /run/cloud-init/ds-identify.log I see (among other things)
----
DSNAME=
DSLIST=NoCloud ConfigDrive OpenNebula DigitalOcean Azure AltCloud OVF MAAS GCE OpenStack CloudSigma SmartOS Bigstep Scaleway AliYun Ec2 CloudStack Hetzner IBMCloud Oracle Exoscale None
Mode=search
is_container=false
is_ds_enabled(IBMCloud) = true
ec2 platform is 'Unknown'
No ds found [mode=search,notfound=disabled]. Disabled cloud-init [1]
----

DSLIST in the above matches what is in
/etc/cloud/cloud.cfg.d/90_dpkg.cfg but it is not recognized at all.

However, as mentioned in https://bugs.launchpad.net/cloud-
init/+bug/1876375 , if I do this instead

----
echo 'datasource_list: [ NoCloud, None ]' > /etc/cloud/cloud.cfg.d/90_dpkg.cfg
---

Then everything works just as I want it. The clones boot up properly,
there's no need to attach any seed ISO file, we are able to login.

Why is it that when 90_dpkg.cfg contains [ NoCloud, None]
the cloning process works and cloud-init starts, but when 90_dpkg.cfg has a long list of entries (all of which are irrelevant) , it chooses to not even start?

(NOTE: This is on Ubuntu 18, /usr/bin/cloud-init
20.2-45-g5f7825e2-0ubuntu1~18.04.1 from some daily build)

** 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/1892171

Title:
  cloud-init doesn't start when no data source is present

Status in cloud-init:
  New

Bug description:
  I am using KVM (via libvirt)

  1. I take bionic-server-cloudimg-amd64.img from cloud-
  images.ubuntu.com

  2. I create a simple user-data file
  ----
  #cloud-config

  
  users:
          - default
          - name: ubuntu
            ssh-authorized-keys:
                    - ssh-rsa <contents of id_rsa.pub> 
  ----

  3. I create the seed ISO. 
  ----
  cloud-localds --hostname TEMPLATE --verbose seed.iso user-data
  ----

  4. I boot the VM. Within the VM I run some provisioning ...
  ----
  cloud-init status --wait
  # Some provisioning here
  apt-get install some devel libraries
  truncate -s 0 /etc/machine-id
  rm -rf /etc/netplan/*
  rm -rf /etc/ssh/ssh_host_*
  cloud-init clean --seed --logs
  ----

  5. I shut down the VM. This, in theory, should become my template from
  which I should be able to clone new VMs, correct? However, when I
  clone and boot it, cloud-init does not run on the clones at all.

  In /run/cloud-init/cloud.cfg I see
  ----
  di_report:
    datasource_list: [ ]
    # reporting not found result. notfound=disabled
  ----

  In /run/cloud-init/cloud-init-generator.log I see (among other things)
  ----
  ds-identify rc=1
  ds-identify_RET=notfound
  cloud-init is enabled but no datasource found. disabling
  ----

  Finally, in /run/cloud-init/ds-identify.log I see (among other things)
  ----
  DSNAME=
  DSLIST=NoCloud ConfigDrive OpenNebula DigitalOcean Azure AltCloud OVF MAAS GCE OpenStack CloudSigma SmartOS Bigstep Scaleway AliYun Ec2 CloudStack Hetzner IBMCloud Oracle Exoscale None
  Mode=search
  is_container=false
  is_ds_enabled(IBMCloud) = true
  ec2 platform is 'Unknown'
  No ds found [mode=search,notfound=disabled]. Disabled cloud-init [1]
  ----

  DSLIST in the above matches what is in
  /etc/cloud/cloud.cfg.d/90_dpkg.cfg but it is not recognized at all.

  However, as mentioned in https://bugs.launchpad.net/cloud-
  init/+bug/1876375 , if I do this instead

  ----
  echo 'datasource_list: [ NoCloud, None ]' > /etc/cloud/cloud.cfg.d/90_dpkg.cfg
  ---

  Then everything works just as I want it. The clones boot up properly,
  there's no need to attach any seed ISO file, we are able to login.

  Why is it that when 90_dpkg.cfg contains [ NoCloud, None]
  the cloning process works and cloud-init starts, but when 90_dpkg.cfg has a long list of entries (all of which are irrelevant) , it chooses to not even start?

  (NOTE: This is on Ubuntu 18, /usr/bin/cloud-init
  20.2-45-g5f7825e2-0ubuntu1~18.04.1 from some daily build)

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


Follow ups