厨师从本地目录中提取
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
操作。
通常 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
操作。