こちらの記事はAnsible lint Advent Calendar 2022 9日目の記事になります。
今回は作成したAnsibleコンテンツに対してAnsible lintをどのようにバージョンアップをしていくかを考察します。
Ansible lintをバージョンアップさせる方法はいくつかあるかと思います。今回はDependabotによるバージョンアップについて解説します。
Dependabotによるバージョンアップ
リポジトリサービスにGitHubを利用している事が前提になりますがDependabotと言う依存関係を解決するためのサービスが提供されています。このサービスを利用する事によりAnsible lintをはじめとするライブラリを自動でアップデートすることができます。
良い点
- 手軽に導入できる
- テストに利用したライブラリのバージョンをコードで明示できる
- ほぼ自動で依存関係がバージョンアップされる(競合が発生してもDependabotにより多くは解決される)
悪い点
- GitHubを利用している事が前提
- 常に最新版のAnsible lint、Ansibleで動作確認を行うためAnsibleのバージョンの固定が煩雑になる
Dependabotによるアップデートを行う例の解説
Dependabotを利用してAnsible lintを継続的にアップデートしていくサンプルです。
.github/dependabot.yml
で継続的にアップデートを行うライブラリの種類を設定します。今回はActionライブラリとpipを指定します。
---
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
今回のサンプルではテストフレームワークにMoleculeを採用しています。molecule/requirements.txt
へテスト実行時に利用するライブラリのバージョンを記載します。Dependabotはpipライブラリとmolecule/requirements.txt
を監視しpipライブラリの方でバージョンアップがあったらmolecule/requirements.txt
を更新するようにpull requestを作成します。
ansible==7.1.0
ansible-lint==6.9.1
molecule==4.0.4
molecule-docker==2.1.0
molecule/requirements.txt
を参照する事により対象のプロジェクトがどのバージョンのAnsible / Ansible lintで動作確認がされているのか確認できます。
そもそもAnsible lintのバージョンは上げるべきなのか?
判断が難しい部分かと思います。Ansible lintの性質上、Ansible Community Packageへ依存しておりAnsible lintのバージョンだけ上がってもAnsible Community Packageのバージョンが同時に上がらないと解決が難しい不具合が起きる可能性があります。
一番良いのはリリース・デプロイ環境等で実行するAnsible Community Packageのバージョンに合わせて採用するAnsible lintのバージョンも同時期にリリースされたバージョンに合わせる
ことかと思います。