Ansible Lint Documentation¶
About Ansible Lint¶
Ansible Lint is a command-line tool for linting playbooks, roles and collections aimed towards any Ansible users. Its main goal is to promote proven practices, patterns and behaviors while avoiding common pitfalls that can easily lead to bugs or make code harder to maintain.
Ansible lint is also supposed to help users upgrade their code to work with newer versions of Ansible. Due to this reason we recommend using it with the newest version of Ansible, even if the version used in production may be older.
As any other linter, it is opinionated. Still, its rules are the result of community contributions and they can always be disabled based individually or by category by each user.
Ansible Galaxy project makes use of
this linter in order to compute quality scores for Galaxy Hub
contributed content. This does not mean this tool is aimed only to those
that want to share their code. Files like galaxy.yml
, or sections like
galaxy_info
inside meta.yml
help with documentation and maintenance,
even for unpublished roles or collections.
The project was originally started by @willthames, and has since been adopted by the Ansible Community team. Its development is purely community driven, while keeping permanent communications with other Ansible teams.
Philosophy
- Philosophy of ansible-lint
- History and the future
- Style and formatting
- Q&A
- Why does ansible-lint not accept all valid ansible syntax?
- What if I do not agree with a specific rule?
- Who decides on best practices are adopted?
- Do I need to pass all rules to get my collection certified?
- Why lots of official Ansible docs examples are not passing linting?
- Linter requires an Ansible version newer than what I use in production?
Installing
Usage
Configuring
Rules
- Rules
- Custom Rules
- Default Rules
- command-instead-of-module
- command-instead-of-shell
- deprecated-bare-vars
- deprecated-command-syntax
- deprecated-local-action
- deprecated-module
- fqcn-builtins
- git-latest
- hg-latest
- ignore-errors
- inline-env-var
- internal-error
- key-order
- literal-compare
- load-failure
- meta-incorrect
- meta-no-info
- meta-no-tags
- meta-video-links
- no-changed-when
- no-handler
- no-jinja-nesting
- no-jinja-when
- no-loop-var-prefix
- no-relative-paths
- no-tabs
- package-latest
- parser-error
- partial-become
- playbook-extension
- risky-file-permissions
- risky-octal
- risky-shell-pipe
- role-name
- schema
- syntax-check
- unnamed-task
- var-naming
- var-spacing
- yaml
Contributing
- Contributing to Ansible-lint
- Module dependency graph
- Adding a new rule
- Private unsupported (dev) API autodoc
- ansiblelint package
- Subpackages
- ansiblelint._internal package
- ansiblelint.formatters package
- ansiblelint.rules package
- Subpackages
- Submodules
- ansiblelint.rules.command_instead_of_module module
- ansiblelint.rules.command_instead_of_shell module
- ansiblelint.rules.deprecated_bare_vars module
- ansiblelint.rules.deprecated_command_syntax module
- ansiblelint.rules.deprecated_local_action module
- ansiblelint.rules.deprecated_module module
- ansiblelint.rules.empty_string_compare module
- ansiblelint.rules.fqcn_builtins module
- ansiblelint.rules.git_latest module
- ansiblelint.rules.hg_latest module
- ansiblelint.rules.ignore_errors module
- ansiblelint.rules.inline_env_var module
- ansiblelint.rules.key_order module
- ansiblelint.rules.literal_compare module
- ansiblelint.rules.meta_incorrect module
- ansiblelint.rules.meta_no_info module
- ansiblelint.rules.meta_no_tags module
- ansiblelint.rules.meta_video_links module
- ansiblelint.rules.no_changed_when module
- ansiblelint.rules.no_handler module
- ansiblelint.rules.no_jinja_nesting module
- ansiblelint.rules.no_jinja_when module
- ansiblelint.rules.no_log_password module
- ansiblelint.rules.no_loop_var_prefix module
- ansiblelint.rules.no_prompting module
- ansiblelint.rules.no_relative_paths module
- ansiblelint.rules.no_same_owner module
- ansiblelint.rules.no_tabs module
- ansiblelint.rules.only_builtins module
- ansiblelint.rules.package_latest module
- ansiblelint.rules.partial_become module
- ansiblelint.rules.playbook_extension module
- ansiblelint.rules.risky_file_permissions module
- ansiblelint.rules.risky_octal module
- ansiblelint.rules.risky_shell_pipe module
- ansiblelint.rules.role_name module
- ansiblelint.rules.schema module
- ansiblelint.rules.syntax_check module
- ansiblelint.rules.unnamed_task module
- ansiblelint.rules.var_naming module
- ansiblelint.rules.var_spacing module
- ansiblelint.rules.yaml module
- Module contents
- ansiblelint.schemas package
- ansiblelint.testing package
- Submodules
- ansiblelint.__main__ module
- ansiblelint._mockings module
- ansiblelint._version module
- ansiblelint.app module
- ansiblelint.cli module
- ansiblelint.color module
- ansiblelint.config module
- ansiblelint.constants module
- ansiblelint.errors module
- ansiblelint.file_utils module
- ansiblelint.generate_docs module
- ansiblelint.loaders module
- ansiblelint.logger module
- ansiblelint.runner module
- ansiblelint.skip_utils module
- ansiblelint.text module
- ansiblelint.transformer module
- ansiblelint.utils module
- ansiblelint.version module
- ansiblelint.yaml_utils module
- Module contents
- Subpackages
- ansiblelint package