Het installatiescript uitvoeren

Leer hoe je het installatiescript met één commando uitvoert op de node c2d-devtop. Het script voert de desktop-rol uit in local play-modus om een persoonlijke ontwikkelomgeving in te stellen voor een lokale gebruiker.

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

Overview

Deze handleiding laat zien hoe je het installatiescript uitvoert op de node c2d-devtop in de ontwikkelomgeving. Het script voert de desktop-rol uit in local play-modus. Het maakt een persoonlijke ontwikkelomgeving voor de gebruiker vagrant door Git-repositories te klonen, een Visual Studio Code-workspace in te stellen, een aliases-bestand toe te voegen en de standaard C2 Platform-ontwikkelomgeving te configureren.

Het script is een volledig non-interactieve bootstrap voor elke gebruiker op Ubuntu 24.04. Het detecteert of maakt een SSH-sleutel aan, kloont het inventory-project, bereidt een Python-virtuele omgeving voor, installeert requirements, rollen en collections en voert vervolgens de lokale playbook plays/dev/desktop_local.yml uit. Die playbook past de desktop-rol toe om de persoonlijke ontwikkelomgeving te convergeren.

Randvoorwaarden

Installatiescript

Gebruik Remmina om een RDP-sessie te openen naar de node als gebruiker vagrant. Voer het installatiescript uit zoals beschreven in de handleiding voor het opzetten van de ontwikkelomgeving:

wget -qO- https://gitlab.com/c2platform/c2/ansible-inventory/-/raw/master/scripts/install-dev-environment.sh?ref_type=heads | bash

Open een nieuw terminalvenster zodat de bijgewerkte terminalconfiguratie actief wordt. Activeer de Python-virtuele omgeving met de alias c2d en voorzie vervolgens de reverse proxy-node c2d-rproxy1.

c2d
vagrant up c2d-rproxy1

Test met een nieuw account

Test de local play met een nieuw gebruikersaccount. Maak als gebruiker vagrant het account aan met de onderstaande commando’s.

export TEST_USER=local-play-test-user
sudo userdel -r $TEST_USER
sudo useradd -G sudo $TEST_USER -m -s /bin/bash -c "Test account for local play"
echo "$TEST_USER:secret" | sudo chpasswd

Log opnieuw in als local-play-test-user met wachtwoord secret en voer het installatiescript opnieuw uit. Het voorzien van c2d-rproxy1 mislukt met de volgende fout:

409 - Error: Instance “c2d-rproxy1” already exists

Laat maar zien
(c2) local-play-test-user@c2d-devtop:~/git/gitlab/c2/ansible-c2d$ vagrant up c2d-rproxy1
Bringing machine 'c2d-rproxy1' up with 'lxd' provider...
==> c2d-rproxy1: Machine has not been created yet, starting...
==> c2d-rproxy1: Box 'c2platform/ubuntu-jammy' could not be found. Attempting to find and install...
    c2d-rproxy1: Box Provider: lxc
    c2d-rproxy1: Box Version: 0.1.0
==> c2d-rproxy1: Loading metadata for box 'c2platform/ubuntu-jammy'
    c2d-rproxy1: URL: https://vagrantcloud.com/api/v2/vagrant/c2platform/ubuntu-jammy
==> c2d-rproxy1: Adding box 'c2platform/ubuntu-jammy' (v0.1.0) for provider: lxc
    c2d-rproxy1: Downloading: https://vagrantcloud.com/c2platform/boxes/ubuntu-jammy/versions/0.1.0/providers/lxc/unknown/vagrant.box
    c2d-rproxy1: Calculating and comparing box checksum...
==> c2d-rproxy1: Successfully added box 'c2platform/ubuntu-jammy' (v0.1.0) for 'lxc'!
==> c2d-rproxy1: Converting LXC image to LXD format...
/home/local-play-test-user/.vagrant.d/gems/3.1.4/gems/vagrant-lxd-0.7.1/lib/vagrant-lxd/driver.rb:299:in `rescue in create': undefined method `reason' for #<Hyperkit::Conflict: POST https://127.0.0.1:8443/1.0/instances?project=default: 409 - Error: Instance "c2d-rproxy1" already exists> (NoMethodError)

      if e.reason =~ /Container '([^']+)' already exists/

De container c2d-rproxy1 bestaat al omdat deze is aangemaakt door de gebruiker vagrant. Je kunt dit bevestigen met sudo lxc ls:

(c2) local-play-test-user@c2d-devtop:~/git/gitlab/c2/ansible-c2d$ sudo lxc ls
+-------------+---------+---------------------+------+-----------+-----------+
|    NAME     |  STATE  |        IPV4         | IPV6 |   TYPE    | SNAPSHOTS |
+-------------+---------+---------------------+------+-----------+-----------+
| c2d-rproxy1 | RUNNING | 10.181.4.149 (eth0) |      | CONTAINER | 0         |
|             |         | 1.1.4.205 (eth1)    |      |           |           |
+-------------+---------+---------------------+------+-----------+-----------+

Een Ansible-ontwikkelomgeving die lokale virtualisatie (VirtualBox of LXD) gebruikt, is single-user. Slechts één gebruiker kan de omgeving tegelijkertijd gebruiken. Het installatiescript verwijdert geen nodes die door andere gebruikers zijn aangemaakt. Je kunt de container handmatig verwijderen:

sudo lxc delete c2d-rproxy1 --force

De desktop-rol werkt het LXD-trust bij. Je kunt dit inspecteren met:

lxc config trust ls
(c2) local-play-test-user@c2d-devtop:~/git/gitlab/c2/ansible-c2d$ lxc config trust ls
+--------+------------+---------------------------------+--------------+------------------------------+-----------------------------+
|  TYPE  |    NAME    |           COMMON NAME           | FINGERPRINT  |          ISSUE DATE          |         EXPIRY DATE         |
+--------+------------+---------------------------------+--------------+------------------------------+-----------------------------+
| client | client.crt | local-play-test-user@c2d-devtop | fcbe00bfc1b1 | Aug 10, 2026 at 8:09am (UTC) | Aug 7, 2036 at 8:09am (UTC) |
+--------+------------+---------------------------------+--------------+------------------------------+-----------------------------+

De nieuwe gebruiker wordt ook toegevoegd aan de groepen vboxusers en lxd, maar deze zijn nog niet actief:

local-play-test-user@c2d-devtop:~/git/gitlab/c2/ansible-c2d$ cat /etc/group | grep lxd
lxd:x:110:vagrant,local-play-test-user
local-play-test-user@c2d-devtop:~/git/gitlab/c2/ansible-c2d$ groups
local-play-test-user sudo

Log uit en log opnieuw in, herstart de machine of voer de volgende commando’s uit:

newgrp lxd
newgrp vboxusers

Daarna behoort de gebruiker tot beide groepen:

local-play-test-user@c2d-devtop:~$ groups
local-play-test-user sudo lxd vboxusers

Met het juiste LXD-trust, de juiste groepsleden en zonder bestaande node kun je nu het provisioning-commando succesvol uitvoeren:

vagrant up c2d-rproxy1

Conclusie

Het installatiescript voert de desktop-rol uit in local play-modus om een persoonlijke ontwikkelomgeving in te stellen. De Ansible-ontwikkelomgeving is single-user wanneer lokale virtualisatie wordt gebruikt. De desktop-rol ondersteunt het wisselen van gebruikers door het LXC-trust bij te werken (behalve het verwijderen van nodes die door de vorige gebruiker zijn aangemaakt).