diskimage-builder/diskimage_builder/elements/cloud-init-datasources/install.d/05-set-cloud-init-sources
Julia Kreger e544379010 ConfigDrive: Disable cloud-init auto dhcp by default
If your using configuration drive, cloud init tries to DHCP by
default anyway, which delays the boot sequence as it seeks out a
network attached metadata source.

So instead, disable the automatic activation so the configuration
drive data source is acutally leverage. Additionally add further
notes to provide guidance to users of DIB.

Change-Id: Ie7c522f23deb3f08ee4ec002e0e2020f382359aa
2024-04-29 18:39:41 +00:00

51 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
set -x
fi
set -eu
set -o pipefail
DIB_CLOUD_INIT_DATASOURCES=${DIB_CLOUD_INIT_DATASOURCES:-""}
# NOTE(TheJulia): If your looking at slightly more exotic configuration, the
# following links may be wortwhile to review. Specifically: ConfigDrive is just
# initial datasource configuration, and fallback network configuration basically
# always happens. Plus, cloud-init by default ignores other data in the
# configuration drive unless "openstack" is referenced. :\
# https://cloudinit.readthedocs.io/en/latest/reference/datasources/configdrive.html
# https://cloudinit.readthedocs.io/en/latest/reference/datasources/openstack.html#openstack-ironic-bare-metal
if [ -z "$DIB_CLOUD_INIT_DATASOURCES" ] ; then
echo "DIB_CLOUD_INIT_DATASOURCES must be set to a comma-separated list "
echo "of cloud-init data sources you wish to use, ie 'Ec2, NoCloud, ConfigDrive'"
exit 1
fi
if [ -d /etc/cloud/cloud.cfg.d ]; then
cat > /etc/cloud/cloud.cfg.d/91-dib-cloud-init-datasources.cfg <<EOF
datasource_list: [ $DIB_CLOUD_INIT_DATASOURCES, None ]
EOF
# Newer cloud-init versions complain by default when they should
# use the Ec2 datasource on a non-AWS cloud. If the Ec2
# datasource is desired, we need to tell cloud-init that we really
# want this. Otherwise there will be ugly warnings or worse.
#
if [[ $DIB_CLOUD_INIT_DATASOURCES =~ Ec2 ]]; then
cat > /etc/cloud/cloud.cfg.d/92-ec2-datasource.cfg <<EOF
#cloud-config
datasource:
Ec2:
strict_id: false
EOF
fi
# If we are drawing configuration from configuration drive, we *very*
# likely have network configuration there, so by default try that
# instead of trying to do DHCP out of the gate.
# https://cloudinit.readthedocs.io/en/latest/reference/network-config.html#disabling-network-activation
if [[ $DIB_CLOUD_INIT_DATASOURCES =~ ConfigDrive ]]; then
cat > /etc/cloud/cloud.cfg.d/93-dib-cloud-init-disable-datasource-network-activation.cfg <<EOF
disable_network_activation: true
EOF
fi
fi