ansible_specを試してみた
以前試したServerspecですが、Ansibleと連携するプロダクトがあるということで試してみました。 その名もansible_specです。 Ansibleで構成したサーバーの接続情報を共有したいというモチベーションはTestinfraと同様です。 やはり同じ接続設定をいろんなところに設定するのは避けたいところですよね。
インストール
gemでサクッとインストールします。特につまづくところはありませんでした。
| |
設定
ansibleの設定がおいてあるディレクトリで下記を実行。
| |
.ansiblespec の内容は下記の通りです。 dynamic inventoryもサーポートしていて、inventoruyにはansibleのiオプションで指定するdynamic inventoryを実現するpythonスクリプトを指定します。
| |
site.ymlは下記の通りです。 hostsにはEC2のtagを指定しています。KeyはNameです。 roleにはテストのある位置を指定しています。
| |
テストはAnsibleでいうroleと同じディレクトリに配置します。 今回は roles/apache/spec/apache_spec.rb にファイルをおきました。内容は以前ServerSpecを試した時のものと同じです。。 ファイル名は *_spec.rb の形式でないといけないようです。 ディレクトリ構成に関しては確かに多くの構成はroleベースで書くことが多いので、roleを前提としている構成は実用には困らないかもしれません。
| |
実行
rake allで実行してもいいのですが、rake -T でテスト対象を一覧表示した上で個別に実行できます。
| |
これでテスト実行できると思ったのですが、このままだとうまく実行できませんでした。 実行結果の一部抜粋です。
| |
自動生成される spec/spec_helper.rbspec を下記のように修正したら動きました。
| |
これで実行すると正しく動きました。 なんか設定が漏れているのかもしれませんが、一旦良しとしています。
| |
まとめ
インフラの構成管理とテストを色々試してきました。 Terraform, Ansibleを構成管理ツールとして、Testinfra又は Serverspec + ansible_spec で低レベルのテスト、infratasterで高レベルのテストを実施することができました。 それぞれのツールをもう少し深掘りしたいところですが、これでモダンなインフラへの入り口に立てたかなと思います。


