Ansible met Kerberos opzetten op een PHX-ontwikkel-desktop
Categories:
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 maakt deel uit van het C2 Platform-initiatief. Het gebruikt Vagrant en Ansible zonder Kerberos, wat het eenvoudiger maakt voor snelle installatie en testen. In tegenstelling daarmee vertrouwt de PHX-omgeving op Kerberos voor authenticatie en vRA voor infrastructuurvoorziening, zonder Vagrant. Deze opzet is minder geschikt voor snelle Ansible-ontwikkeling, omdat functies zoals eenvoudige VM-creatie, snapshots en geautomatiseerd omgevingsbeheer ontbreken. Om deze reden wordt het vaak aangeduid als een pseudo-ontwikkelomgeving, met meer handmatige stappen.
Deze handleiding legt uit hoe je de PHX-
Ansible-ontwikkelomgeving
opzet kunt simuleren. Je zet een Ubuntu 22.04 desktop-VM genaamd pxd-ubuntu-devtop op met
Vagrant en Ansible. Eenmaal ingericht, maak je verbinding via SSH of Remmina (voor
RDP-toegang). Van daaruit voer je Ansible-taken uit in deze sandbox met Kerberos-authenticatie,
wat de PHX-domeinopzet nabootst.
Deze simulatie helpt bij het begrijpen van hoe de Ansible-ontwikkelomgeving is opgezet en werkt in het PHX-domein. Het vormt ook een basis voor het creëren en valideren van automatisering voor het beheren van de ontwikkelomgeving. Het stelt ontwikkelaars in staat om Ansible-playbooks te testen en ontwikkelen in een gecontroleerde omgeving met Kerberos, zonder toegang nodig te hebben 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:
- Instellen van de PHX Ontwikkelomgeving op Ubuntu 22: Installeer Ansible, Vagrant, LXD, VirtualBox en kloon de projectmap.
- Instellen van een Ansible Ontwikkel Desktop: Deze handleiding beschrijft de stappen om een Ansible Ontwikkel Desktop in te stellen met Ubuntu 22, vergelijkbaar met het bureaublad dat wordt gebruikt binnen het PHX-domein.
Stap 1: Verbinding maken met Ansible-ontwikkel-desktop
Gebruik Remmina om in te loggen als tony met je wachtwoord (bijv. Supersecret! voor
testen).
Installeer de vereiste pakketten voor Kerberos en Python-ontwikkeling:
sudo apt install krb5-user libkrb5-dev python3-dev -y
Controleer de versie van het Kerberos-configuratietool:
krb5-config --version
Toon me
Controleer je huidige Kerberos-tickets:
klist
Toon me
Stap 2: Je terminal aanpassen
Maak een bestand voor Bash-aliassen om je workflow te vereenvoudigen en je 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 using environment variable PX_ANSIBLE_VAULT_PASSWORD.
# The password will remain set for the duration of the shell session.
function phx-vault-password-env() {
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
}
# Function to securely set the Ansible Vault password using GNOME Keyring.
# The password will remain for the user session
function phx-vault-password() {
local pw=$(secret-tool lookup ansible vault 2>/dev/null)
if [ -z "${pw}" ]; then
echo "Password doesn't exist or is empty, lets add/set it!"
pw=$(secret-tool store --label 'Ansible Vault Password' ansible vault >&2)
echo "Vault password has been set." >&2
else
echo "Vault password is already set."
fi
export ANSIBLE_VAULT_PASSWORD_FILE=/usr/local/bin/vault-client-keyring.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 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 volgt 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-rollen/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 Ansible-rollen 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
Om gebruiker tony Ansible te laten gebruiken, moet hij het
Ansible Vault-wachtwoord van de
inventaris instellen, wat
secret
is. Hij gebruikt
de phx-vault-password-functie:
phx
phx-vault-password
De onderstaande output toont het resultaat van het uitvoeren van het commando:
(pxd) tony@pxd-ubuntu-devtop:~/git/gitlab/c2/ansible-phx$ phx
phx-vault-password
Password doesn't exist or is empty, lets add/set it!
Password:
Vault password has been set.
(pxd) tony@pxd-ubuntu-devtop:~/git/gitlab/c2/ansible-phx$
Als je het commando voor de eerste keer uitvoert, word je gevraagd een wachtwoord in te stellen voor de GNOME Keyring1. Het Ansible Vault-wachtwoord wordt daar opgeslagen voor gemak (je hoeft het wachtwoord niet elke keer op te geven wanneer je Ansible gebruikt) en ook beveiliging. Het is een veilige plek. De onderstaande screenshot toont de GNOME Keyring-prompt die vraagt om wachtwoord en wachtwoordbevestiging.

Dit handhabt gevoelige gegevens veilig, volgens best practices voor geheim beheer in Ansible. Voor meer details, zie:
- Veilig toegang krijgen tot Ansible Vault tijdens ontwikkeling: Richtlijn voor veilig toegang krijgen tot Ansible Vault tijdens ontwikkeling zonder wachtwoorden op te slaan in platte bestanden, met behulp van GNOME Keyring of omgevingsvariabelen.
Stap 7: Ansible ping
Verifieer de opzet door een Windows-host te pingen:
ansible -m win_ping pxd-ad
Toon me
Opmerking:
We gebruiken impliciet het inventarisbestandhosts-kerberos.ini via de
omgevingsvariabele ANSIBLE_INVENTORY. Dit is een aangepaste versie van
hosts.ini voorbereid voor Kerberos-authenticatie. Vagrant gebruikt het hosts.ini-bestand,
dat afhankelijk is van eenvoudige gebruikersnaam- en wachtwoordauthenticatie in plaats van
Kerberos. Op pxd-ubuntu-devtop gebruiken we Kerberos op een vergelijkbare manier als in het PHX-domein.Stap 8: Ansible provisioning
phx
ansible-playbook plays/mgmt/ad.yml
Deze stap past het Ansible-playbook toe om resources te provisionen, wat PHX-operaties simuleert in je lokale omgeving.
Aanvullende informatie
- Veilig toegang krijgen tot Ansible Vault tijdens ontwikkeling
- Engineering met een "Pseudo" Ontwikkelomgeving
- Ansible Vault
- Instellen van de PHX Ontwikkelomgeving op Ubuntu 22
- Kerberos Authentication — Ansible Community Documentation
- Kerberos Ticket Properties - Kerberos V5 UNIX User's Guide
GNOME Keyring is een veilige opslagdaemon voor het beheren van wachtwoorden, sleutels en certificaten in GNOME-gebaseerde Linux-omgevingen. Het biedt versleutelde opslag en automatische ontgrendeling tijdens gebruikersessies, wat de beveiliging van gevoelige gegevens zoals Ansible Vault-wachtwoorden verbetert. ↩︎
Feedback
Was deze pagina nuttig?
Fijn om te horen! Vertel ons alstublieft hoe we kunnen verbeteren.
Jammer om dat te horen. Vertel ons alstublieft hoe we kunnen verbeteren.