前回のエントリでTest KitchenとDocker、Serverspecの設定手順を書きました。
今回は自作Ohaiプラグインを使ったレシピのテストを行う方法です。
何もせずにTest Kitchenで自作Ohaiプラグインを使おうとするとエラーになります。
具体的には自作Ohai変数をテンプレートに埋め込んでいる場合値が空になってしまいます。
色々試行錯誤してみたところ、以下のような設定でうまくいきました。
前提
まず、自作Ohaiプラグインファイルを以下ディレクトリに配置します。
/root/chef/repo/site-cookbooks/centos6/files/default/plugins
※/root/chef/repo/site-cookbooks/centos6/
までは
筆者のクックブックのパスなのでご自身のパスに読み替えてください。
files/default/plugins
以下に配置しておきます。
Test Kitchen設定ファイルの修正
次にTest Kitchenの設定ファイルの修正です。
この.kitchen.yml
ファイルは
/root/chef/repo/site-cookbooks/centos6/.kitchen.yml
に配置してあります。ここも適宜読み替えてください。
--- driver: name: docker provisioner: name: chef_solo solo_rb: Ohai::Config[:plugin_path] << : /tmp/kitchen/cookbooks/centos6/files/default/plugins
solo.rb
に
Ohai::Config[:plugin_path] << : /tmp/kitchen/cookbooks/centos6/files/default/plugins
と追記します。
こうすることでTest Kitchenによって起動したインスタンス内のsolo.rbファイルに
Ohai::Config[:plugin_path] << "/tmp/kitchen/cookbooks/centos6/files/default/plugins"
と追記されます。
確認
実際にTest Kitchenによって起動されたインスタンスにログインを行い状態を確認してみます。
もう一度kitchenコマンドを実行します。
今度は以下のようなオプションを付けます。
kitchen test --destroy=never
通常はテスト後dockerインスタンスは破棄(destroy)されますが
このオプションを付けると破棄されずインスタンスが起動し続けます。
インスタンスの起動状態は
kitchen list
で確認出来ます。
表示例
[root@test centos6]$ kitchen list Instance Driver Provisioner Last Action default-centos-65 Docker ChefSolo Verified [root@test centos6]#
さてインスタンスにログインしてみます。
kitchen login
を実行します。
インスタンスにkitchenユーザでログインすることになります。
パスワードを聞かれますが、ユーザ名と同じkitchen
です。
[root@test centos6]# kitchen login kitchen@localhost's password: Last login: Thu Jul 31 13:31:11 2014 from 172.17.42.1 [kitchen@7dd079c23c0d ~]$
無事ログイン出来ました。
いよいよsolo.rb
を見てみます。
以下のように最終行に追記されていることが確認出来ます。
/tmp/kitchen/solo.rb
node_name "default-centos-65" checksum_path "/tmp/kitchen/checksums" file_cache_path "/tmp/kitchen/cache" file_backup_path "/tmp/kitchen/backup" cookbook_path ["/tmp/kitchen/cookbooks", "/tmp/kitchen/site-cookbooks"] data_bag_path "/tmp/kitchen/data_bags" environment_path "/tmp/kitchen/environments" node_path "/tmp/kitchen/nodes" role_path "/tmp/kitchen/roles" client_path "/tmp/kitchen/clients" user_path "/tmp/kitchen/users" validation_key "/tmp/kitchen/validation.pem" client_key "/tmp/kitchen/client.pem" chef_server_url "http://127.0.0.1:8889" encrypted_data_bag_secret "/tmp/kitchen/encrypted_data_bag_secret" Ohai::Config[:plugin_path] << "/tmp/kitchen/cookbooks/centos6/files/default/plugins"