Ansible Lintのカスタムルールをパッケージングしてインストールしてみた


ansible-lint 4.3.1から動的に自作したカスタムルールを読み込める仕組みが導入されました。


この実装によって、自作したカスタムルールをパッケージングして配布することが可能になったので、その方法について簡単にですがメモしておきます。

カスタムパッケージの動的読み込みの利点

  • コマンドのオプションでカスタムルールのディレクトリを指定しなくてもよい
  • 標準カスタムルールを作成してパッケージングしておくことで組織内に配布・導入しやすくなった
  • pipでインストールできるためシンプルに対応できる

カスタムルール導入方法

導入方法については以下のサンプルを元に説明します。

環境

ここでは Python 3.6 以上を想定しています。

事前準備

事前準備として venv を作成します。

ansible-lintを実行するには依存関係でansibleが必要になるので、ここではansible-coreをインストールします。

ここで詳細に説明しないこと

  • Ansible Lintのカスタムルールの作り方
  • Pythonのパッケージングのやり方
  • PyPIへの登録

カスタムルールについて

サンプルで作ったカスタムルールはタスクの名前が Example で始まっていた場合、警告が発生するようにしています。

Pythonパッケージングについて

サンプルにあるファイルと以下を参照ください。

チュートリアル

もし、パッケージングをしたことない人であればチュートリアルを先にやった方が理解ができると思いますので、リンクとして貼り付けておきます。

setuptools

setup.cfg については上記ドキュメントを参照ください。

カスタムルールインストール先

パッケージのインストール時にカスタムルールは以下のパスに保存するようにしてください。

パッケージを作成してインストール

pipでbuildモジュールをインストールします。

GitHubからサンプルをクローンします。

パッケージを作成します。

パッケージをインストールします。

GitHubからインストール

GitHubから直接インストールする場合は以下のように実行します。

動作確認

カスタムルールがインストールされたか確認します。

LintでテストするサンプルのPlaybookを作成します。

ansible-lintを実行してみましょう。

動きました 🙂
補足ですが、インストールしたカスタムルールの具体的なパスは次の通りです。

パッケージ化して配布できるのは便利ですね 🙂

Leave a Reply

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください