22

mysql クックブックなどの多くのクックブックには、複数の .kitchen.yml ファイルがあります。たとえば、mysql には .kitchen.yml と .kitchen-cloud.yml があります。.kitchen.ymltest-kitchen のドキュメントとコードを見ると、 、.kitchen.local.yml、および以外の構成ファイルを使用する方法がわかりません~/.kitchen/config.ymlmysqlクックブックのクラウド ドライバーを使用したい場合は、次のようにします。

  • cp .kitchen-cloud.yml .kitchen.yml
  • cp .kitchen-cloud.yml .kitchen.local.yml
  • 他の何か??

デフォルトのものをブルートフォースで置き換える代替構成ファイルを使用するためのよりクリーンなアプローチが必要なようです。

ありがとう

4

4 に答える 4

32

Kitchen には、考えられる各構成ファイルを探す場所を制御するための 3 つの環境変数が用意されています。デフォルトの動作を明示的にするには、次のように設定できます。

KITCHEN_YAML="./.kitchen.yml"
KITCHEN_LOCAL_YAML="./.kitchen.local.yml"
KITCHEN_GLOBAL_YAML="$HOME/.kitchen/config.yml"

それらすべてをオーバーライドする必要はないため、次のように test-kitchen を実行できます.kitchen-cloud.yml

$ KITCHEN_YAML=".kitchen-cloud.yml" kitchen test
于 2014-10-22T21:06:53.913 に答える
3

1 つのキッチン ファイルで複数のドライバーをサポートするための解決策を探しているときに、この質問を見つけました。Ives の回答は非常に役に立ちました。私はそれを次のように調整しました。

  • vagrant ドライバーのデフォルト
  • ユーザーが KITCHEN_DRIVER 環境変数でドライバー設定をオーバーライドできるようにする
  • インストールされている場合は、docker_ssh ドライバーを選択します。
---
<%
require 'rubygems'
kitchen_driver = 'vagrant'

if ENV['KITCHEN_DRIVER']
    kitchen_driver = ENV['KITCHEN_DRIVER']
elsif Gem::Specification::find_all_by_name('kitchen-docker_ssh').any?
    kitchen_driver = 'docker_ssh'
end
%>

driver:
  name: <%= kitchen_driver %>
于 2015-07-16T03:28:53.750 に答える