AnsibleのテストツールMoleculeでできること

2022.01.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは川村です。

以前、Ansibleのプレイブックを書いているときにテストが必要なのか気になったことがありました。

Ansibleのテストが可能なものは複数ありますが、今回はMoleculeについて書きます。

今回はMoleculeの説明だけで、導入や使い方については次回書きます。

Moleculeとは

AnsibleのRoleの開発、テストを支援してくれるツールです。

複数のOS,テストシナリオを使用したテストに対応しています。

Moleculeの実行時の流れ

Moleculeでは、テスト環境の作成→テスト→テスト環境の削除が行われます。

細かく分けると、以下の6つが実行されます。

  1. テスト環境の構築

    テスト環境を新規構築します。

    MoleculeではAnsibleがサポートしている環境(Docker,EC2など)の構築が可能です。

    Molecule内の定義ファイルへ、DockerやEC2などの構築したい環境を記載することができます。

  2. 文法チェック

    プレイブック内の文法があっているかが確認されます。

    文法が間違っていた場合、ここで実行が停止されます。

  3. プレイブックの実行

    新規構築されたテスト環境でMolecule上で指定したシナリオを実行します。

  4. テストコードの実行

    新規構築されたテスト環境がテストコードの内容と一致しているか確認されます。

  5. 再度プレイブックの実行

    冪等性が担保されているかの確認のため、テスト環境で再度プレイブックが実行されます。

    実行結果がchanged = 0にならない場合、デフォルト設定ではNGとなります。

  6. テスト環境の削除

    新規構築されたテスト環境を削除します。

 

上記の6項目はまとめて実行も可能ですが、途中までの実行も可能です。

そのため、5.再度プレイブックの実行までで停止し、

別途テスト環境にアクセスしてプレイブック実行後の状態を自分で確認することも可能です。

 

Moleculeが対応している環境

Ansibleのバージョン

  • 最新バージョン
  • 最新一つ前のバージョン

対応しているプロバイダ

  • Ansibleが対応しているプロバイダ全て(2022/1/26時点)

さいごに

Moleculeを何度か使ってみましたが、個人的にテスト環境の作成・削除をやってくれる部分が楽だと思いました。

まっさらな環境にプレイブックを流してテストするときの、手動で環境作成、作成した環境のSSH設定編集、インベントリ編集、、、

といった作業がなくなるので便利でよかったです。

参考:

Moleculeドキュメント

Ansibleドキュメントのテスト戦略