2

vagrant + Chef-solo + barkshelf プラグインを使用しています。私のVagrantfileにはこれがあります:

chef.json = {
  "postgresql" => {
    "password" => {
      "postgres" => "password"
    }
  },
  "database" => {
    "create" => ["chembl_18"]
  },
  "build_essential" => {
    "compiletime" => true
  }
}

ここにさらに構成を追加すると、私の Vagrantile はすぐに面倒になります。これを変更しようとしていたのでdatabags/postgresql/json_attribs.json、次の内容のファイルを作成しました。

{
  "postgresql": {
    "password": {
      "postgres": "iloverandompasswordsbutthiswilldo"
    }
  }
}

私のVagrantfileの変更された内容:

chef.json = {
  :postgresql => ["json_attribs"],
  "database" => {
    "create" => ["chembl_18"]
  },
...
}

しかし、うまくいきません。

==> default:  58>>   default['postgresql']['dir'] = "/etc/postgresql/#{node['postgresql']['version']}/main"
...
==> default: [2014-05-14T12:36:51+00:00] ERROR: Running exception handlers
==> default: [2014-05-14T12:36:51+00:00] ERROR: Exception handlers complete
==> default: [2014-05-14T12:36:51+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
==> default: [2014-05-14T12:36:51+00:00] FATAL: TypeError: can't convert String into Integer

では、これらの設定をいくつかの個別のファイルに分割するには、この設定をどこにどのように配置すればよいのでしょうか?

4

1 に答える 1

5

いいえ、レシピ コードを変更せずにデータ バッグに移動することはできません。

属性 (vagrant 構成を介して提供するもの) は、JSON データも格納するデータ バッグとは異なります。データ バッグ内のデータは、クックブックで明示的に読み取るまで、Chef Server 内に「横たわっている」だけです。

search()データ バッグからの読み取りは、data_bag()およびdata_bag_item()関数を介して行うことができます。ドキュメントを参照してください。

が乱雑になるのを避けるために、ロールまたはラッパーのクックブックVagrantfileを使用する必要があります。

于 2014-05-14T13:57:14.593 に答える