将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的朋友们可以体验其中的优点。