将ansible-lint与CI集成

在本文中,我们将介绍如何将 ansible-lint 这个 ansible 的 linter 实际地集成到 CI 中。虽然内容并不是很重要,但由于这方面的文章并不多,所以我想简单地总结一下,并表达一下 ansible-lint 很好的想法。

安装ansible-lint

在ansible仓库中提交requirements.txt如下,并通过pip install -r requirements.txt进行安装。

ansible==2.4.3
ansible-lint==3.4.20

ansible-lint的配置

在实际运用中,很难完全满足所有标准规则,可能会有些麻烦,或者说这种情况并没有什么问题。在这种情况下,如果在.ansible-lint的skip_list中记录所需忽略的规则,它将忽略对这些规则的检查,非常方便。

parseable: true
quiet: false
use_default_rules: true
skip_list:
  - ANSIBLE0006
  - ANSIBLE0007
verbosity: 1

特别是对于已经存在的 Ansible,如果引入新的 ansible-lint,可能会出现大量警告的情况,因此建议先添加所有出现警告的规则,并在空闲时间逐步处理那些看起来简单的规则。在这种重构阶段,可以通过 ansible-lint 的-c选项指定应用的.ansible-lint文件路径,非常方便。

在使用Travis进行pull request时,让ansible-lint运行起来。

我认为您只需要指定要应用lint工具的目标playbook,就可以按照以下方式进行。它会遍历所有使用include和import的yaml文件。

language: python
python:
  - "2.7"
script:
  - pip install -r ./requirements.txt
  - ansible-lint *_playbook.yml

使用无人机在提交请求时运行 ansible-lint

如果您正在使用无人机,请按照以下方式编写.drone.yml,完成您的任务。

pipeline:
  test:
    image: python:2.7
    commands:
      - pip install -r requirements.txt
      - ansible-lint *_playbook.yml

总结

由于可以在5分钟内完成设置,我建议使用ansible-lint,这样使用ansible的朋友们可以体验其中的优点。

bannerAds