We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
When using --fix on an apt shorthand, the resulting config has an invalid cmd: "" entry.
--fix
cmd: ""
ansible-lint 24.6.0 using ansible-core:2.17.0 ansible-compat:24.6.0 ruamel-yaml:0.18.6 ruamel-yaml-clib:0.2.8
Ubuntu 24.04 LTS with Python 3.12.3 Ansible-core Version 2.17.0
Minimal playbook (test.playbook.yaml):
--- - name: Refresh APT repos hosts: all tasks: - name: refresh repositories ansible.builtin.apt: update_cache=yes force_apt_get=yes cache_valid_time=3600
Run ansible-lint --fix test.playbook.yaml
The resulting fixed playbook should look like this:
--- - name: Refresh APT repos hosts: all tasks: - name: Refresh repositories ansible.builtin.apt: update_cache: true force_apt_get: true cache_valid_time: "3600"
The resulting 'fixed' playbook has an extra line and truthy values are now strings:
--- - name: Refresh APT repos hosts: all tasks: - name: Refresh repositories ansible.builtin.apt: update_cache: "yes" force_apt_get: "yes" cache_valid_time: "3600" cmd: ""
DEBUG Logging initialized to level 10 INFO Identified / as project root due file system root. DEBUG Options: Options(_skip_ansible_syntax_check=False, cache_dir=PosixPath('/root/.cache/ansible-compat/e3b0c4'), colored=True, configured=True, cwd=PosixPath('/root/workspace/ansible/ldap'), display_relative_path=True, exclude_paths=['.cache', '.git', '.hg', '.svn', '.tox'], format=None, lintables=['../test.pl aybook.yaml'], list_rules=False, list_tags=False, write_list=['all'], parseable=False, quiet=0, rulesdirs=[PosixPath('/root/.local/share/pipx/venvs/ansible-lint/lib/python3.12/site-packages/ansiblelint/rules')], skip_list=[], tags=[], verbosity=5, warn_list=['experimental', 'jinja', 'fqcn'], mock_filters=[], mock_mo dules=[], mock_roles=[], loop_var_prefix=None, only_builtins_allow_collections=[], only_builtins_allow_modules=[], var_naming_pattern=None, offline=None, project_dir='/', extra_vars=None, enable_list=[], skip_action_validation=True, strict=False, rules={}, profile=None, task_name_prefix='{stem} | ', sarif_file=None, config_file=None, generate_ignore=False, rulesdir=[], use_default_rules=False, version=False, list_profiles=False, ignore_file=None, max_tasks=100, max_block_depth=20, supported_ansible_also=[]) DEBUG CWD: /root/workspace/ansible/ldap DEBUG Logging initialized to level 10 DEBUG Effective yamllint rules used: {'anchors': {'level': 'error', 'forbid-undeclared-aliases': True, 'forbid-duplicated-anchors': False, 'forbid-unused-anchors': False}, 'braces': {'level': 'error', 'forbid': False, 'min-spaces-inside': 0, 'max-spaces-inside': 1, 'min-spaces-inside-empty': -1, 'max-spaces-insid e-empty': -1}, 'brackets': {'level': 'error', 'forbid': False, 'min-spaces-inside': 0, 'max-spaces-inside': 0, 'min-spaces-inside-empty': -1, 'max-spaces-inside-empty': -1}, 'colons': {'level': 'error', 'max-spaces-before': 0, 'max-spaces-after': 1}, 'commas': {'level': 'error', 'max-spaces-before': 0, 'min-spaces-a fter': 1, 'max-spaces-after': 1}, 'comments': {'level': 'warning', 'require-starting-space': True, 'ignore-shebangs': True, 'min-spaces-from-content': 1}, 'comments-indentation': False, 'document-end': False, 'document-start': False, 'empty-lines': {'level': 'error', 'max': 2, 'max-start': 0, 'max-end': 0}, 'empty-v alues': False, 'float-values': False, 'hyphens': {'level': 'error', 'max-spaces-after': 1}, 'indentation': {'level': 'error', 'spaces': 'consistent', 'indent-sequences': True, 'check-multi-line-strings': False}, 'key-duplicates': {'level': 'error', 'forbid-duplicated-merge-keys': False}, 'key-ordering': False, 'line -length': {'level': 'error', 'max': 160, 'allow-non-breakable-words': True, 'allow-non-breakable-inline-mappings': False}, 'new-line-at-end-of-file': {'level': 'error'}, 'new-lines': {'level': 'error', 'type': 'unix'}, 'octal-values': {'forbid-implicit-octal': True, 'forbid-explicit-octal': True, 'level': 'error'}, 'quoted-strings': False, 'trailing-spaces': {'level': 'error'}, 'truthy': {'level': 'warning', 'allowed-values': ['true', 'false'], 'check-keys': True}} INFO Set ANSIBLE_LIBRARY=/root/.cache/ansible-compat/f71893/modules:/root/.ansible/plugins/modules:/usr/share/ansible/plugins/modules INFO Set ANSIBLE_COLLECTIONS_PATH=/root/.cache/ansible-compat/f71893/collections:/root/.ansible/collections:/usr/share/ansible/collections:/root/.cache/ansible-compat/f71893/collections:/root/.ansible/collections:/usr/share/ansible/collections INFO Set ANSIBLE_ROLES_PATH=/root/.cache/ansible-compat/f71893/roles:/root/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles DEBUG Effective yamllint rules used: {'anchors': {'level': 'error', 'forbid-undeclared-aliases': True, 'forbid-duplicated-anchors': False, 'forbid-unused-anchors': False}, 'braces': {'level': 'error', 'forbid': False, 'min-spaces-inside': 0, 'max-spaces-inside': 1, 'min-spaces-inside-empty': -1, 'max-spaces-insid e-empty': -1}, 'brackets': {'level': 'error', 'forbid': False, 'min-spaces-inside': 0, 'max-spaces-inside': 0, 'min-spaces-inside-empty': -1, 'max-spaces-inside-empty': -1}, 'colons': {'level': 'error', 'max-spaces-before': 0, 'max-spaces-after': 1}, 'commas': {'level': 'error', 'max-spaces-before': 0, 'min-spaces-a fter': 1, 'max-spaces-after': 1}, 'comments': {'level': 'warning', 'require-starting-space': True, 'ignore-shebangs': True, 'min-spaces-from-content': 1}, 'comments-indentation': False, 'document-end': False, 'document-start': False, 'empty-lines': {'level': 'error', 'max': 2, 'max-start': 0, 'max-end': 0}, 'empty-v alues': False, 'float-values': False, 'hyphens': {'level': 'error', 'max-spaces-after': 1}, 'indentation': {'level': 'error', 'spaces': 'consistent', 'indent-sequences': True, 'check-multi-line-strings': False}, 'key-duplicates': {'level': 'error', 'forbid-duplicated-merge-keys': False}, 'key-ordering': False, 'line -length': {'level': 'error', 'max': 160, 'allow-non-breakable-words': True, 'allow-non-breakable-inline-mappings': False}, 'new-line-at-end-of-file': {'level': 'error'}, 'new-lines': {'level': 'error', 'type': 'unix'}, 'octal-values': {'forbid-implicit-octal': True, 'forbid-explicit-octal': True, 'level': 'error'}, 'quoted-strings': False, 'trailing-spaces': {'level': 'error'}, 'truthy': {'level': 'warning', 'allowed-values': ['true', 'false'], 'check-keys': True}} DEBUG Logging initialized to level 10 DEBUG Effective yamllint rules used: {'anchors': {'level': 'error', 'forbid-undeclared-aliases': True, 'forbid-duplicated-anchors': False, 'forbid-unused-anchors': False}, 'braces': {'level': 'error', 'forbid': False, 'min-spaces-inside': 0, 'max-spaces-inside': 1, 'min-spaces-inside-empty': -1, 'max-spaces-inside-empty': -1}, 'brackets': {'level': 'error', 'forbid': False, 'min-spaces-inside': 0, 'max-spaces-inside': 0, 'min-spaces-inside-empty': -1, 'max-spaces-inside-empty': -1}, 'colons': {'level': 'error', 'max-spaces-before': 0, 'max-spaces-after': 1}, 'commas': {'level': 'error', 'max-spaces-before': 0, 'min-spaces-after': 1, 'max-spaces-after': 1}, 'comments': {'level': 'warning', 'require-starting-space': True, 'ignore-shebangs': True, 'min-spaces-from-content': 1}, 'comments-indentation': False, 'document-end': False, 'document-start': False, 'empty-lines': {'level': 'error', 'max': 2, 'max-start': 0, 'max-end': 0}, 'empty-values': False, 'float-values': False, 'hyphens': {'level': 'error', 'max-spaces-after': 1}, 'indentation': {'level': 'error', 'spaces': 'consistent', 'indent-sequences': True, 'check-multi-line-strings': False}, 'key-duplicates': {'level': 'error', 'forbid-duplicated-merge-keys': False}, 'key-ordering': False, 'line-length': {'level': 'error', 'max': 160, 'allow-non-breakable-words': True, 'allow-non-breakable-inline-mappings': False}, 'new-line-at-end-of-file': {'level': 'error'}, 'new-lines': {'level': 'error', 'type': 'unix'}, 'octal-values': {'forbid-implicit-octal': True, 'forbid-explicit-octal': True, 'level': 'error'}, 'quoted-strings': False, 'trailing-spaces': {'level': 'error'}, 'truthy': {'level': 'warning', 'allowed-values': ['true', 'false'], 'check-keys': True}} INFO Set ANSIBLE_LIBRARY=/root/.cache/ansible-compat/f71893/modules:/root/.ansible/plugins/modules:/usr/share/ansible/plugins/modules INFO Set ANSIBLE_COLLECTIONS_PATH=/root/.cache/ansible-compat/f71893/collections:/root/.ansible/collections:/usr/share/ansible/collections:/root/.cache/ansible-compat/f71893/collections:/root/.ansible/collections:/usr/share/ansible/collections INFO Set ANSIBLE_ROLES_PATH=/root/.cache/ansible-compat/f71893/roles:/root/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles INFO Executing syntax check on playbook /root/workspace/ansible/test.playbook.yaml (0.62s) DEBUG Examining ~/workspace/ansible/test.playbook.yaml of type playbook DEBUG Running rule internal-error DEBUG Running rule load-failure DEBUG Running rule parser-error DEBUG Running rule warning DEBUG Running rule yaml DEBUG Running rule args DEBUG Running rule avoid-implicit DEBUG Running rule command-instead-of-module DEBUG Running rule command-instead-of-shell DEBUG Running rule complexity DEBUG Running rule deprecated-bare-vars DEBUG Running rule deprecated-local-action DEBUG Running rule deprecated-module DEBUG Running rule fqcn DEBUG Running rule galaxy DEBUG Running rule ignore-errors DEBUG Running rule inline-env-var DEBUG Running rule jinja DEBUG Running rule key-order DEBUG Running rule latest DEBUG Running rule literal-compare DEBUG Running rule loop-var-prefix DEBUG Running rule meta-incorrect DEBUG Running rule meta-no-tags DEBUG Running rule meta-runtime DEBUG Running rule meta-video-links DEBUG Running rule name DEBUG Running rule no-changed-when DEBUG Running rule no-free-form DEBUG Running rule no-handler DEBUG Running rule no-jinja-when DEBUG Running rule no-relative-paths DEBUG Running rule no-tabs DEBUG Running rule package-latest DEBUG Running rule partial-become DEBUG Running rule playbook-extension DEBUG Running rule risky-file-permissions DEBUG Running rule risky-octal DEBUG Running rule risky-shell-pipe DEBUG Running rule role-name DEBUG Running rule run-once DEBUG Running rule sanity DEBUG Running rule schema DEBUG Running rule var-naming DEBUG Begin fixing: 1 matches DEBUG Effective yamllint rules used: {'anchors': {'level': 'error', 'forbid-undeclared-aliases': True, 'forbid-duplicated-anchors': False, 'forbid-unused-anchors': False}, 'braces': {'level': 'error', 'forbid': False, 'min-spaces-inside': 0, 'max-spaces-inside': 1, 'min-spaces-inside-empty': -1, 'max-spaces-inside-empty': -1}, 'brackets': {'level': 'error', 'forbid': False, 'min-spaces-inside': 0, 'max-spaces-inside': 0, 'min-spaces-inside-empty': -1, 'max-spaces-inside-empty': -1}, 'colons': {'level': 'error', 'max-spaces-before': 0, 'max-spaces-after': 1}, 'commas': {'level': 'error', 'max-spaces-before': 0, 'min-spaces-after': 1, 'max-spaces-after': 1}, 'comments': {'level': 'warning', 'require-starting-space': True, 'ignore-shebangs': True, 'min-spaces-from-content': 1}, 'comments-indentation': False, 'document-end': False, 'document-start': False, 'empty-lines': {'level': 'error', 'max': 2, 'max-start': 0, 'max-end': 0}, 'empty-values': False, 'float-values': False, 'hyphens': {'level': 'error', 'max-spaces-after': 1}, 'indentation': {'level': 'error', 'spaces': 'consistent', 'indent-sequences': True, 'check-multi-line-strings': False}, 'key-duplicates': {'level': 'error', 'forbid-duplicated-merge-keys': False}, 'key-ordering': False, 'line-length': {'level': 'error', 'max': 160, 'allow-non-breakable-words': True, 'allow-non-breakable-inline-mappings': False}, 'new-line-at-end-of-file': {'level': 'error'}, 'new-lines': {'level': 'error', 'type': 'unix'}, 'octal-values': {'forbid-implicit-octal': True, 'forbid-explicit-octal': True, 'level': 'error'}, 'quoted-strings': False, 'trailing-spaces': {'level': 'error'}, 'truthy': {'level': 'warning', 'allowed-values': ['true', 'false'], 'check-keys': True}} DEBUG Applying rule specific fix for: no-free-form/task ~/workspace/ansible/test.playbook.yaml:5 DEBUG Rule specific fix applied for: no-free-form/task ~/workspace/ansible/test.playbook.yaml:5 DEBUG Rewriting yaml file: ~/workspace/ansible/test.playbook.yaml (playbook), version=(1, 1) DEBUG Fixing: (1 of 1) (Avoid using free-form when calling module actions. (ansible.builtin.apt)) matched ~/workspace/ansible/test.playbook.yaml:5 Task/Handler: Refresh repositories DEBUG Fixed, removed: (Avoid using free-form when calling module actions. (ansible.builtin.apt)) matched ~/workspace/ansible/test.playbook.yaml:5 Task/Handler: Refresh repositories DEBUG Attempting to release lock 139759024798800 on /root/.cache/ansible-compat/e3b0c4/.lock DEBUG Lock 139759024798800 released on /root/.cache/ansible-compat/e3b0c4/.lock DEBUG Determined rule-profile order: {'internal-error': (0, 'min'), 'load-failure': (1, 'min'), 'parser-error': (2, 'min'), 'syntax-check': (3, 'min'), 'command-instead-of-module': (4, 'basic'), 'command-instead-of-shell': (5, 'basic'), 'deprecated-bare-vars': (6, 'basic'), 'deprecated-local-action': (7, 'basic'), 'deprecated-module': (8, 'basic'), 'inline-env-var': (9, 'basic'), 'key-order': (10, 'basic'), 'literal-compare': (11, 'basic'), 'jinja': (12, 'basic'), 'no-free-form': (13, 'basic'), 'no-jinja-when': (14, 'basic'), 'no-tabs': (15, 'basic'), 'partial-become': (16, 'basic'), 'playbook-extension': (17, 'basic'), 'role-name': (18, 'basic'), 'schema': (19, 'basic'), 'name': (20, 'basic'), 'var-naming': (21, 'basic'), 'yaml': (22, 'basic'), 'name': (23, 'moderate'), 'name': (24, 'moderate'), 'name': (25, 'moderate'), 'spell-var-name': (26, 'moderate'), 'avoid-implicit': (27, 'safety'), 'latest': (28, 'safety'), 'package-latest': (29, 'safety'), 'risky-file-permissions': (30, 'safety'), 'risky-octal': (31, 'safety'), 'risky-shell-pipe': (32, 'safety'), 'galaxy': (33, 'shared'), 'ignore-errors': (34, 'shared'), 'layout': (35, 'shared'), 'meta-incorrect': (36, 'shared'), 'meta-no-tags': (37, 'shared'), 'meta-video-links': (38, 'shared'), 'meta-version': (39, 'shared'), 'meta-runtime': (40, 'shared'), 'no-changed-when': (41, 'shared'), 'no-changelog': (42, 'shared'), 'no-handler': (43, 'shared'), 'no-relative-paths': (44, 'shared'), 'max-block-depth': (45, 'shared'), 'max-tasks': (46, 'shared'), 'unsafe-loop': (47, 'shared'), 'avoid-dot-notation': (48, 'production'), 'sanity': (49, 'production'), 'fqcn': (50, 'production'), 'import-task-no-when': (51, 'production'), 'meta-no-dependencies': (52, 'production'), 'single-entry-point': (53, 'production'), 'use-loop': (54, 'production')} Modified 1 files. DEBUG Found virtualenv, assuming `pip3 install` will work. DEBUG Registered VCS backend: bzr DEBUG Registered VCS backend: git DEBUG Registered VCS backend: hg DEBUG Registered VCS backend: svn DEBUG Found ansible-lint 24.6.0 dist Passed: 0 failure(s), 0 warning(s) on 1 files. Last profile that met the validation criteria was 'production'.
The text was updated successfully, but these errors were encountered:
This was already fixed on main, #4215 -- please search for existing bugs and pulls before reporting a new one.
Sorry, something went wrong.
No branches or pull requests
Summary
When using
--fix
on an apt shorthand, the resulting config has an invalidcmd: ""
entry.Issue Type
OS / ENVIRONMENT
ansible-lint 24.6.0 using ansible-core:2.17.0 ansible-compat:24.6.0 ruamel-yaml:0.18.6 ruamel-yaml-clib:0.2.8
Ubuntu 24.04 LTS with Python 3.12.3
Ansible-core Version 2.17.0
STEPS TO REPRODUCE
Minimal playbook (test.playbook.yaml):
Run ansible-lint --fix test.playbook.yaml
Desired Behavior
The resulting fixed playbook should look like this:
Actual Behavior
The resulting 'fixed' playbook has an extra line and truthy values are now strings:
Here's the complete output with -vvvvv
The text was updated successfully, but these errors were encountered: