Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug report] Can't find installed collections #235

Open
Hipska opened this issue Jan 29, 2025 · 3 comments
Open

[Bug report] Can't find installed collections #235

Hipska opened this issue Jan 29, 2025 · 3 comments
Labels

Comments

@Hipska
Copy link

Hipska commented Jan 29, 2025

Describe the bug

ansible.errors.AnsibleParserError: couldn't resolve module/action 'community.general.capabilities'. This often indicates a misspelling, missing collection, or incorrect module path.

To Reproduce
ansible-playbook-grapher site.yml

Expected behavior
Grapher to load and use the collections just as any other tool.

Versions:
Outputs of :

  • ansible --version:
ansible [core 2.18.2]
  config file = /Users/Hipska/Documents/Super-Visions/Customers/OBE/MES/ansible-pb/ansible.cfg
  configured module search path = ['/Users/Hipska/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /opt/homebrew/Cellar/ansible/11.2.0/libexec/lib/python3.13/site-packages/ansible
  ansible collection location = /Users/Hipska/.ansible/collections:/usr/share/ansible/collections
  executable location = /opt/homebrew/bin/ansible
  python version = 3.13.1 (main, Dec  3 2024, 17:59:52) [Clang 16.0.0 (clang-1600.0.26.4)] (/opt/homebrew/Cellar/ansible/11.2.0/libexec/bin/python)
  jinja version = 3.1.5
  libyaml = True
  • ansible-playbook-grapher --version: ansible-playbook-grapher 2.8.0 (with ansible 2.18.1)

Additional context

requirements.yml
---

collections:
  - name: ansible.posix
    version: 1.5.4
  - name: community.general
  - name: community.clickhouse
Full stack trace
Traceback (most recent call last):
  File "/Users/Hipska/.local/bin/ansible-playbook-grapher", line 8, in <module>
    sys.exit(main())
             ~~~~^^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansibleplaybookgrapher/cli.py", line 459, in main
    cli.run()
    ~~~~~~~^^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansibleplaybookgrapher/cli.py", line 77, in run
    playbook_nodes, roles_usage = grapher.parse(
                                  ~~~~~~~~~~~~~^
        tags=self.options.tags,
        ^^^^^^^^^^^^^^^^^^^^^^^
    ...<2 lines>...
        exclude_roles=self.options.exclude_roles,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansibleplaybookgrapher/grapher.py", line 63, in parse
    playbook_node = playbook_parser.parse()
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansibleplaybookgrapher/parser.py", line 187, in parse
    playbook = Playbook.load(
        self.playbook_path,
        loader=self.data_loader,
        variable_manager=self.variable_manager,
    )
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/__init__.py", line 50, in load
    pb._load_playbook_data(file_name=file_name, variable_manager=variable_manager)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/__init__.py", line 105, in _load_playbook_data
    entry_obj = Play.load(entry, variable_manager=variable_manager, loader=self._loader, vars=vars)
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/play.py", line 137, in load
    return p.load_data(data, variable_manager=variable_manager, loader=loader)
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/base.py", line 171, in load_data
    setattr(self, name, method(name, ds[name]))
                        ~~~~~~^^^^^^^^^^^^^^^^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/play.py", line 223, in _load_roles
    roles.append(Role.load(ri, play=self))
                 ~~~~~~~~~^^^^^^^^^^^^^^^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/role/__init__.py", line 190, in load
    r._load_role_data(role_include, parent_role=parent_role)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/role/__init__.py", line 276, in _load_role_data
    self._task_blocks = load_list_of_blocks(task_data, play=self._play, role=self, loader=self._loader, variable_manager=self._variable_manager)
                        ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/helpers.py", line 67, in load_list_of_blocks
    Block.load(
    ~~~~~~~~~~^
        b,
        ^^
    ...<6 lines>...
        loader=loader,
        ^^^^^^^^^^^^^^
    )
    ^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/block.py", line 90, in load
    return b.load_data(data, variable_manager=variable_manager, loader=loader)
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/base.py", line 171, in load_data
    setattr(self, name, method(name, ds[name]))
                        ~~~~~~^^^^^^^^^^^^^^^^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/block.py", line 118, in _load_block
    return load_list_of_tasks(
        ds,
    ...<6 lines>...
        use_handlers=self._use_handlers,
    )
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/helpers.py", line 233, in load_list_of_tasks
    included_blocks = load_list_of_blocks(
        data,
    ...<6 lines>...
        variable_manager=variable_manager,
    )
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/helpers.py", line 67, in load_list_of_blocks
    Block.load(
    ~~~~~~~~~~^
        b,
        ^^
    ...<6 lines>...
        loader=loader,
        ^^^^^^^^^^^^^^
    )
    ^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/block.py", line 90, in load
    return b.load_data(data, variable_manager=variable_manager, loader=loader)
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/base.py", line 171, in load_data
    setattr(self, name, method(name, ds[name]))
                        ~~~~~~^^^^^^^^^^^^^^^^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/block.py", line 118, in _load_block
    return load_list_of_tasks(
        ds,
    ...<6 lines>...
        use_handlers=self._use_handlers,
    )
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/helpers.py", line 299, in load_list_of_tasks
    t = Task.load(task_ds, block=block, role=role, task_include=task_include, variable_manager=variable_manager, loader=loader)
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/task.py", line 135, in load
    return t.load_data(data, variable_manager=variable_manager, loader=loader)
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/base.py", line 161, in load_data
    ds = self.preprocess_data(ds)
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/playbook/task.py", line 203, in preprocess_data
    (action, args, delegate_to) = args_parser.parse()
                                  ~~~~~~~~~~~~~~~~~^^
  File "/Users/Hipska/.local/pipx/venvs/ansible-playbook-grapher/lib/python3.13/site-packages/ansible/parsing/mod_args.py", line 350, in parse
    raise AnsibleParserError("couldn't resolve module/action '{0}'. This often indicates a "
                             "misspelling, missing collection, or incorrect module path.".format(bad_action),
                             obj=self._task_ds)
ansible.errors.AnsibleParserError: couldn't resolve module/action 'community.general.capabilities'. This often indicates a misspelling, missing collection, or incorrect module path.

The error appears to be in '/Users/Hipska/<<CURRENT_DIRECTORY>>/roles/collector/tasks/security.yml': line 3, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
@haidaraM haidaraM added the bug label Jan 29, 2025
@haidaraM
Copy link
Owner

I'm not able to reproduce this issue. Can you a provide a minimum set of steps and playbook to reproduce the issue? Can you also run a ansible-galaxy collection list and put the output here?

@Hipska
Copy link
Author

Hipska commented Jan 30, 2025

# /Users/Hipska/.ansible/collections/ansible_collections
Collection                               Version
---------------------------------------- -------
ansible.posix                            1.5.4  
community.clickhouse                     0.7.0  

# /opt/homebrew/Cellar/ansible/11.2.0/libexec/lib/python3.13/site-packages/ansible_collections
Collection                               Version
---------------------------------------- -------
amazon.aws                               9.1.1  
ansible.netcommon                        7.1.0  
ansible.posix                            1.6.2  
ansible.utils                            5.1.2  
ansible.windows                          2.7.0  
arista.eos                               10.0.1 
awx.awx                                  24.6.1 
azure.azcollection                       3.1.0  
check_point.mgmt                         6.2.1  
chocolatey.chocolatey                    1.5.3  
cisco.aci                                2.10.1 
cisco.asa                                6.1.0  
cisco.dnac                               6.28.0 
cisco.intersight                         2.0.20 
cisco.ios                                9.1.0  
cisco.iosxr                              10.3.0 
cisco.ise                                2.10.0 
cisco.meraki                             2.20.5 
cisco.mso                                2.9.0  
cisco.nxos                               9.3.0  
cisco.ucs                                1.15.0 
cloud.common                             4.0.0  
cloudscale_ch.cloud                      2.4.1  
community.aws                            9.0.0  
community.ciscosmb                       1.0.10 
community.crypto                         2.24.0 
community.digitalocean                   1.27.0 
community.dns                            3.1.2  
community.docker                         4.3.1  
community.general                        10.3.0 
community.grafana                        2.1.0  
community.hashi_vault                    6.2.0  
community.hrobot                         2.1.0  
community.library_inventory_filtering_v1 1.0.2  
community.libvirt                        1.3.1  
community.mongodb                        1.7.9  
community.mysql                          3.12.0 
community.network                        5.1.0  
community.okd                            4.0.1  
community.postgresql                     3.10.2 
community.proxysql                       1.6.0  
community.rabbitmq                       1.4.0  
community.routeros                       3.3.0  
community.sap_libs                       1.4.2  
community.sops                           2.0.1  
community.vmware                         5.3.0  
community.windows                        2.3.0  
community.zabbix                         3.2.0  
containers.podman                        1.16.2 
cyberark.conjur                          1.3.2  
cyberark.pas                             1.0.30 
dellemc.enterprise_sonic                 2.5.1  
dellemc.openmanage                       9.10.0 
dellemc.powerflex                        2.6.0  
dellemc.unity                            2.0.0  
f5networks.f5_modules                    1.34.1 
fortinet.fortimanager                    2.8.2  
fortinet.fortios                         2.3.9  
google.cloud                             1.5.0  
grafana.grafana                          5.7.0  
hetzner.hcloud                           4.2.2  
ibm.qradar                               4.0.0  
ibm.spectrum_virtualize                  2.0.0  
ibm.storage_virtualize                   2.6.0  
ieisystem.inmanage                       3.0.0  
infinidat.infinibox                      1.4.5  
infoblox.nios_modules                    1.7.1  
inspur.ispim                             2.2.3  
junipernetworks.junos                    9.1.0  
kaytus.ksmanage                          2.0.0  
kubernetes.core                          5.1.0  
kubevirt.core                            2.1.0  
lowlydba.sqlserver                       2.5.0  
microsoft.ad                             1.8.0  
netapp.cloudmanager                      21.24.0
netapp.ontap                             22.13.0
netapp.storagegrid                       21.13.0
netapp_eseries.santricity                1.4.1  
netbox.netbox                            3.20.0 
ngine_io.cloudstack                      2.5.0  
openstack.cloud                          2.4.1  
ovirt.ovirt                              3.2.0  
purestorage.flasharray                   1.32.0 
purestorage.flashblade                   1.19.2 
sensu.sensu_go                           1.14.0 
splunk.es                                4.0.0  
telekom_mms.icinga_director              2.2.2  
theforeman.foreman                       4.2.0  
vmware.vmware                            1.9.0  
vmware.vmware_rest                       4.5.0  
vultr.cloud                              1.13.0 
vyos.vyos                                5.0.0  
wti.remote                               1.0.10 

With -vvvv I see the tool can perfectly load the local collections, but seem to ignore the global collection path:

Loading collection community.clickhouse from /Users/Hipska/.ansible/collections/ansible_collections/community/clickhouse
Loading collection ansible.posix from /Users/Hipska/.ansible/collections/ansible_collections/ansible/posix

As you can see, ansible is installed with brew.

It looks like this is similar to ansible/ansible-lint#3842, but I don't know how to manually specify the path to look into..

@haidaraM
Copy link
Owner

I think your issue is similar to what we faced here: #203 (comment)

Ansible has different behaviors depending on how it was installed and it seems there are some "edge cases" where the grapher is not loading some paths. I use pip as much as possible and avoid brew or system package managers.

Now, you can set the collection_paths: https://docs.ansible.com/ansible/latest/reference_appendices/config.html#collections-paths (the grapher should read this value by default).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants