Ansible opzetten met Kerberos op een PHX-ontwikkeldesktop

In het air-gapped PHX-domein wordt Kerberos gebruikt voor veilige authenticatie. Dit geldt ook voor de Ansible-ontwikkelomgeving, die draait op een desktop gebaseerd op Ubuntu 22/24. Kerberos biedt gemak en beveiliging, vooral in combinatie met forwardable tickets, die herhaalde wachtwoordprompts overbodig maken.

Overzicht

De Ansible-ontwikkelomgeving in het air-gapped PHX-domein verschilt van de open-source PHX-ontwikkelomgeving (PXD). De PXD is volledig open-source en onderdeel van het C2 Platform-initiatief. Deze gebruikt Vagrant en Ansible zonder Kerberos, wat een snelle installatie en testen eenvoudiger maakt. Daarentegen gebruikt de PHX-omgeving Kerberos voor authenticatie en vRA voor infrastructuurvoorziening, zonder Vagrant. Deze opzet is minder geschikt voor snelle Ansible-ontwikkeling, omdat het functies mist zoals eenvoudige VM-creatie, snapshots en geautomatiseerd omgevingsbeheer. Om deze reden wordt het vaak een “pseudo”-ontwikkelomgeving genoemd, die meer handmatige stappen vereist.

Deze handleiding legt uit hoe je de PHX Ansible-ontwikkelomgeving lokaal kunt simuleren. Je zet een Ubuntu 22.04 desktop-VM genaamd pxd-ubuntu-devtop op met Vagrant en Ansible. Na provisioning maak je verbinding via SSH of Remmina (voor RDP-toegang). Van daaruit voer je Ansible-taken uit in deze sandbox met Kerberos-authenticatie, net als in de PHX-domeinopzet.

Deze simulatie stelt ontwikkelaars in staat om Ansible-playbooks te testen in een gecontroleerde, Kerberos-compatibele omgeving zonder toegang tot het daadwerkelijke air-gapped PHX-domein. Het benadrukt beveiligingsbest practices, zoals het gebruik van forwardable Kerberos-tickets voor naadloze multi-hop authenticatie, terwijl isolatie voor ontwikkeling en testen behouden blijft.

Randvoorwaarden

Voordat je begint, zorg ervoor dat je het volgende hebt:

Stap 1: Verbinding maken met Ansible-ontwikkeldesktop

Gebruik Remmina om in te loggen als tony met je wachtwoord (bijv. Supersecret! voor testen).

Installeer vereiste pakketten voor Kerberos en Python-ontwikkeling:

sudo apt install krb5-user libkrb5-dev python3-dev

Controleer de versie van het Kerberos-configuratietool:

krb5-config --version
Toon
tony@pxd-ubuntu-devtop:~$ krb5-config --version
Kerberos 5 release 1.19.2

Controleer je huidige Kerberos-tickets:

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

Valid starting       Expires              Service principal
07/24/2025 11:06:24  07/24/2025 21:06:24  krbtgt/C2.ORG@C2.ORG
	renew until 07/25/2025 11:06:24

Stap 2: Pas je terminal aan

Maak een bestand voor Bash-aliassen om je workflow te vereenvoudigen en de productiviteit te verbeteren:

nano ~/.bash_aliases

Voeg de volgende inhoud toe (pas GIT_USER en GIT_MAIL aan indien nodig):

export ANSIBLE_INVENTORY=hosts-kerberos.ini
export EDITOR=nano
export GIT_USER='tclifton'
export GIT_MAIL='tony.clifton@dev.c2platform.org'
alias python='python3'
alias pip='pip3'
alias phx-env='source ~/.virtualenv/pxd/bin/activate'
alias phx-home='cd ~/git/gitlab/c2/ansible-phx'
alias phx='phx-home && phx-env'
alias phx-roles='phx && ansible-galaxy install -r roles/requirements.yml --force --no-deps -p roles/external'
alias phx-collections='phx && ansible-galaxy collection install -r collections/requirements.yml -p .'
alias phx-vault='ansible-vault edit secret_vars/development/main.yml'
# Function to securely set the Ansible Vault password.
# Call this in your shell session with: set_vault_password
# It will prompt for the passphrase and export it to PX_ANSIBLE_VAULT_PASSWORD.
# The password will remain set for the duration of the shell session.
function phx-vault-password() {
    local password
    echo -n "Enter Ansible Vault passphrase: " >&2
    read -s password
    echo >&2  # Add a newline after the hidden input
    export PX_ANSIBLE_VAULT_PASSWORD="$password"
    echo "PX_ANSIBLE_VAULT_PASSWORD has been set for this shell session." >&2
}
export ANSIBLE_VAULT_PASSWORD_FILE=/usr/local/bin/vault-client.sh
export C2_HTTPS_SSH=https  # Use HTTPS for SSH operations
history -s ansible -i hosts.ini -m win_ping pxd-ad
history -s ansible -i hosts.ini -m ping pxd-rproxy1

Deze aliassen vereenvoudigen veelvoorkomende taken, zoals het activeren van de virtuele omgeving, navigeren naar projectmappen en het beheren van Ansible-installaties.

Stap 3: Python virtuele omgeving opzetten

Maak een Python 3 virtuele omgeving voor Ansible om isolatie, stabiliteit en reproduceerbaarheid te garanderen:

sudo apt update
sudo apt install virtualenv -y
mkdir ~/.virtualenv
DEB_PYTHON_INSTALL_LAYOUT='deb' virtualenv ~/.virtualenv/pxd -p python3

Deze opzet voorkomt conflicten met systeembrede Python-pakketten en voldoet aan best practices voor ontwikkelomgevingen.

Stap 4: Projecten klonen

Laad je Bash-configuratie en installeer vereiste tools:

source ~/.bashrc
sudo apt install git curl -y
curl -s -L https://gitlab.com/c2platform/phx/ansible/-/raw/master/clone.sh | bash

Als beveiligingsbest practice, bekijk altijd de inhoud van scripts zoals clone.sh voordat je ze uitvoert via curl en bash. Download en inspecteer het script eerst om ervoor te zorgen dat het voldoet aan je beveiligingsstandaarden.

Stap 5: Ansible en Ansible-roles/collecties installeren

Activeer de omgeving en installeer afhankelijkheden:

source ~/.bashrc
phx
pip install -r requirements.txt

Gebruik de vooraf gedefinieerde aliassen om Ansible-collecties en -roles te installeren:

phx-collections
phx-roles

Deze stap zorgt ervoor dat alle vereiste Ansible-componenten zijn geïnstalleerd in de virtuele omgeving, wat schaalbaarheid en consistentie bevordert.

Stap 6: Ansible Vault-wachtwoord instellen

phx
phx-vault-password

Voor meer details, zie:

Dit beheert gevoelige gegevens veilig, volgens best practices voor geheimbeheer in Ansible.

Stap 7: Ansible Ping

Verifieer de opzet door een Windows-host te pingen:

ansible -m win_ping pxd-ad
Toon
(pxd) tony@pxd-ubuntu-devtop:~/git/gitlab/c2/ansible-phx$ ansible -m win_ping pxd-ad
[WARNING]: Collection ansible.windows does not support Ansible version 2.15.3
pxd-ad | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Stap 8: Ansible Provision

phx
ansible-playbook plays/mgmt/ad.yml

Deze stap past het Ansible-playbook toe om resources te provisionen, en simuleert PHX-operaties in je lokale omgeving.

Aanvullende informatie



Laatst gewijzigd 2025.08.27: phx devtop C2-633 (98261a8)