Ansible ontwikkeldesktop instellen

Stapsgewijze handleiding voor het inrichten van een op Ubuntu gebaseerde Ansible ontwikkeldesktop met XRDP voor toegang op afstand, spiegelend aan PHX domein setups.

Projects:  c2platform/phx/ansible , Ansible Linux-rol ( c2platform.core.linux) , Ansible Win-rol ( c2platform.wincore.win)


Overzicht

Met de PHX ontwikkelomgeving leidt deze handleiding je door het aanmaken van een node genaamd pxd-ubuntu-devtop. Deze node simuleert een ontwikkeldesktop die gebruikt wordt in het PHX domein en datacenter. Hij is gebaseerd op Ubuntu 24.04 met Ubuntu Desktop en XRDP geïnstalleerd voor toegang op afstand. Visual Studio Code is ook vooraf geïnstalleerd. De setup voegt de node toe aan een Active Directory (AD) domein, vergelijkbaar met desktops in het PHX domein.

Na het volgen van deze stappen is de node gereed voor domeingebruiker Tony om Ansible engineering taken uit te voeren.

Randvoorwaarden

Uitrol

Om de ontwikkelnode pxd-ubuntu-devtop in te richten, voer je het volgende commando uit. Dit proces duurt ongeveer 13 minuten.

vagrant up pxd-ubuntu-devtop

Verificatie

Domeinlidmaatschap

De pxd-ubuntu-devtop node sluit zich automatisch aan bij het Active Directory (AD) domein dat beheerd wordt door Ansible. Om te bevestigen dat hij deel uitmaakt van het c2.org domein, voer je het volgende commando uit:

realm list
vagrant@pxd-ubuntu-devtop:~$ realm list
c2.org
  type: kerberos
  realm-name: C2.ORG
  domain-name: c2.org
  configured: kerberos-member
  server-software: active-directory
  client-software: sssd
  required-package: sssd-tools
  required-package: sssd
  required-package: libnss-sss
  required-package: libpam-sss
  required-package: adcli
  required-package: samba-common-bin
  login-formats: %U
  login-policy: allow-realm-logins

Inloggen als Tony en root worden

