概要
ansible-lintとGithub、TravisCIを使って、Githubへのpush毎にPlaybookのチェックを行います。
ansible-lintを使うことでplaybook中の改善ポイントや不適切なモジュールの使い方などをチェックすることが出来ます。
TravisCIは継続インテグレーションを行うことができるサービスで、Githubと連携して、リポジトリへのpush毎にビルドやテストなど処理を実行する事ができます。
今回はansible-lintを実行させてみました。
事前準備
Githubへの保存
- AnsibleのplaybookをGithubにpushします。
TravisCIの設定
- TravisCIのアカウントを作成します(Githubアカウントでログインできます。)
- TravisCIにログインすると自分のリポジトリを確認できるので、lintしたいリポジトリでスライダーをOFF→ONに移動します。
TravisCI設定ファイル(.travis.yml)の書き方。
リポジトリのルートディレクトリに以下のような.travis.yml
を作成してpushします。
この例ではsite.ymlをチェック対象にしています。
travis.yml
language: python
python:
- "2.7"
install:
- pip install ansible
before_script:
- pushd ../
- git clone https://github.com/willthames/ansible-lint.git
- export PYTHONPATH=$PYTHONPATH:`pwd`/ansible-lint/lib
- export PATH=$PATH:`pwd`/ansible-lint/bin
script:
- popd
- ansible-lint site.yml # change your playbook name
実行結果の確認
Push後にTravisCIでは.travis.yml
を自動的に読み込んでlintが実行されます。
結果が表示されることを確認します。
例えばunarchiveモジュールを使わずにshellモジュールでtarを実行していると以下の警告が表示されます。
[ANSIBLE0006] tar used in place of unarchive module
/home/travis/build/volanja/ansible-Redmine/roles/redmine/tasks/main.yml:0
Task/Handler: Extract tar.gz
バッジ
playbookのREADME.mdにTravisCIのバッジを貼っておけば、すぐに結果を確認することもできます。
lintで警告が出たところを優先的に修正しておきましょう。