summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorChad Smith <chad.smith@canonical.com>2021-11-01 14:43:05 -0600
committerGitHub <noreply@github.com>2021-11-01 15:43:05 -0500
commit773765346ba543987aa64a1119fa760f0b1cbb6f (patch)
tree46769ea3ab66cdfb1ea9734f0fe2fbff2ce912ce /tools
parentb1beb53886527eb787b504f374f24a7bd5fe06ac (diff)
downloadvyos-cloud-init-773765346ba543987aa64a1119fa760f0b1cbb6f.tar.gz
vyos-cloud-init-773765346ba543987aa64a1119fa760f0b1cbb6f.zip
Add LXD datasource (#1040)
Add DataSourceLXD which knows how to talk to the dev-lxd socket to obtain all instance metadata API: https://linuxcontainers.org/lxd/docs/master/dev-lxd. This first branch is to deliver feature parity with the existing NoCloud datasource which is currently used to intialize LXC instances on first boot. Introduce a SocketConnectionPool and LXDSocketAdapter to support performing HTTP GETs on the following routes which are surfaced by the LXD host to all containers: http://unix.socket/1.0/meta-data http://unix.socket/1.0/config/user.user-data http://unix.socket/1.0/config/user.network-config http://unix.socket/1.0/config/user.vendor-data These 4 routes minimally replace the static content provided in the following nocloud-net seed files: /var/lib/cloud/nocloud-net/{meta-data,vendor-data,user-data,network-config} The intent of this commit is to set a foundation for LXD socket communication that will allow us to build network hot-plug features by eventually consuming LXD's websocket upgrade route 1.0/events to react to network, meta-data and user-data config changes over time. In the event that no custom network-config is provided, default to the same network-config definition provided by LXD to the NoCloud network-config seed file. Supplemental features above NoCloud datasource: surface all custom instance data config keys via cloud-init query ds which aids in discoverability of features/tags/labels as well as conditional #cloud-config jinja templates operations based on custom config options. TBD: better cloud-init query support for dot-delimited keys
Diffstat (limited to 'tools')
-rwxr-xr-xtools/ds-identify8
1 files changed, 7 insertions, 1 deletions
diff --git a/tools/ds-identify b/tools/ds-identify
index c2f710e9..30d4b0f6 100755
--- a/tools/ds-identify
+++ b/tools/ds-identify
@@ -123,7 +123,7 @@ DS_MAYBE=2
DI_DSNAME=""
# this has to match the builtin list in cloud-init, it is what will
# be searched if there is no setting found in config.
-DI_DSLIST_DEFAULT="MAAS ConfigDrive NoCloud AltCloud Azure Bigstep \
+DI_DSLIST_DEFAULT="MAAS ConfigDrive NoCloud LXD AltCloud Azure Bigstep \
CloudSigma CloudStack DigitalOcean Vultr AliYun Ec2 GCE OpenNebula OpenStack \
OVF SmartOS Scaleway Hetzner IBMCloud Oracle Exoscale RbxCloud UpCloud VMware"
DI_DSLIST=""
@@ -802,6 +802,12 @@ dscheck_MAAS() {
return ${DS_NOT_FOUND}
}
+# LXD datasource requires active /dev/lxd/sock
+# https://linuxcontainers.org/lxd/docs/master/dev-lxd
+dscheck_LXD() {
+ [ -S /dev/lxd/sock ] && return ${DS_FOUND} || return ${DS_NOT_FOUND}
+}
+
dscheck_NoCloud() {
local fslabel="cidata CIDATA" d=""
case " ${DI_KERNEL_CMDLINE} " in