Controleer of je kunt inloggen als domeingebruiker tony (wachtwoord: Supersecret! . Voer het volgende commando uit:

ssh tony@pxd-ubuntu-devtop
Toon mij
vagrant@pxd-ubuntu-devtop:~$ ssh tony@pxd-ubuntu-devtop
The authenticity of host 'pxd-ubuntu-devtop (192.168.60.11)' can't be established.
ED25519 key fingerprint is SHA256:FSUXPPYzjwWfS62R6RD/Eun64uNzvWfYyWcrCDMkM8E.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'pxd-ubuntu-devtop' (ED25519) to the list of known hosts.
tony@pxd-ubuntu-devtop's password:
Welcome to Ubuntu 24.04.3 LTS (GNU/Linux 6.5.0-41-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

Expanded Security Maintenance for Applications is not enabled.

20 updates can be applied immediately.
20 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

3 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm

*** System restart required ***
Last login: Thu Nov 27 12:31:12 2025 from 192.168.60.11

Gebruiker tony heeft rechten om root te worden:

sudo su -

Voer exit uit om weer gebruiker Tony te worden:

exit

Wachtwoordloos inloggen met Kerberos op Linux- en Windows-hosts

Kerberos is een netwerk authenticatieprotocol dat veilige, ticket-gebaseerde authenticatie over systemen mogelijk maakt, waardoor wachtwoordloze toegang mogelijk is zodra een gebruiker een Ticket-Granting Ticket (TGT) heeft verkregen. In deze setup ontvang je na het inloggen als tony op pxd-ubuntu-devtop een Kerberos TGT. Dit maakt naadloze SSH-logins mogelijk naar andere domein-gekoppelde hosts zonder opnieuw inloggegevens in te voeren, mits de hosts zijn geconfigureerd voor Kerberos authenticatie.

Je kunt de TGT bekijken door uit te voeren:

klist
tony@pxd-ubuntu-devtop:~$ klist
Ticket cache: FILE:/tmp/krb5cc_496801104_TWhKJq
Default principal: tony@C2.ORG

Valid starting     Expires            Service principal
11/28/25 05:04:48  11/28/25 15:04:48  krbtgt/C2.ORG@C2.ORG
        renew until 11/29/25 05:04:48
11/28/25 05:05:03  11/28/25 15:04:48  host/pxd-rproxy1.c2.org@C2.ORG
        renew until 11/29/25 05:04:48

Dit stelt Tony in staat om in te loggen op de reverse proxy node pxd-rproxy1 zonder een wachtwoordprompt:

ssh pxd-rproxy1.c2.org

Vanaf pxd-rproxy1 kan gebruiker Tony SSH-en naar de AD controller pxd-ad.c2.org:

ssh pxd-ad.c2.org

Dit toont een shell vergelijkbaar met onderstaande:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows

PS C:\Users\tony>

Op pxd-ad heb je nu ook een TGT, die je kunt zien met klist:

klist
PS C:\Users\tony> klist

Current LogonId is 0:0x137acc4

Cached Tickets: (1)

#0>     Client: tony @ C2.ORG
        Server: host/pxd-win1.c2.org @ C2.ORG
        KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
        Ticket Flags 0x60a10000 -> forwardable forwarded renewable pre_authent name_canonicalize
        Start Time: 11/28/2025 5:11:40 (local)
        End Time:   11/28/2025 15:04:48 (local)
        Renew Time: 0
        Session Key Type: AES-256-CTS-HMAC-SHA1-96
        Cache Flags: 0x8 -> ASC
        Kdc Called:
PS C:\Users\tony>

Dit stelt Tony in staat om verder SSH-en naar een andere Windows node pxd-win1 zonder een wachtwoordprompt:

ssh pxd-win1.c2.org

Omdat de pxd-win1 host is geconfigureerd om vertrouwd te zijn voor delegatie, kunnen we verder SSH-hoppen zonder wachtwoordprompt naar pxd-win2.

ssh pxd-win2.c2.org

Dit vertrouwen is ook geconfigureerd door Ansible, zie Vertrouwen voor delegatie configureren in Active Directory voor meer informatie.

Review

Vagrant

De Vagrant box pxd-ubuntu-devtop is gebaseerd op de C2 Platform box ubuntu24-lxd. Deze configuratie creëert een Vagrant box pxd-ubuntu-devtop gebaseerd op LXD en draaiend op Ubuntu 24.04 LTS. De setup omvat labels die Ansible-groepen definiëren voor gerichte automatisering en configuratie.

 Vagrantfile.yml

100  - name: ubuntu-devtop
101    description: Ansible Development Desktop
102    box: ubuntu24-lxd
103    ip-address: 192.168.60.11
104    plays:
105      - dev/desktop
106    labels:
107      - desktop
108      - ubuntu_devtop
109      - radix_guardian

 Vagrantfile.yml

28    name: c2platform/ubuntu22-desktop
29    version: 0.1.0
30    provider: lxd
31    labels: [ubuntu, lxd, ubuntu22]
32  ubuntu24-lxd:

Ansible Play

De Ansible play die de hosts in de ubuntu_devtop groep target, gebruikt twee rollen:

 plays/dev/desktop.yml

---
- name: Ubuntu Ansible Development Desktop
  hosts: ubuntu_devtop
  become: true

  roles:
    - { role: c2platform.core.linux }
    - { role: c2platform.wincore.win }

De inclusie van de Windows-rol lijkt misschien ongebruikelijk op het eerste gezicht, maar het adresseert een belangrijke vereiste voor Kerberos-functionaliteit. Correcte Kerberos-werking is afhankelijk van nauwkeurige reverse DNS lookups op Ubuntu hosts. Om dit te ondersteunen, creëert de setup DNS pointer records (PTR records) voor elke Ubuntu host op de AD controller pxd-ad met behulp van de Ansible module win_dns_record. De Windows-rol handhabt dit op basis van de onderstaande configuratie. Merk op dat deze configuratie van toepassing is op de Ansible-groep ubuntu, wat betekent dat het beleid van het creëren van PTR records zich uitstrekt tot alle Ubuntu hosts.

 group_vars/ubuntu/ptr.yml

---
win_roles: []
win_resources:
  - name: "{{ '.'.join(ansible_eth1.ipv4.address.split('.')[-2::-1]) }}.in-addr.arpa"
    module: win_dns_zone
    type: Primary
    replication: Domain
    state: present
    delegate_to: pxd-ad
  - name: "{{ ansible_eth1.ipv4.address.split('.')[-1] }}"
    module: win_dns_record
    type: "PTR"
    zone: "{{ '.'.join(ansible_eth1.ipv4.address.split('.')[-2::-1]) }}.in-addr.arpa"
    value: "{{ inventory_hostname }}.{{ px_ad_domain_name }}"
    state: present
    delegate_to: pxd-ad

Ansible-configuratie

Om beter te begrijpen hoe Ansible de Ansible ontwikkeldesktop pxd-ubuntu-devtop inricht, bekijk je de relevante groepsvariabelen. Deze zijn opgeslagen in de volgende mappen:

Beleid voor Ansible ontwikkeldesktops

De map group_vars/ubuntu_devtop bevat twee bestanden: group_vars/ubuntu_devtop/main.yml en group_vars/ubuntu_devtop/kerberos.yml.

 group_vars/ubuntu_devtop/main.yml

---
linux_resources:
  devtop:
    - name:
        - virtualenv
        - ubuntu-desktop
        - xrdp
        - snapd
        - gedit
        - libsecret-tools
        - seahorse  # GNOME Keyring GUI
      type: package
    - name: code
      type: snap
      classic: true
    - name: firefox
      type: snap
    - name: Vault client scripts
      type: copy
      defaults:
        mode: "0755"
      resources:
        - dest: /usr/local/bin/vault-client.sh
          src: vault-client.sh
        - dest: /usr/local/bin/vault-client-keyring.sh
          src: vault-client-keyring.sh
    - name: Create disable screen lock script
      type: copy
      dest: /usr/local/bin/disable-screen-lock.sh
      mode: "0755"
      content: |
        #!/bin/bash
        gsettings set org.gnome.desktop.screensaver lock-enabled false
        gsettings set org.gnome.desktop.session idle-delay 0
        rm -- "$0"
    - name: Create autostart desktop file
      type: copy
      dest: /etc/xdg/autostart/disable-screen-lock.desktop
      content: |
        [Desktop Entry]
        Type=Application
        Exec=/usr/local/bin/disable-screen-lock.sh
        Hidden=false
        NoDisplay=false
        X-GNOME-Autostart-enabled=true
        Name=Disable Screen Lock
        Comment=Disable screen lock on startup

 group_vars/ubuntu_devtop/kerberos.yml

---
linux_resources:
  devtop-kerberos:
    - name:
        - python3-dev
        - krb5-user
        - libkrb5-dev
      type: package

Volgende stap

Met pxd-ubuntu-devtop aangemaakt en geconfigureerd, ga je door naar de volgende stap: het instellen van de Ansible-ontwikkelomgeving op deze desktop op een manier die de configuratie in het air-gapped PHX domein simuleert.

Aanvullende informatie