LXD-vertrouwensconfiguratie automatiseren

Automatiseer LXD-vertrouwensconfiguratie voor Ansible-ontwikkelomgevingen op Ubuntu met sudo. Dit is de automatiseringsaanpak van de development-desktoprol, waarbij uitloggen/inloggen voor nieuwe groepsrechten wordt vermeden.

Projects:  c2platform/c2/ansible-inventory ,  c2platform.dev

Overzicht

Deze handleiding legt de automatiseringsaanpak uit voor LXD-vertrouwensconfiguratie die deel uitmaakt van Ansible Desktop-rol ( c2platform.dev.desktop). LXD via snap installeren is eenvoudig, maar het configureren van vertrouwensrelaties vereist speciale aandacht. Een script met passwordless sudo kan vertrouwensrelaties beheren zonder een uitlog-/inlogcyclus om LXD-groepsrechten te activeren.

Een Ansible-ontwikkelomgeving is single-user en vertrouwt op virtualisatie met VirtualBox en LXD. Het C2 Platform ondersteunt het overdragen van een ontwikkeldesktop aan een andere gebruiker, die het setupscript opnieuw kan uitvoeren of deze stappen kan volgen. De handleiding behandelt ook mogelijke conflicten, zoals een bestaande vertrouwensrelatie die door een andere gebruiker is aangemaakt.

Probleem

Na installatie van LXD als snap en activering van de ontwikkelomgeving geeft een commando zoals vagrant status c2d-rproxy1 een foutmelding dat de vertrouwensrelatie niet is ingesteld. Dit komt doordat de omgeving voor het eerst wordt opgezet en de Vagrant LXD-provider vereist dat de vertrouwensrelatie wordt opgezet voordat er interactie met LXD plaatsvindt.

(c2) onknows@io1:~/git/gitlab/c2/ansible-c2d$ vagrant status c2d-rproxy1
The LXD provider could not authenticate to the daemon at https://127.0.0.1:8443.

You may need configure LXD to allow requests from this machine. The
easiest way to do this is to add your LXC client certificate to LXD's
list of trusted certificates. This can typically be done with the
following command:

    $ lxc config trust add /home/onknows/.vagrant.d/data/lxd/client.crt

You can find more information about configuring LXD at:

    https://documentation.ubuntu.com/lxd/en/latest/howto/initialize/

Directe LXD-commando’s mislukken eveneens zonder groepsrechten:

(c2) onknows@io1:~/git/gitlab/c2/ansible-c2d$ lxc ls
Error: LXD unix socket "/var/snap/lxd/common/lxd/unix.socket" not accessible: permission denied
(c2) onknows@io1:~/git/gitlab/c2/ansible-c2d$ groups
onknows sudo

Oplossing met sudo

Passwordless sudo maakt het mogelijk om vertrouwensrelaties te controleren en te beheren zonder actieve LXD-groepsrechten. Bestaande vertrouwensrelaties weergeven:

sudo lxc config trust ls

Voorbeelduitvoer met een conflicterende client.crt-vertrouwensrelatie:

+--------+------------+---------------+--------------+-----------------------------+-----------------------------+
|  TYPE  |    NAME    |  COMMON NAME  | FINGERPRINT  |         ISSUE DATE          |         EXPIRY DATE         |
+--------+------------+---------------+--------------+-----------------------------+-----------------------------+
| client | client.crt | bobtestc2@io1 | 85811f508645 | Aug 6, 2026 at 7:36am (UTC) | Aug 3, 2036 at 7:36am (UTC) |
+--------+------------+---------------+--------------+-----------------------------+-----------------------------+

De conflicterende vertrouwensrelatie verwijderen via fingerprint:

sudo lxc config trust remove 85811f508645

De vereiste vertrouwensrelatie toevoegen:

sudo lxc config trust add /home/onknows/.vagrant.d/data/lxd/client.crt

De bijgewerkte vertrouwenslijst verifiëren:

sudo lxc config trust ls

Voorbeelduitvoer:

+--------+------------+-------------+--------------+-----------------------------+-----------------------------+
|  TYPE  |    NAME    | COMMON NAME | FINGERPRINT  |         ISSUE DATE          |         EXPIRY DATE         |
+--------+------------+-------------+--------------+-----------------------------+-----------------------------+
| client | client.crt | onknows@io1 | dc2f65e73a7d | Aug 7, 2026 at 5:37am (UTC) | Aug 4, 2036 at 5:37am (UTC) |
+--------+------------+-------------+--------------+-----------------------------+-----------------------------+

Verificatie

Vagrant-status controleren:

vagrant status c2d-rproxy1

Voorbeelduitvoer:

Current machine states:

c2d-rproxy1               not created (lxd)

The environment has not yet been created. Run `vagrant up` to
create the environment. If a machine is not created, only the
default provider will be shown. So if a provider is not listed,
then the machine is not created for that environment.

De machine starten:

vagrant up c2d-rproxy1

Dit slaagt zonder actieve LXD-groepsrechten in de sessie.

Aanvullende informatie

  • LXD: LXD is een lichtgewicht, open-source virtualisatieplatform dat de mogelijkheden van traditionele virtuele machines combineert met de flexibiliteit van Docker-containers om virtuele omgevingen efficiënt te beheren.