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
广告
将在 10 秒后关闭
bannerAds