【发布时间】:2020-11-24 16:35:20
【问题描述】:
通常,厨师节点中的厨师客户端从厨师服务器中提取更改。如何将厨师客户端指向具有我更改的本地文件夹。大厨 Solo 会帮忙吗
【问题讨论】:
标签: chef-infra
通常,厨师节点中的厨师客户端从厨师服务器中提取更改。如何将厨师客户端指向具有我更改的本地文件夹。大厨 Solo 会帮忙吗
【问题讨论】:
标签: chef-infra
我认为你是在正确的轨道上。我们可以使用chef-solo 在本地创建说明书并直接在节点上执行。
我们以节点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 操作。
【讨论】:
cookbook_path 里的所有食谱吗?如果您正在使用具有多个依赖项的说明书,那么您应该在该路径中拥有所有它们(及其版本)。