Ansible opzetten met Kerberos op een PHX-ontwikkeldesktop
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 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:
- 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-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
Controleer je huidige Kerberos-tickets:
klist
Toon
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:
- 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 omgevingsvariabelen en scripts.
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
Opmerking:
We gebruiken impliciet het inventory-bestandhosts-kerberos.ini
via de
omgevingsvariabele ANSIBLE_INVENTORY
. Dit is een aangepaste versie van
hosts.ini
die is 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 dezelfde manier als in
het PHX-domein.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
- Veilig Toegang Krijgen tot Ansible Vault tijdens Ontwikkeling
- Engineering met een "Pseudo" Ontwikkelomgeving
- Ansible Vault
- Instellen van de PHX Ontwikkelomgeving op Ubuntu 22
- Kerberos-authenticatie — Ansible Community Documentatie
- Kerberos-ticketeigenschappen — Kerberos V5 UNIX Gebruikershandleiding
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.