gpt4 book ai didi

ruby - 如何使用我的 Vagrantfile 中的 Chef 数据包?

转载 作者:数据小太阳 更新时间:2023-10-29 07:56:07 27 4
gpt4 key购买 nike

我正在尝试使用 Fnichol's Chef User当我运行 vagrant up 时,使用 Vagrant 自动创建一个特定的用户帐户。因为我几乎为我从事的每个项目都设置了这个用户,所以我想将用户数据存储在一个 data bag 中,我正在从一个 JSON 文件中加载它,我可以在多个项目上重复使用项目。

这是我的 Vagrantfile 目前的样子:http://pastebin.com/b0riZZCz

失败并出现错误:

[2014-01-20T16:09:39+00:00] ERROR: could not find recipe ben for cookbook user

我创建了一个名为“users”的数据包,并在该数据包内创建了一个名为“ben”的数据包项,来自以下 JSON:

{
"id": "ben",
"comment": "Ben Harold",
"groups": ["admin", "www-data"],
"ssh_keys": ["...longtextstring..."],
"ssh_keygen": false
}

我正在尝试按照 http://fnichol.github.io/chef-user/ 上的使用说明进行操作到:

  1. 导入 Chef Users Recipe
  2. 告诉 Chef Users 配方从数据包 users
  3. 中创建用户 ben

在我看来,Vagrantfile 中的 Chef 配置语法与大多数可用文档中提供的语法有很大不同。例如:

"Simply include recipe[user] in your run_list and the user_account resource will be available."

我对 run_list 的定义以及 recipe[user] 语法感到困惑。来自Vagrant documentation ,似乎我的 run_list 就是这个 block 中的所有内容:

config.vm.provision :chef_solo do |chef|
chef.add_recipe "apt"
...etc...
end

但是,我已经also found referenceschef.run_list 在该 block 中定义,尽管我无法找到任何专门引用 chef.run_list 的文档。

问题一

run_list 只是 config.vm.provision :chef_solo do |chef| block 中的代码,还是其他内容?

问题2

chef.run_list 的文档在哪里?我不是在寻找 Chef 站点上的文档。语法对我来说似乎完全不同。

我已经搞砸了好几个小时了。我尝试了一堆不起作用的东西。我能够导入 Chef User Recipe ,但我一直无法弄清楚如何告诉 Chef 针对 数据包运行 user Recipe 项目“本”。

问题3

如何让 Chef 使用 data bag item“ben”运行 user Recipe ?还是我做的完全错了?

最佳答案

答案 1

不,run_list 实际上只是一个字符串数组,代表应该在 Vagrant Machine 上运行的配方/角色。 add_recipe 将新 Recipe 添加到此列表中。像那样:

config.vm.provision :chef_solo do |chef|
[...]
chef.add_recipe 'cookbook::recipe' #now run_list has it in
chef.add_role 'myrole' #now run_list has a role too
#adding more recipes from ENV variable, just as example
chef.run_list += ENV['CHEF_RUN_LIST'].split ',' if ENV.has_key? 'CHEF_RUN_LIST'
[...]
end

答案 2

您正在编辑 Vagrantfile,因此文档在 Vagrant site

答案 3

你需要告诉 Vagrant 你的 Recipe 、数据包和角色在哪里。

config.vm.provision :chef_solo do |chef|
[...]
chef.cookbooks_path = 'cookbooks' #paths are relative to Vagrantfile location
chef.roles_path = 'roles'
chef.data_bags_path = 'data_bags'
[...]
end

关于ruby - 如何使用我的 Vagrantfile 中的 Chef 数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21239162/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com