Local IdM Bootstrap
This is the local KVM-host path for deploying a FreeIPA / IdM server with Stakkr.
It builds a VM on the local hypervisor, waits for guest SSH, configures the IdM server, and then removes the temporary cloud-init media.
Before You Run It
Review Prerequisites.
The practical requirements are:
freeipa.ansible_freeipainstalled from requirements.yml- a local vaulted
inventory/group_vars/all/lab_credentials.yml - a local RHEL guest image in
qcow2format bridge0present on the host
The deployment shape is driven by:
That file controls:
- VM name and domain
- source image and target disk path
- bridge and static IP settings
- performance-domain tier
- IdM realm and guest configuration defaults
Deploy
From the repo root:
cd <project-root>
ansible-playbook -i inventory/hosts.yml playbooks/bootstrap/idm-local.yml --ask-vault-pass --ask-become-pass
What It Does
The playbook runs in four stages:
- validates the VM and IdM settings
- seeds or reuses the guest disk and defines the VM with
virt-install - waits for SSH and configures the IdM guest
- detaches the temporary cloud-init ISO
Verify
On the host:
sudo virsh dominfo rhel-idm.stakkr.lan
sudo virsh vcpupin rhel-idm.stakkr.lan
sudo virsh emulatorpin rhel-idm.stakkr.lan
ping -c 3 192.168.1.229
SSH access:
ssh -i ~/.ssh/id_ed25519 cloud-user@192.168.1.229
Inside the guest:
sudo systemctl status ipa.service --no-pager
hostnamectl
kinit admin
ipa user-find admin
Web UI
Open:
https://192.168.1.229/
Or, if local DNS resolves the guest name:
https://rhel-idm.stakkr.lan/
If a browser basic-auth popup appears first, cancel it and use the IdM login page.
Login with:
- username:
admin - password:
lab_default_password
Rebuild
If you need a clean redeploy, remove the current guest first:
sudo virsh destroy rhel-idm.stakkr.lan
sudo virsh undefine rhel-idm.stakkr.lan --nvram
sudo rm -f /var/lib/libvirt/images/idm-01.qcow2
sudo rm -rf /var/lib/stakkr/rhel-idm
Then temporarily set these in idm_vm.yml:
provisioning:
rebuild_disk_from_image: true
recreate_domain: true
Run the bootstrap again, then return those flags to false for normal reruns.