De Ansible ontwikkeldesktop uitrollen

Maak de c2d-devtop Ansible ontwikkeldesktop met Vagrant. Deze node simuleert de host-ontwikkelingdesktop die wordt gebruikt voor Ansible engineering.

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

Overzicht

Deze handleiding beschrijft hoe je je geconfigureerde C2 Platform Ansible ontwikkeldesktop gebruikt om lokaal een extra Ansible ontwikkeldesktop genaamd c2d-devtop uit te rollen als VirtualBox-node. De geautomatiseerde uitrol laat je de automatisering testen, inspecteren en aanpassen. Het helpt ook om te begrijpen hoe de automatisering die jouw Ansible ontwikkeldesktop heeft gemaakt is opgebouwd, inclusief de componenten en verantwoordelijkheden.

De uitrol gebruikt de desktoprol uit de Dev-collectie en de Linuxrol uit de Core-collectie. Deze rollen zijn gedefinieerd en beheerd in het inventarisproject.

De node c2d-devtop biedt een veilige sandbox voor experimenten. Je kunt Ansible-automatisering aanpassen, nieuwe configuraties verkennen of Ubuntu-desktopfuncties testen zonder risico voor je primaire ontwikkelomgeving. Als iets misgaat, voer je eenvoudig vagrant destroy c2d-devtop gevolgd door vagrant up c2d-devtop uit om een schone staat te herstellen.

Randvoorwaarden

Uitrol

Maak de node aan met Vagrant:

vagrant up c2d-devtop

Dit duurt ongeveer 9 minuten. Zie de Vagrant-logging in c2d-devtop.log  voor gedetailleerde Vagrant- en Ansible-logging.

Verificatie

RDP met Remmina

Open een RDP-verbinding met Remmina die de vaste Vagrant-gebruikersreferenties hieronder gebruikt.

IP-adresGebruikersnaamWachtwoord
192.168.56.13vagrantvagrant

De RDP-verbinding toont een scherm vergelijkbaar met het onderstaande. Omdat dit de eerste keer is dat de gebruiker via RDP inlogt, doorloop je de eenvoudige installatie door de taal en toetsenbordindeling te kiezen. Daarna kun je Ubuntu gebruiken.

Vagrant, LXD, VirtualBox

Gebruik de toepassingsstarter linksboven (drie stippen) om een terminal te starten. Typ “Terminal” om deze snel te selecteren.

Voer in de terminal de volgende commando’s uit om te controleren of Vagrant, LXD, VirtualBox en Visual Studio Code zijn geïnstalleerd:

vagrant --version
lxd --version
vboxmanage --version
code --version

De uitvoer toont de versies, bijvoorbeeld:

vagrant@c2d-devtop:~$ vagrant --version
Vagrant 2.4.0
vagrant@c2d-devtop:~$ lxd --version
5.21.6 LTS
vagrant@c2d-devtop:~$ vboxmanage --version
7.2.14r174565
vagrant@c2d-devtop:~$ code --version
1.132.0
df53daabb18cd157bdb08c7f01c34df936cf12f4
x64

Visual Studio Code

Start Visual Studio Code vanaf de toepassingsstarter op dezelfde manier als de terminal. Je ziet een GNOME Keyring-prompt, die je eerder hebt gezien bij het instellen van je host Ansible ontwikkeldesktop. Gebruik een eenvoudig, makkelijk te onthouden wachtwoord (bijvoorbeeld je standaardontwikkelwachtwoord) omdat dit een ontwikkelomgeving is waarin nodes vaak worden aangemaakt en vernietigd. Beveiliging is hier geen primaire zorg.

Voor meer informatie over de GNOME Keyring, zie de installatie-instructies voor je host Ansible ontwikkeldesktop: Een Ontwikkelomgeving Opzetten op Ubuntu 24 .

LXD-configuratie en initialisatie

De desktoprol initialiseert LXD en maakt netwerkbruggen zoals lxdbr0, lxdbr1, lxdbrag1 en phx. Toon ze met:

lxc network ls

Voorbeelduitvoer:

vagrant@c2d-devtop:~$ lxc network ls
+----------+----------+---------+-----------------+------+-----------------------------------------------+---------+---------+
|   NAME   |   TYPE   | MANAGED |      IPV4       | IPV6 |                  DESCRIPTION                  | USED BY |  STATE  |
+----------+----------+---------+-----------------+------+-----------------------------------------------+---------+---------+
| eth0     | physical | NO      |                 |      |                                               | 0       |         |
+----------+----------+---------+-----------------+------+-----------------------------------------------+---------+---------+
...
| lxdbr0   | bridge   | YES     | 10.13.151.1/24  | none | Default LXD bridge                            | 3       | CREATED |
...

De desktoprol maakt ook verschillende LXD-profielen aan, waaronder default, agd, microk8s en phx. Toon ze met:

lxc profile ls

Voorbeelduitvoer:

vagrant@c2d-devtop:~$ lxc profile ls
+----------+----------------------+---------+
|   NAME   |     DESCRIPTION      | USED BY |
+----------+----------------------+---------+
| agd      | GSD LXD profile      | 0       |
+----------+----------------------+---------+
| default  | Default LXD profile  | 0       |
+----------+----------------------+---------+
| microk8s | MicroK8s LXD profile | 0       |
+----------+----------------------+---------+
| phx      | PHX LXD profile      | 0       |
+----------+----------------------+---------+

Optioneel kun je lxc --help gebruiken om extra LXC-commando’s te ontdekken voor het inspecteren van de LXD-configuratie. Bekijk het pre-seedbestand roles/desktop/files/lxd-init-preseed.yml om de initialisatiestappen te zien die de desktoprol uitvoert.

