Ansible lint是什么?
这篇文章是Ansible lint Advent Calendar 2022的第一篇文章。
本次我们将解释什么是Ansible lint。
Ansible lint 是什么?
Ansible playbook、role、collections开发的命令行式lint工具,用于检查代码是否符合规范。
-
- ベストプラクティスに準じて記述されているか
-
- バグにつながりやすい記述方法が紛れ込んでないか
- コード等に脆弱性が入り込んでいないか
这是一个静态分析工具,用于检查诸如Ansible lint产品的概念受到黑板或美观等工具的强烈影响。
Ansible lint的哲学
这是从Ansible lint网站的意译。
Ansible playbooks、roles、およびcollections(以下Ansibleコンテンツと同義)は、ドキュメントのように読むことができ、曖昧さがなく、記述した通りに実行され、一貫した結果(冪等性と同義と思われる)を提供する
Ansible-lintは、Ansibleコンテンツの作成者がコンテンツを作成し、パッケージ化するための信頼すべき指針となるべきである
AnsibleコンテンツではAnsible lintが提示する全てのルールが適応されるべきであるとは限らないが、可能な限りAnsible lintの提示するルールに従うべきである
Ansible lintの目標は、異なる人々によって作成されたコンテンツが、似たような馴染みのある記述方法で作成される事を保証する。これにより、コミュニティや企業において、Ansibleコンテンツの採用や利用を容易にする
行动环境
在 Ansible lint 的文件和文档中并没有明确提到。但是可以从 Ansible lint 的 GitHub 仓库的 CI 环境推测,需要 Python 3.8 或更高版本。
请在使用早于Ansible lint 6系的版本时,检查GitHub存储库中的测试执行文件。
.
.
.
unit:
name: ${{ matrix.name || matrix.tox_env }}
runs-on: ${{ matrix.os }}
defaults:
run:
shell: ${{ matrix.shell || 'bash'}}
strategy:
fail-fast: false
# max-parallel: 5
# The matrix testing goal is to cover the *most likely* environments
# which are expected to be used by users in production. Avoid adding a
# combination unless there are good reasons to test it, like having
# proof that we failed to catch a bug by not running it. Using
# distribution should be preferred instead of custom builds.
matrix:
name:
- py38
tox_env:
- py38
python-version:
- 3.8
os:
# https://help.github.com/en/actions/reference/virtual-environments-for-github-hosted-runners
- ubuntu-20.04
# - windows-latest
# - windows-2016
include:
# keep list sorted as it determines UI order too
# linux
# py38 is first and comes from matrix
- tox_env: py38
os: ubuntu-20.04
python-version: 3.8
devel: false # ansible 2.14 removed support for py38
- tox_env: py39
os: ubuntu-20.04
python-version: 3.9
devel: true
- tox_env: py310
os: ubuntu-20.04
python-version: "3.10"
devel: true
- tox_env: py311
os: ubuntu-20.04
python-version: "~3.11.0-0" # see https://github.com/actions/setup-python/issues/213#issuecomment-1146676713
devel: true
# macos
- name: py38 (macos)
tox_env: py38
os: macOS-latest
python-version: 3.8
- name: py310 (macos)
tox_env: py310
os: macOS-latest
python-version: "3.10"
# windows-2022 WSL does timeout running tests, likely caused but some
# extreme (>10x) performance degradation compared with windows-2019
# https://github.com/actions/virtual-environments/issues/4856
- name: py39 (wsl)
tox_env: py39
os: windows-2019
shell: "wsl-bash {0}"
.
.
.
安装步骤
通过pip进行安装。使用以下命令安装Ansible lint和Ansible core。
pip3 install ansible-lint
## もしくは
pip3 install git+https://github.com/ansible-community/ansible-lint.git
如果要使用所有的Ansible lint功能,则还需要安装Ansible Community Package,请同时安装Ansible Community Package。
pip3 install ansible-lint ansible