b692627317
- Create host variable file for vh-01.alexpires.dev with user, SSH, firewall, and VM configurations. - Update playbook_duo_security.yml to target the 2fa group. - Introduce playbook_virt_host.yml for setting up GPU passthrough on Fedora with QEMU/KVM. - Add required collections to requirements.yml for Podman and Libvirt. - Modify ctrlaltdel.yml to remove existing symlink for ctrl-alt-del.target before masking it. - Enhance users.yml to show warnings for users that could not be removed. - Update Duo Security role to use the correct repository and package names. - Improve login role to handle user UID and group assignments. - Create udev rules template for NVMe devices. - Add blacklist template for VFIO drivers. - Implement domain XML template for virtual machines with detailed configurations. - Update inventory to include vh-01.alexpires.dev in relevant groups. - Refactor cpu_power_monitor.py for improved error handling and modularity.
Ansible Role Development & Testing with Molecule (Podman)
This guide explains how to create an Ansible role and test it locally using Molecule with the Podman driver.
1. Prerequisites
Install Molecule and Podman driver:
pip install molecule molecule-podman
2. Create a New Role
Navigate to your roles directory and create a new role:
cd ansible/roles
ansible-galaxy init myrole
cd myrole
3. Initialize Molecule with Podman
molecule init scenario default -d podman
4. Edit Molecule Configuration
Edit molecule/default/molecule.yml to set your platform and image, for example:
---
dependency:
name: galaxy
driver:
name: podman
platforms:
- name: instance
image: ubuntu:20.04
privileged: true
provisioner:
name: ansible
options:
vvv: true
env:
ANSIBLE_ROLES_PATH: ../../../
verifier:
name: ansible
5. Write Your Role Tasks
Edit tasks/main.yml to add your automation logic.
6. Configure Molecule to Use Your Role
Edit molecule/default/converge.yml:
---
- name: Converge
hosts: all
gather_facts: false
tasks:
- name: Include role
ansible.builtin.include_role:
name: myrole
6. Configure preparation steps (required for python and sudo)
---
---
- name: Prepare
hosts: all
gather_facts: false
tasks:
- name: Update cache # noqa no-changed-when
ansible.builtin.raw: apt update
- name: Install required packages # noqa no-changed-when
ansible.builtin.raw: apt install -y python3 sudo
### Insert here other preparation steps
8. Run Molecule Tests
From the root of your role directory, run:
molecule test
This will:
- Build the container
- Apply your role
- Run verification steps
- Destroy the container
8. Notes
- Systemd: Most Podman containers do not support
systemdby default. Usewhen: ansible_service_mgr == "systemd"to skip service tasks in containers. - Role Path: Always run Molecule commands from the root of your role directory.