【发布时间】:2015-08-23 09:23:16
【问题描述】:
我正在尝试设置工作流程以在本地开发 Chef 食谱。我们目前正在使用 Chef Server 和使用 chef-client 配置的节点。
作为新工作流程的一部分,我们希望能够开始使用 Vagrant 在本地测试说明书,以避免产生在云中的远程机器上进行测试的成本。
我能够启动和配置本地 Vagrant 机器,但我不太确定如何做的一件事是让 Chef 加载本地版本的食谱,但仍然与 Chef 服务器对话以获取所有内容其他(环境、角色、数据包等),所以我不必在每次进行更改时都通过刀上传菜谱来测试。这可能吗?
换句话说,我可以让 Chef-client 与本地 Chef-zero 服务器仅针对食谱进行对话,而与远程 Chef 服务器对话以获取其他所有内容吗?或者可能会产生相同效果的不同方法?我愿意接受建议。
更新
我认为一个例子将有助于表达我在寻找什么。我意识到这可能不是我真正需要的,但我很好奇如何实现它。在这种情况下,配方从存储在远程 Chef 服务器中的数据包中读取
元数据.rb
name 'proxy-cookbook'
version '0.0.0'
.kitchen.yml
---
driver:
name: vagrant
provisioner:
name: chef_zero
platforms:
- name: ubuntu-12.04
suites:
- name: default
run_list:
- recipe[proxy-cookbook::default]
attributes:
食谱/default.rb
...
key = data_bag_item("key", "main")
....
现在,我知道我可以按照以下方式创造一些东西:
data_bags/main.json
{
"id": "main",
"key": "s3cr3tk3y"
}
让我的厨房测试从那个数据包中读取;但这正是我想要避免的。是否可以:
- 指示 test-kitchen 从 Chef 服务器获取实际数据包,
- 让 chef-zero 检索数据包的临时副本以进行本地测试,或者
- 在本地快速“转储”远程 Chef 服务器的内容?
我希望这是有道理的。如有必要,我可以添加一些上下文。
【问题讨论】:
-
我建议使用test-kitchen。
-
@StephenKing 我也在尝试实现 test-kitchen 的使用,它真的很有用,但看起来这只会改变问题,因为我现在不是能够与我的厨师服务器交谈非食谱的东西,比如数据包和环境。我希望能够让 test-kitchen 与 Chef 服务器就所有除了菜谱进行对话,或者可能是一种不同的方法,比如除了菜谱之外让 chef-zero 代理所有内容,这有意义吗?
标签: vagrant chef-infra