Molecule: how to include local roles PATH to test playbook

Hello,

I want to test a whole setup to provision my servers. It includes playbooks, tasks and also roles I have created and stored locally in a roles/ directory.

In my ansible.cfg I added

roles_path=./roles

and ansible-playbook find it and execute it

In Molecule, I can’t find the syntax to make it find it so it throw an error about “the role ‘apt’ was not found”

In molecule/default/molecule.yml I tested creating an env parameter with no success

verifier:
  name: ansible
  env:
    # none works
    ANSIBLE_ROLES_PATH: /tmp/ansible.debug/roles/
    ANSIBLE_ROLES_PATH: ../../roles/ 
    ROLES_PATH: /tmp/ansible.debug/roles/

I also tested with the following syntax

verifier:
  name: ansible
  config_options:
    defaults:
      roles_path: ../../roles

but got this error

["Additional properties are not allowed ('config_options' was unexpected)"]

Any idea of how it can be done?

EDIT

molecule --version
molecule 24.9.0 using python 3.12 
    ansible:2.17.5
    azure:23.5.3 from molecule_plugins
    containers:23.5.3 from molecule_plugins requiring collections: ansible.posix>=1.3.0 community.docker>=1.9.1 containers.podman>=1.8.1
    default:24.9.0 from molecule
    docker:23.5.3 from molecule_plugins requiring collections: community.docker>=3.4.11 ansible.posix>=1.4.0
    ec2:23.5.3 from molecule_plugins
    gce:23.5.3 from molecule_plugins requiring collections: google.cloud>=1.0.2 community.crypto>=1.8.0
    openstack:23.5.3 from molecule_plugins requiring collections: openstack.cloud>=2.1.0
    podman:23.5.3 from molecule_plugins requiring collections: containers.podman>=1.7.0 ansible.posix>=1.3.0
    vagrant:23.5.3 from molecule_plugins

putting the env config in the provisioner part not in the verifier one seems to be a better idea! :slight_smile: … and it’s logical

The working config is then

provisioner:
  name: ansible
  options:
    vvv: true
  env:
    ANSIBLE_ROLES_PATH: ../../roles/

reading molecule/src/molecule/provisioner/ansible.py at main · ansible/molecule · GitHub it should also be possible to use the config_options solution so not sure why it doesn’t like it

1 Like