ansible_modules
ansible_modules copied to clipboard
[Bug]: Ansible-lint WARNING: Ignored exception from ArgsRule.matchtasks while processing
Ansible NetBox Collection version
v3.20.0
Ansible version
ansible [core 2.17.5]
config file = /home/kshutt/projects/iaas/ansible.cfg
configured module search path = ['/home/kshutt/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /home/kshutt/venv311/lib64/python3.11/site-packages/ansible
ansible collection location = /home/kshutt/.ansible/collections:/usr/share/ansible/collections
executable location = /home/kshutt/venv311/bin/ansible
python version = 3.11.10 (main, Sep 9 2024, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-2)] (/home/kshutt/venv311/bin/python3.11)
jinja version = 3.1.4
libyaml = True
NetBox version
v4.0.5
Python version
3.11
Steps to Reproduce
- Create a task file with reference to the netbox.netbox.netbox_virtual_machine module:
- name: "Make sure VM with name '{{ item }}' exists." netbox.netbox.netbox_virtual_machine: netbox_url: "{{ netbox_url }}" netbox_token: "{{ netbox_token }}" state: present data: name: "{{ item }}" site: "{{ netbox_site }}" cluster: "{{ netbox_cluster }}" vcpus: "{{ netbox_vcpus }}" # This variable is a proper float type, which we have verified. memory: "{{ netbox_memory }}" # This variable is a proper int type, which we have verified. disk: "{{ netbox_disk }}" # This variable is a proper int type, which we have verified. register: vm_change
- Run ansible-lint against the file:
ansible-lint my_role/tasks/create_vm.yml
- This warning is produced, indicating that an exception happened in parsing, and it's not going through proper lint checks.
WARNING Ignored exception from ArgsRule.matchtasks while processing my_role/tasks/create_vm.yml (tasks): 'vcpus'
Expected Behavior
One would expect ansible-lint to run correctly on a valid task file. The task in question does execute in our playbooks just fine. However, this warning means that it's not actually running any lint checks on the file.
Observed Behavior
WARNING Ignored exception from ArgsRule.matchtasks while processing my_role/tasks/create_vm.yml (tasks): 'vcpus'
DEBUG Ignored exception details
Traceback (most recent call last):
File "/home/kshutt/venv311/lib64/python3.11/site-packages/ansiblelint/_internal/rules.py", line 94, in getmatches
matches.extend(method(file))
^^^^^^^^^^^^
File "/home/kshutt/venv311/lib64/python3.11/site-packages/ansiblelint/rules/__init__.py", line 178, in matchtasks
result = self.matchtask(task, file=file)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kshutt/venv311/lib64/python3.11/site-packages/ansiblelint/rules/args.py", line 188, in matchtask
self._parse_failed_msg(failed_msg, task, module_name, file),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kshutt/venv311/lib64/python3.11/site-packages/ansiblelint/rules/args.py", line 234, in _parse_failed_msg
option_value = task["action"]
~~~~~~~~~~~~~~^^^^^^^^^^^^
KeyError: 'vcpus'
The same warning happens on the memory
and disk
fields as well, possibly others? Oddly enough, the name
, site
, and cluster
fields don't produce any warnings.
Commenting out the offending fields does allow ansible-lint to run without these warnings, but obviously would not have the correct results in our playbooks.