LoginSignup
13
7

More than 5 years have passed since last update.

ansible-lint を CI に組み込む

Last updated at Posted at 2018-02-02

 この記事では ansible の linter である ansible-lint を実際にどのように CI に組み込んでいるかをご紹介します。といっても、大した内容ではないのですが、あまり記事が出回ってなかったので、ansible-lint 良いぞという気持ちも兼ねて僭越ながら手短にまとめてみました。

ansible-lint の導入

 requirements.txt を以下のように ansible リポジトリにコミットしておき、 pip install -r requirements.txt でインストールしています。

ansible==2.4.3
ansible-lint==3.4.20

.ansible-lint の設定

 実運用上、なかなか標準ルールすべてを満たすのは大変だったり、ちょっと面倒だったり、別にこれはいいんじゃないのみたいなものがあったりします。そんなときには、.ansible-lintskip_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

drone を利用して pull request 時に ansible-lint を走らせる

drone を使っている方は .drone.yml をこんな風に書いてオワリ

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

まとめ

導入は 5 分でできるので、ansible を使っているみなさま、ぜひ ansible-lint を使ってみると良いと思います。良さみがあります。

13
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
7