1

今日シェフと遊んだばかりですが、頭を悩ませることができないのは、データバッグを使用して複数のキー値を 1 つのアイテム (1 つのバッグ > 1 つのアイテム > 多くのキー値) に格納する方法です。レシピ内でそれらを 1 つずつ呼び出します。

データバッグのディレクトリが存在する場合、ディレクトリを削除する簡単なテストを次に示します。

directory 'bag_item[installvar.testbag]['testdir'])' do
  action :delete
  only_if { Dir.exist?(bag_item[installvar.testbag]['testdir']) }
end

明らかに私はインデックスを正しく使用していませんが、私はルビーにまったく強くありません。数週間前までルビーが何であるかを知りませんでした...すべてのグーグルは、複数のアイテムの大量使用の例をこれは私が達成しようとしているものではありません。databag は installvar itemID は testbag で、取得しようとしているキーは testdir です。

4

2 に答える 2

0

非常に基本的な Ruby の紹介については、https://docs.chef.io/ruby.htmlをご覧ください。data_bag_item()メソッド呼び出しによって返されるアイテムは、ほとんどの点でハッシュのように機能するため、具体的にはハッシュ セクションを見てください。各バッグ項目は、本質的に JSON 互換のハッシュです。

于 2016-04-20T22:35:41.493 に答える
0

解決策は簡単です:

var = data_bag_item('installvar', 'testbag')
  dir = var['testdir']

directory "#{dir}" do
  action :delete
  only_if  Dir.exist?("#{['dir']}")
end

これは機能します。

于 2016-04-21T16:35:36.747 に答える