ansible/molecule

Molecule is ignoring meta/main.yaml instead of meta/main.yml

trickert76 opened this issue · 3 comments

Issue Type

  • Bug report

Molecule and Ansible details

$ molecule --version
molecule 4.0.4 using python 3.9 
    ansible:2.14.1
    delegated:4.0.4 from molecule
    docker:2.1.0 from molecule_docker requiring collections: community.docker>=3.0.2 ansible.posix>=1.4.0

Molecule installation method (one of):

  • pip

Ansible installation method (one of):

  • pip

Detail any linters or test runners used:

  • not relevant

Desired Behavior

Either inform the user about the missing meta/main.yml or check for meta/main.yaml too and when it's not there report that, when necessary. But ansible-lint is absolutly fine with *.yaml files, so it should be accepted by molecule too.

Actual Behaviour

Whyever I did, but some time ago, I'm renamed a meta/main.yml to meta/main.yaml. Today I wanted to add molecule tests to my roles and it always ended with:

INFO     default scenario test matrix: dependency, lint, cleanup, destroy, syntax, create, prepare, converge, idempotence, side_effect, verify, cleanup, destroy
INFO     Performing prerun with role_name_check=0...
INFO     Set ANSIBLE_LIBRARY=/...
INFO     Set ANSIBLE_COLLECTIONS_PATH=/...
INFO     Set ANSIBLE_ROLES_PATH=/...
INFO     Running default > dependency
Starting galaxy role install process
- changing role acoby.common from main to main
- extracting acoby.common to /Users/trw/.cache/molecule/ansible-fail2ban/default/roles/acoby.common
- acoby.common (main) was installed successfully
INFO     Dependency completed successfully.
WARNING  Skipping, missing the requirements file.
INFO     Running default > lint
INFO     Lint is disabled.
INFO     Running default > cleanup
WARNING  Skipping, cleanup playbook not configured.
INFO     Running default > destroy
INFO     Sanity checks: 'docker'

....

  ERROR! the role 'acoby.fail2ban' was not found in /github/workspace/molecule/default/roles:/github/home/.cache/ansible-compat/21a323/roles:/github/home/.cache/molecule/workspace/default/roles:/github:/github/home/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/github/workspace/molecule/default
  
  The error appears to be in '/github/workspace/molecule/default/converge.yml': line 7, column 15, but may
  be elsewhere in the file depending on the exact syntax problem.
  
  The offending line appears to be:
  
        ansible.builtin.include_role:
          name: "acoby.fail2ban"
                ^ here

The reason was - molecule did not know the name of the role inside the repo, because it looks silently for meta/main.yml and ignores the missing file or does not provide any feetback that it could not find a meta/main-file.

When I rename meta/main.yaml to ...yml, its working

Too bad I did not check the issue tracker carefully. Would have easily saved me two to three hours 🤦 Had to figure it out for myself.

Also it is not just meta/main.yaml. Molecule in general seems to only consider the .yml file extension.

Yes, that is inconsistent with the rest of ansible.

This issue is addressed in Support meta main yaml extension