Writing easy to maintain Ansible roles and playbooks is more of secret art that will take years to master. Product documentation is useful but is far from complete and lacks lots of hints.
Avoiding false positives
You can use
noqa comments to disable specific rules. Be careful not to put
them on multi-line YAML blocks as they will not be loaded as comments.
- name: some ansible task # noqa 305 <-- correct shell: | env # 305 <-- not correct
If the false positives are too many or if you are just in the process of adopting the linter, narrow down its scope:
# .ansible-lint exclude_paths: - .travis.yml # be careful not to exclude too much skip_list: - 305 # Disable rule, include link to bug that forced you to disable it
Accessing Ansible modules from other repos
In the unlikely case where you would end up with
ansible-lint errors caused by the fact that it fails to find some Ansible modules which may not even be located inside your own repository, I provide this hack for you which assures is able to find
zuul_return module which is part of
zuul Python package.
- repo: https://github.com/ansible/ansible-lint.git rev: v4.1.1a0 hooks: - id: ansible-lint files: \.(yaml|yml)$ # Helps it find zuul_return module on both zuul and on dev environments, # Based on https://github.com/pre-commit/pre-commit/issues/758 entry: > bash -c 'env ANSIBLE_LIBRARY=`python -c "import os, zuul; print(os.path.dirname(zuul.__file__))"`/ansible/base/actiongeneral/ ansible-lint --force-color -v "$@"' exclude: playbooks/legacy additional_dependencies: - zuul