📅  最后修改于: 2020-11-02 03:26:14             🧑  作者: Mango
厨师数据包可以定义为可以与食谱一起使用的任意数据集合。当人们不希望在食谱中对属性进行硬编码或在食谱中存储属性时,使用数据袋非常有用。
在以下设置中,我们尝试与http端点URL通信。为此,我们需要创建一个数据包,其中将保存端点URL详细信息并将其用于我们的配方中。
步骤1-为我们的数据包创建目录。
mma@laptop:~/chef-repo $ mkdir data_bags/hooks
步骤2-为请求容器创建一个数据袋项目。需要确保使用的是已定义的requestBin URL。
vipi@laptop:~/chef-repo $ subl data_bags/hooks/request_bin.json {
"id": "request_bin",
"url": "http://requestb.in/1abd0kf1"
}
步骤3-在Chef服务器上创建一个数据包
vipin@laptop:~/chef-repo $ knife data bag create hooks
Created data_bag[hooks]
步骤4-将数据包上传到Chef服务器。
vipin@laptop:~/chef-repo $ knife data bag from file hooks requestbin.json
Updated data_bag_item[hooks::RequestBin]
步骤5-更新食谱的默认配方,以从数据包中接收所需的食谱。
vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/recipes/default.rb
hook = data_bag_item('hooks', 'request_bin')
http_request 'callback' do
url hook['url']
end
步骤6-将修改后的食谱上传到Chef服务器。
vipin@laptop:~/chef-repo $ knife cookbook upload my_cookbook
Uploading my_cookbook [0.1.0]
步骤7-在节点上运行Chef客户端,以检查http请求bin是否得到执行。
user@server:~$ sudo chef-client
...TRUNCATED OUTPUT...
[2013-02-22T20:37:35+00:00] INFO: http_request[callback]
GET to http://requestb.in/1abd0kf1 successful
...TRUNCATED OUTPUT...
数据包是结构数据条目的命名集合。需要定义数据输入并在JSON文件中调用数据袋项目。也可以从配方中搜索数据袋项目,以使用存储在数据袋中的数据。
我们创建了一个名为hooks的数据包。数据包是Chef存储库中的目录。我们用刀在服务器上创建它。