moleculeのdelegatedドライバを使ってVMware環境にテスト用インスタンスを作成する方法


以前、moleculeのVMwareドライバを使ったAnsibleロールのテスト方法についてblogを書きました。

ただし、上記の記事はVMwareドライバのPRがWIPになっており、マージされていません。
そこで、ここでは delegated ドライバを使った方法を試してみます。
delegated ドライバを使う目的の一つとして、ドライバが存在していないがテスト用インタンスを、その環境に作りたい場合などが考えられます。
delegated ドライバを使うにはテスト用インスタンスを用意するPlaybookなどを書かなくてはいけないので大変ですが、やり方さえ分かってしまえば色々と自由度が広がると思います。

環境

項目 バージョン 備考
vCenter 6.7.0
molecule 2.22
OS CentOS 7.6 moleculeを実行するOS
Template OS CentOS 7.6 ロールのテストで使うテンプレート

delegatedドライバを使うために必要なファイル

以下のファイルをユーザーで用意する必要があります。

ファイル 必要 説明
create.yml True テスト用インスタンスを用意するためのPlaybook
prepare.yml False テストを実行する前に実行するタスクを記述するPlaybook
destroy.yml True テスト用インスタンスを削除するためのPlaybook

今回作った階層

今回は以下の hello ロールを作りました。
あくまでも動作を確認するテスト用なので、ただメッセージを表示するだけのロールです。

順番にファイルを見ていきます。

ファイル

create.yml

以下のPlaybookはVMware環境にテスト用のインスタンスを作成するものです。
テンプレートからVMをクローンしてSSHの鍵を埋め込みmoleculeが接続できるようの設定を作っています。
create.yml では インスタンスの作成インスタンスへの接続用の設定ファイル作成 をすればいいです。

destroy.yml

以下のPlaybookはVMware環境に作成したインスタンスを削除するものです。
destroy.yml では インスタンスの削除 をすればいいです。
ただし molecule test の初回でも実行されるので、存在しない場合はエラーにならないようにする必要があります。

prepare.yml

これは任意のファイルです。
テスト用のインスタンスでロールを実行する前にやっておくタスクを記述します。
ここでは、動作を確認するために以下のPlaybookを作成しました。

molecule.yml

molecule.yml は以下のようにしました。
driverplatforms は自作した create.yml destroy.yml から呼べるようにキーを追加しています。

その他のmolecule設定については詳しく説明しませんので、以下のドキュメントを参照ください。

playbook.yml

テストするPlaybookは標準で作成されたものをそのまま使います。

yamllint.yml

以下は、yamllintの対象外ファイルリストを作りました。

デモ

以下がデモ動画です。

Demo to create test instance in VMware using delegated driver from sky_joker on Vimeo.

最後に

delegated ドライバを使うことでVMware環境にもテスト用インスタンスが作成できることが確認できました 🙂
標準ドライバで大体のことは出来てしまうと思いますが、例外の場合はdelegatedドライバで自由に環境が作れますね。

moleculeを使ってテストも自動化してみんなでハッピーオートメーション!

参考

Leave a Reply

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

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