Review

Dit gedeelte legt uit hoe het resultaat is bereikt. Het verwijst naar de desktoprol en het inventarisproject.

Vagrant

De bestanden Vagrantfile en Vagrantfile.yml in het inventarisproject zijn relevant voor Vagrant.

Vagrant gebruikt altijd het eerste bestand: Vagrantfile (zonder extensie). In de C2 Platform-aanpak blijft dit bestand generiek en verandert het zelden. Het leest Vagrantfile.yml omdat het YAML-formaat de omgeving beknopter definieert dan een gewoon Vagrantfile. Naarmate de omgeving groeit, wordt een traditioneel Vagrantfile al snel moeilijk leesbaar. De node-, geheugen- en schijfdefinities in een apart YAML-bestand houden voorkomt duplicatie, verbetert de leesbaarheid en vereenvoudigt onderhoud. Zie Vagrant voor meer informatie over deze optimalisatie.

De nodes zijn dus gedefinieerd in Vagrantfile.yml. Het fragment hieronder definieert de Vagrant box ubuntu24:

 Vagrantfile.yml

52  ubuntu24:
53    name: c2platform/ubuntu-24
54    version: 0.0.2
55    labels: [ubuntu24, ubuntu, linux, vbox]

Verderop wordt de Vagrant node c2d-devtop gedefinieerd:

 Vagrantfile.yml

285  - name: devtop
286    short_description: Development Desktop
287    description: Ubuntu 24.04 Development Desktop
288    memory: 8192
289    box: ubuntu24
290    ip-address: 192.168.56.13
291    plays:
292      - plays/dev/desktop.yml
293    labels: [devtop, ubuntu_desktop, xrdp]

Zowel de Vagrant box als de Vagrant node hebben labels. Deze labels worden niet door Vagrant gebruikt maar door Ansible, zoals hieronder wordt uitgelegd.

Ansible

Ansible Play

De nodedefinitie verwijst naar de play plays/dev/desktop.yml, die twee rollen gebruikt:

Ansible-configuratie

Het bestand Vagrantfile.yml wordt geparseerd door de Vagrant inventory plugin1. De plugin plaatst de node in groepen op basis van de labels van zowel de image ubuntu24 als de node c2d-devtop: devtop, linux, ubuntu, ubuntu24, ubuntu_desktop, vbox en xrdp.

Een extra groep development verschijnt. Dit is de omgevingsgroep voor de standaardontwikkelomgeving, volgens de C2 Platform-strategie groepgebaseerde omgevingen.

De onderstaande tabel toont de groepen en hun bijbehorende variabelenbestanden. Je kunt elke link volgen om de configuratie voor die groep te bekijken. Dit helpt je begrijpen welke instellingen relevant zijn voor het uitrollen van de Ansible ontwikkeldesktop.

GroepOpmerkingBestand
developmentOmgevingsconfiguratiegroup_vars/development.yml
devtopDesktopconfiguratiegroup_vars/devtop/main.yml
linux2
ubuntuUbuntuconfiguratiegroup_vars/ubuntu/main.yml
ubuntu242
ubuntu_desktopUbuntu-desktopconfiguratiegroup_vars/ubuntu_desktop/main.yml
group_vars/ubuntu_desktop/dev.yml
vbox2
xrdpInstalleer XRDPgroup_vars/xrdp/main.yml

Voor verdere referentie kun je de volgende informatie bekijken:

  • Een Ontwikkelomgeving Opzetten op Ubuntu 24: Installeer Ansible, Vagrant, LXD, Virtualbox en kloon de projectmappen.
  • Ontwikkelomgeving: Een lokale open-source ontwikkelomgeving stimuleert Ansible-automatisering door maximale flexibiliteit en productiviteit te bieden voor snelle iteratie, testen en onafhankelijkheid van externe infrastructuurteams of zelfs andere engineers in het team vanwege gedeelde omgevingen.
  • Vagrant: Vagrant biedt een gebruiksvriendelijk platform voor het maken en beheren van eenvoudige lokale ontwikkelomgevingen, waardoor het installatieproces wordt gestroomlijnd.
  • Ansible-inventarisproject: Een gestructureerde verzameling bestanden die worden gebruikt voor het beheren van hosts en configuraties. Het omvat doorgaans inventarisbestanden, playbooks, hostconfiguraties, groepsvariabelen en Ansible Vault-bestanden.
  • Dynamische inventaris simuleren in ontwikkeling: Richtlijn voor het gebruik van een inventaris-plugin in Ansible-ontwikkelomgevingen als concreet voorbeeld om toekomstige volledige automatisering te illustreren voor organisaties die nieuw zijn met Ansible.

  1. Voor meer informatie over de Vagrant inventory plugin, zie:

    • Ansible-inventarisproject: Een gestructureerde verzameling bestanden die worden gebruikt voor het beheren van hosts en configuraties. Het omvat doorgaans inventarisbestanden, playbooks, hostconfiguraties, groepsvariabelen en Ansible Vault-bestanden.
    • Dynamische inventaris simuleren in ontwikkeling: Richtlijn voor het gebruik van een inventaris-plugin in Ansible-ontwikkelomgevingen als concreet voorbeeld om toekomstige volledige automatisering te illustreren voor organisaties die nieuw zijn met Ansible.
     ↩︎
  2. De Ansible-groepen linux, ubuntu24 en vbox worden momenteel niet gebruikt. Er bestaan geen groepsvariabelen voor deze groepen en er is geen bijbehorende map aanwezig in de group_vars-directory. ↩︎ ↩︎ ↩︎