- 厨师教程
- 厨师 - 主页
- 厨师 - 概述
- 厨师 - 建筑
- Chef - 版本控制系统设置
- 厨师 - 工作站设置
- Chef - 客户端设置
- 厨师 - 测试厨房设置
- 厨师 - 刀具设置
- 厨师 - 独奏设置
- 厨师 - 食谱
- Chef - 食谱依赖项
- 厨师 - 角色
- 厨师 - 环境
- Chef - Chef-Client 作为守护进程
- 厨师 - Chef-Shell
- 厨师 - 测试食谱
- 厨师 - 美食评论家
- 厨师 - ChefSpec
- 使用测试厨房测试食谱
- 厨师 - 节点
- 厨师 - 厨师-客户运行
- 高级厨师
- 动态配置菜谱
- 厨师 - 模板
- Chef - 带有 Chef DSL 的纯 Ruby
- 厨师 - 红宝石宝石与食谱
- 厨师 - 图书馆
- 厨师 - 定义
- Chef - 环境变量
- 厨师 - 数据袋
- Chef - 数据包脚本
- Chef - 跨平台食谱
- 厨师 - 资源
- 轻量级资源提供者
- 厨师 - 蓝图
- Chef - 文件和包
- 厨师 - 社区食谱
- 厨师有用的资源
- 厨师 - 快速指南
- 厨师 - 有用的资源
- 厨师 - 讨论
厨师 - 数据袋
厨师数据包可以定义为可以与食谱一起使用的任意数据集合。当人们不希望在菜谱中硬编码属性也不希望在菜谱中存储属性时,使用数据袋非常有帮助。
工作方式
在以下设置中,我们尝试与 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 存储库中的一个目录。我们使用 Knife 在服务器上创建它。