📜  Chef-数据袋

📅  最后修改于: 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存储库中的目录。我们用刀在服务器上创建它。