【发布时间】:2017-01-12 15:48:34
【问题描述】:
我们最近开始为持续部署场景实施适当的基于 CI 的构建管道,并决定使用 Chef 作为我们的 CM 工具。我们还使用 Vagrant 为我们的开发人员创建隔离的本地开发环境,因为它允许简单的“vagrant up”并且环境只是运行。 Vagrant 应该支持 Chef Zero,它确实如此。但是,这需要将预下载的说明书保存在“说明书”目录中,这意味着如果没有“数据包管理器”,管理依赖项及其版本将是一个巨大的痛苦。
我想做的是使用 Policyfile 或 Berksfile 来管理说明书依赖项。不幸的是,这不起作用(或者我做错了什么)。首先,我找不到使用 Vagrant 实现 Policyfile 的方法,尽管该功能是在 2 年前发布的。唯一弹出的是this。 Berkshelf 方式更有希望,因为 Vagrant 有一个 'vagrant-berkshelf' 插件,它完全符合我的要求......但有一些小问题。问题之一是对 ChefDK 的依赖。然而,主要的一点是它已被弃用,取而代之的是 TestKitchen。
所以,TestKitchen,这个简洁的工具引起了很多关注。它同时支持 Policyfiles 和 Berkshelf,它有一个使用 Vagrant 运行 VM 的 Vagrant 提供程序。那么有什么问题呢?据我了解,Chef 的 TestKitchen 是为 Cookbook 开发人员设计的,因为它允许自动化本地 Cookbook 测试等。但是其他开发人员呢?例如,如果开发人员只在项目(应用程序)本身上工作,而不是基础设施,为什么开发人员甚至需要 ChefDK?开发人员想要做的就是下载应用程序的源代码(在我们的例子中是 Web 应用程序),其中包括根目录中的 Vagrantfile,然后只需输入“vagrant up”(因为机器上已经安装了 VirtualBox 和 Vagrant)和开始工作!
是的,可以将 TestKitchen 用作 Vagrant 包装器(this guy 说这很好)。开发人员不会输入“vagrant up”,而是输入“kitchen blend”,然后开始工作。但这意味着开发人员已经安装了 ChefDK,以及 VirtualBox 和 Vagrant。
是否有任何 [好的和现代的] 不使用 TestKitchen 作为开发环境提供者的方法?或者它不被认为是一种不好的做法?对我来说,如果开发人员想在他的笔记本电脑上旋转开发环境,他必须安装 ChefDK 似乎很奇怪。您是如何设置开发环境的?
【问题讨论】:
-
为什么安装 chefdk 不如 vagrant 和一堆插件来支持 chef 作为 vagrant 供应商?这个问题可能是高度基于意见的,因此不适合 StackOverflow。
-
Tensibai 好..我现在只能希望它不会被否决 =) 感谢您的意见!
-
嗯,这个问题对我来说很清楚,可能对其他媒体有用(可能在邮件列表discourse.chef.io 上)。所以没有理由反对它,我确实根据意见投票关闭它,但我认为它不值得反对。
-
我认为您不需要整个 chefDK,只需将 test-kitchen 安装为 rubygem 即可。
标签: vagrant chef-infra development-environment test-kitchen berkshelf