project-config/.ansible-lint
Ian Wienand 826a79f50f linter: update ansible-lint; add auto-download of roles
This updates ansible-lint to the 6.x releases.  It also updates the
ansible installed to our current zuul version.

It cleans up the config file and marks it as yaml.  A few new
exceptions are added with explainations.

We don't need to fake the zuul_return by telling ansible-lint to mock
it.  This is added to the config, and we can remove the stub file.

A constant source of problems running this locally is that you have to
have the other role repos checked out so ansible-lint can do its
checks.  Add a smaller helper script for doing this locally.  In the
gate, ANSIBLE_ROLES_PATH is set to the Zuul checkouts of these
projects.  Locally, add a smaller helper "ansible-lint-roles-cache.sh"
that pulls the projects into a .cache directory.  If they are already
there, they get updated.  By default locally we will use these
checkouts.  This way, "tox -e linters" just works without having to do
anything else.

This also modifies the xargs to run the check all at once, instead of
fork for each file.  I did try autodetection but it seems like other
yaml files in the roles/playbook directories still confuse
ansible-lint.

Also I don't think we need a ansible-playbook --syntax-check step;
ansible-lint covers that.

Change-Id: I972f73037b9f904a555b81f3835ca5261639ed01
2022-08-12 09:29:11 +10:00

31 lines
912 B
Plaintext

exclude_paths:
# don't lint external projects here
- ../../opendev
- ../../zuul
- ../openstack-zuul-jobs
- .cache/
- zuul.d/
- grafana/
- nodepool/
parseable: true
quiet: false
skip_list:
- '106' # Role name does not match ``^[a-z][a-z0-9_]+$`` pattern
- '204' # [E204] Lines should be no longer than 120 chars
# TODO(AJaeger): E208 gives false positives currently, we
# should enable it once all issues in zuul-jobs and
# ansible-lint are fixed.
- '208' # File permissions not mentioned
- '301' # [E301] Commands should not change things if nothing needs doing
- '306' # [E306] Shells that use pipes should set the pipefail option
- 'fqcn-builtins' # for now ignore using fully-qualified names
- 'yaml[truthy]' # doesn't like "yes"?
- 'yaml[line-length]'
verbosity: 1
mock_modules:
- zuul_return
# Local variables:
# mode: yaml
# End: