我们最近开始为持续部署场景实现基于CI的正确构建管道,并决定使用Chef作为我们的CM工具。我们还使用Vagrant为我们的开发人员创建隔离的本地开发环境,因为它允许简单的“流浪者启动”,并且环境只需运行即可。流浪汉应该支持零号厨师,它确实是这样做的。然而,这需要将预先下载的食谱保存在“食谱”目录中,这意味着如果没有“包管理器”,管理依赖项和它们的版本将是一个巨大的痛苦。
我想要做的是使用Policyfile或Berksfile来管理食谱依赖关系。不幸的是,这不起作用(或者我做错了什么)。首先,我找不到使用Vagrant实现Policyfile的方法,尽管该功能已经发布两年了。唯一出现的就是this。伯克架的方式更有前途,因为有一个‘流浪汉-贝克架’插件为Vagrant,它所做的正是我want...but的几个小问题。其中一个问题是对ChefDK的依赖。然而,主要的一点是,它已经被弃用,取而代之的是TestKitchen。
所以,TestKitchen,关于这个整洁的工具有很多小题大做。它同时支持Policyfiles和伯克架,它有一个使用Vagrant运行VM的Vagrant提供程序。那么到底出了什么问题呢?据我所知,厨师的TestKitchen是为Cookbook开发人员设计的,因为它允许自动化的本地Cookbook测试,等等。但是其他开发人员呢?例如,如果开发人员只在项目(应用程序)本身工作,而不是基础设施,为什么开发人员甚至需要ChefDK?所有开发人员想要做的就是下载应用程序(在我们的例子中是web应用程序)的源代码,其中包括根目录中的Vagrantfile,然后简单地输入'vagrant up‘(因为VirtualBox和Vagrant已经安装在机器上了)并开始工作!
是的,可以将TestKitchen用作Vagrant包装器(this guy说这很好)。开发人员会输入“厨房聚合”,然后开始工作,而不是“流浪向上”。但这意味着开发人员已经安装了ChefDK,以及VirtualBox和Vagrant。
有没有什么好的和现代的方法来不使用TestKitchen作为开发环境提供商?或者这不被认为是一种糟糕的做法?在我看来,如果开发人员想要在他的笔记本电脑上旋转开发环境,他必须安装ChefDK,这似乎很奇怪。你如何设置你的开发环境?
发布于 2017-01-18 18:13:22
我们使用Jankins来更新chef-server上的食谱。此外,我们还使用伯克架来控制食谱依赖关系。
流浪者可以使用chef-client来配置机器。它连接到chef-server,获取最新的食谱/环境/角色,并配置机器。
它可以工作,但需要花费大量时间来配置流浪者机器。所以它目前是有效的,但我们正在寻找一些更好的选择。
chef-zero可以用于调试(但最好使用测试厨房),我认为它不适合您想要的工作流。
此外,你可以查看这些流浪插件,它们真的很有帮助:vagrant-omnibus, vagrant-cachier, vagrant-vbguest, vagrant-hostsupdater, vagrant-notify
发布于 2017-01-13 03:51:02
构建的策略文件工作流期望使用Chef Server和chef-client。因此,您通常会通过Vagrant中的chef_client配置器使用它。不过,这可能不是您想要的工作流程。可以构建一些使用策略导出系统和一些花哨的文件技巧来制作类似Berks的Vagrant插件,但您必须自己做这件事。
大多数厨师世界已经停止使用Vagrant来设置开发环境,转而使用云系统,因为在VBox VM中创建“像生产一样”的东西通常不可能像您想象的那样。
https://stackoverflow.com/questions/41617428
复制相似问题