厨师从本地目录中提取

Chef to pull from local directory

通常 Chef 节点中的 Chef 客户端从有更改的 Chef 服务器中拉取。如何将厨师客户端指向包含我的更改的本地文件夹。索罗大厨会帮忙吗

我认为您的方向是正确的。我们可以使用 chef-solo 在本地拥有 cookbook 并直接在节点上执行它们。

让我们以节点node1.example.net为例,我们可以在其中包含一个配置文件solo.rb(可以是任何名称)。

solo.rb

cookbook_path '/home/user/.chef/cookbooks'
file_cache_path '/home/user/.chef/cache'
role_path '/home/user/.chef/roles'
data_bag_path '/home/user/.chef/databags'

如果此时我们运行chef-solo

chef-solo -c /home/user/.chef/solo.rb

不会有run_list所以什么也不会发生,但是会在.chef/nodes目录中创建一个<node name>.json,比如node1.example.net.json.

现在我们可以将食谱存储在 /home/user/.chef/cookbooks 下,并在 node1.example.net.json 文件的 run_list 中添加适当的食谱。

或者我们可以提供一个可选的 .json 文件,其中包含我们需要的 运行 列表。类似于 example.json:

{
  "name": "tftest-devops01.headquarters.healthedge.com",
  "chef_environment": "_default",
  "json_class": "Chef::Node",
  // some lines removed
  "run_list": [
    "recipe[my_cookbook]"
  ]
}

然后运行为:

chef-solo -c solo.rb -j example.json

厨师零

还有一个 chef-zero,它可以帮助 运行 一个“本地”(内存中)Chef 服务器模仿 Chef 服务器的功能,允许我们执行 knife 操作。