Vagrant和Chef的开发环境

时间:2017-01-12 15:48:35

标签: vagrant chef development-environment test-kitchen berkshelf

我们最近开始为持续部署方案实施适当的基于CI的构建管道,并决定使用Chef作为我们的CM工具。我们还使用Vagrant为我们的开发人员创建孤立的本地开发环境,因为它允许一个简单的流浪汉。并且env刚刚运行。 Vagrant应该支持Chef Zero,它确实如此。然而,这需要在烹饪书中保存预先下载的烹饪书。 dir,意思是管理依赖关系及其版本将是一个巨大的痛苦,没有"数据包管理器"。

我想要做的是使用Policyfile或Berksfile来管理cookbook依赖项。不幸的是,这不起作用(或者我做错了什么)。首先,我找不到使用Vagrant实现Policyfile的方法,即使该功能是在2年前发布的。唯一出现的是this。 Berkshelf方式更有前途,因为有一个流浪汉 - berkshelf' Vagrant的插件,它完全符合我的要求......但有一些打嗝。其中一个问题是对ChefDK的依赖。然而,主要的一点是,它有点被弃用以支持TestKitchen。

所以,TestKitchen,这个简洁的工具已经引起了很大的关注。它支持Policyfiles和Berkshelf,它有一个使用Vagrant运行VM的Vagrant提供程序。那有什么不对?据我所知,Chef的TestKitchen专门用于Cookbook开发人员,因为它允许自动本地Cookbook测试,等等。但是其他开发者呢?例如,如果dev只适用于项目(app)本身,而不适用于基础架构,为什么开发人员甚至需要ChefDK?所有开发人员想要做的是下载应用程序的源代码(在我们的例子中是web应用程序),其中包括root目录中的Vagrantfile,然后只需键入' vagrant up' (因为VirtualBox和Vagrant已安装在机器上)并开始工作!

是的,可以使用TestKitchen作为Vagrant包装器(this guy表示没问题)。而不是“流浪汉”,开发者会输入“厨房融合”。然后开始工作。但这意味着dev已经安装了ChefDK,以及VirtualBox和Vagrant。

有没有[好的和现代的]不使用TestKitchen作为开发环境提供者的方法?或者它不被认为是一种不好的做法?对我来说,如果他想在他的笔记本电脑上旋转开发环境,开发者必须安装ChefDK似乎很奇怪。你如何设置开发环境?

2 个答案:

答案 0 :(得分:1)

我们使用Jankins来更新chef-server上的cookbook。此外,我们使用Berkshelf来控制cookbook依赖项。

Vagrant可以使用chef-client配置机器。它连接到厨师服务器获取最新的烹饪书/环境/角色并配置机器。

它可以工作,但是需要花很多时间来配置流浪汉机器。所以它现在有用,但我们正在寻找更好的选择。

chef-zero可用于调试(但最好使用测试厨房),我认为它不适合您想要的工作流程。

另外,你可以查看这些流浪插件,它们真的很有帮助:vagrant-omnibus, vagrant-cachier, vagrant-vbguest, vagrant-hostsupdater, vagrant-notify

答案 1 :(得分:0)

构建了policyfile工作流程,期望使用Chef Server和chef-client。因此,您通常会通过Vagrant中的chef_client配置程序使用它。这可能不是您想要的工作流程。有可能构建一些使用策略导出系统的东西和一些花哨的文件技巧来制作类似Berks的Vagrant插件,但你必须自己做。

大多数Chef世界已停止使用Vagrant来设置开发环境,转而支持云系统制作某些东西,例如生产和#34;在VBox VM中通常不可能像你想象的那样。