Can I add a LXD container on Ubuntu MAAS?

just a question… I’d like to adding and manage my LXD containers with MAAS, is there a way to make that without use KVM?
thanks

No, containers can’t PXE boot so MAAS can’t provision them, nor does it now how to start/stop them.

LXD can integrate with MAAS but that’s on the IP allocation and tracking side of things only.

I’ve found this post where he creates a container and inside that a KVM. Then in MAAS is present the VM. I’ve tried to realize that with these steps:

$: lxc launch images:ubuntu/bionic/amd64 ulab-juju-gui
$: lxc exec ulab-juju-gui bash

then I’ve installed on it KVM:

root@ulab-juju-gui:~# sudo apt install qemu-kvm libvirt-bin virtinst -y
root@ulab-juju-gui:~# exit

and then on my host:

$: lxc exec ulab-juju-gui – virt-install
–name=juju-controller
–os-type=Linux
–os-variant=ubuntu18.04
–ram=4096
–vcpus=2
–disk size=10
–pxe
–network bridge:virbr0
–graphics vnc,listen=127.0.0.1 --noautoconsole &&\sudo lxd --debug --group lxd

but I received that error:

Starting install…
Allocating ‘juju-controller.qcow2’ | 10 GB 00:00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
[sudo] password for richardsith:
DBUG[03-01|00:38:14] Connecting to a local LXD over a Unix socket
DBUG[03-01|00:38:14] Sending request to LXD method=GET url=http://unix.socket/1.0 etag=
DBUG[03-01|00:38:14] Got response struct from LXD
DBUG[03-01|00:38:14]
{
“config”: {},
“api_extensions”: [
“storage_zfs_remove_snapshots”,
“container_host_shutdown_timeout”,
“container_stop_priority”,
“container_syscall_filtering”,
“auth_pki”,
“container_last_used_at”,
“etag”,
“patch”,
“usb_devices”,
“https_allowed_credentials”,
“image_compression_algorithm”,
“directory_manipulation”,
“container_cpu_time”,
“storage_zfs_use_refquota”,
“storage_lvm_mount_options”,
“network”,
“profile_usedby”,
“container_push”,
“container_exec_recording”,
“certificate_update”,
“container_exec_signal_handling”,
“gpu_devices”,
“container_image_properties”,
“migration_progress”,
“id_map”,
“network_firewall_filtering”,
“network_routes”,
“storage”,
“file_delete”,
“file_append”,
“network_dhcp_expiry”,
“storage_lvm_vg_rename”,
“storage_lvm_thinpool_rename”,
“network_vlan”,
“image_create_aliases”,
“container_stateless_copy”,
“container_only_migration”,
“storage_zfs_clone_copy”,
“unix_device_rename”,
“storage_lvm_use_thinpool”,
“storage_rsync_bwlimit”,
“network_vxlan_interface”,
“storage_btrfs_mount_options”,
“entity_description”,
“image_force_refresh”,
“storage_lvm_lv_resizing”,
“id_map_base”,
“file_symlinks”,
“container_push_target”,
“network_vlan_physical”,
“storage_images_delete”,
“container_edit_metadata”,
“container_snapshot_stateful_migration”,
“storage_driver_ceph”,
“storage_ceph_user_name”,
“resource_limits”,
“storage_volatile_initial_source”,
“storage_ceph_force_osd_reuse”,
“storage_block_filesystem_btrfs”,
“resources”,
“kernel_limits”,
“storage_api_volume_rename”,
“macaroon_authentication”,
“network_sriov”,
“console”,
“restrict_devlxd”,
“migration_pre_copy”,
“infiniband”,
“maas_network”,
“devlxd_events”,
“proxy”,
“network_dhcp_gateway”,
“file_get_symlink”,
“network_leases”,
“unix_device_hotplug”,
“storage_api_local_volume_handling”,
“operation_description”,
“clustering”,
“event_lifecycle”,
“storage_api_remote_volume_handling”,
“nvidia_runtime”,
“container_mount_propagation”,
“container_backup”,
“devlxd_images”,
“container_local_cross_pool_handling”,
“proxy_unix”,
“proxy_udp”,
“clustering_join”,
“proxy_tcp_udp_multi_port_handling”,
“network_state”,
“proxy_unix_dac_properties”,
“container_protection_delete”,
“unix_priv_drop”,
“pprof_http”,
“proxy_haproxy_protocol”,
“network_hwaddr”,
“proxy_nat”,
“network_nat_order”,
“container_full”,
“candid_authentication”,
“backup_compression”,
“candid_config”,
“nvidia_runtime_config”,
“storage_api_volume_snapshots”,
“storage_unmapped”,
“projects”,
“candid_config_key”,
“network_vxlan_ttl”,
“container_incremental_copy”,
“usb_optional_vendorid”,
“snapshot_scheduling”,
“container_copy_project”,
“clustering_server_address”,
“clustering_image_replication”,
“container_protection_shift”,
“snapshot_expiry”,
“container_backup_override_pool”,
“snapshot_expiry_creation”,
“network_leases_location”,
“resources_cpu_socket”,
“resources_gpu”,
“resources_numa”,
“kernel_features”,
“id_map_current”,
“event_location”,
“storage_api_remote_volume_snapshots”,
“network_nat_address”,
“container_nic_routes”,
“rbac”,
“cluster_internal_copy”,
“seccomp_notify”,
“lxc_features”,
“container_nic_ipvlan”,
“network_vlan_sriov”,
“storage_cephfs”,
“container_nic_ipfilter”,
“resources_v2”,
“container_exec_user_group_cwd”,
“container_syscall_intercept”,
“container_disk_shift”,
“storage_shifted”,
“resources_infiniband”,
“daemon_storage”,
“instances”,
“image_types”,
“resources_disk_sata”,
“clustering_roles”,
“images_expiry”,
“resources_network_firmware”,
“backup_compression_algorithm”,
“ceph_data_pool_name”,
“container_syscall_intercept_mount”,
“compression_squashfs”,
“container_raw_mount”,
“container_nic_routed”,
“container_syscall_intercept_mount_fuse”,
“container_disk_ceph”,
“virtual-machines”,
“image_profiles”,
“clustering_architecture”,
“resources_disk_id”,
“storage_lvm_stripes”,
“vm_boot_priority”,
“unix_hotplug_devices”,
“api_filtering”,
“instance_nic_network”,
“clustering_sizing”
],
“api_status”: “stable”,
“api_version”: “1.0”,
“auth”: “trusted”,
“public”: false,
“auth_methods”: [
“tls”
],
“environment”: {
“addresses”: ,
“architectures”: [
“x86_64”,
“i686”
],
“certificate”: “-----BEGIN CERTIFICATE-----\nMIIB9zCCAX2gAwIBAgIQaXg36c3/Di++otXDgd8UVjAKBggqhkjOPQQDAzAwMRww\nGgYDVQQKExNsaW51eGNvbnRhaW5lcnMub3JnMRAwDgYDVQQDDAdyb290QGhpMB4X\nDTIwMDIyOTIyMjM1N1oXDTMwMDIyNjIyMjM1N1owMDEcMBoGA1UEChMTbGludXhj\nb250YWluZXJzLm9yZzEQMA4GA1UEAwwHcm9vdEBoaTB2MBAGByqGSM49AgEGBSuB\nBAAiA2IABJsMOqaSL8y6tqGvCB4Eh/7kKP/vZAeT9RHHYZc3VP8jvuD6c9b64oCK\nvPDsa1pD8viYYpTUzaP+C25uEuM1OB2pC785Dbwo9jgPkjh4QAiduAgpbvJjqj6b\nPuW9Ng51aqNcMFowDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMB\nMAwGA1UdEwEB/wQCMAAwJQYDVR0RBB4wHIICaGmHBH8AAAGHEAAAAAAAAAAAAAAA\nAAAAAAEwCgYIKoZIzj0EAwMDaAAwZQIwK3nrrIJkVqFBGjl/ZBtI2xdC4bpRcA+B\nVUeL4Ee+IF3hMnA85esy0B+IMQs2uRPMAjEAiAf7m7qvqXN5nqyqufJzzSTukpV5\nh+h9/3IUc/zueI8Y323RH1RiMwGrqsvyRXWa\n-----END CERTIFICATE-----\n”,
“certificate_fingerprint”: “fe3332ecf18c337ad3ed02abaa76cb725d994c2adfc0c6f214df98700618d0b6”,
“driver”: “lxc”,
“driver_version”: “3.2.1”,
“kernel”: “Linux”,
“kernel_architecture”: “x86_64”,
“kernel_features”: {
“netnsid_getifaddrs”: “true”,
“seccomp_listener”: “true”,
“seccomp_listener_continue”: “true”,
“shiftfs”: “false”,
“uevent_injection”: “true”,
“unpriv_fscaps”: “true”
},
“kernel_version”: “5.3.0-40-generic”,
“lxc_features”: {
“cgroup2”: “false”,
“mount_injection_file”: “true”,
“network_gateway_device_route”: “true”,
“network_ipvlan”: “true”,
“network_l2proxy”: “true”,
“network_phys_macvlan_mtu”: “true”,
“network_veth_router”: “true”,
“seccomp_notify”: “true”
},
“project”: “default”,
“server”: “lxd”,
“server_clustered”: false,
“server_name”: “hi”,
“server_pid”: 3976,
“server_version”: “3.21”,
“storage”: “zfs”,
“storage_version”: “0.8.1-1ubuntu14.3”
}
}
EROR[03-01|00:38:14] Failed to start the daemon: LXD is already running
INFO[03-01|00:38:14] Starting shutdown sequence
DBUG[03-01|00:38:14] Not unmounting temporary filesystems (containers are still running)
Error: LXD is already running

while on container:

$:lxc exec ulab-juju-gui bash
root@ulab-juju-gui:~# libvirtd list
libvirtd: unexpected, non-option, command line arguments
root@ulab-juju-gui:~# virsh list
Id Name State
1 juju-controller running

1 Like

There’s a way to do this now.
Check out https://maas.io/docs/add-a-vm-host and related documentation.

2 Likes

fantastic, thanks a lot… one of these days I’ll try that on my lab.