Files
a13labs.infra/ansible/roles
alexandre.pires b692627317 Add configuration and playbook for virtualization host setup
- 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.
2025-05-31 00:28:04 +02:00
..
2024-09-24 15:19:51 +02:00

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 systemd by default. Use when: ansible_service_mgr == "systemd" to skip service tasks in containers.
  • Role Path: Always run Molecule commands from the root of your role directory.

References