我是Chef的新手,目前我正在考虑它。我们目前在Windows环境中使用Chef Solo。我们每3个月发布一次产品。 Chef在我们的组织中用于设置生产构建环境,开发人员机器等。这些环境的设置涉及安装一堆开发人员工具,如Visual Studio,第三方软件等。设置环境所需的工具/软件列表可以不断更新版本。例如:如果产品版本1.0要求设置Visual Studio 2015,则产品版本2.0可能需要Visual Studio 2015 Update 1,依此类推。
更确切地说,对于特定产品版本,所有服务器都应具有相同的软件/配置。我们没有分期和生产的概念。我们在开发人员系统上设置的构建环境应该与我们在特定产品版本的生产盒上设置的构建环境相同。
我们使用Chef的方式如下:
这是我的要求:我确实喜欢使用chef来为特定版本重新创建生产构建环境/开发人员构建环境。
例如:开发人员希望为Product 1.0版创建构建环境。厨师脚本应该处理这个要求。如果开发人员想要为产品版本2.0创建开发人员环境,那么主厨脚本也应该处理这个问题。
使用Chef可以吗?我认为这是可能的,因为Chef脚本可以进行版本控制。如果是这样,使用Chef实现此目的的方法是什么?
我想的一种方式是,我们可以在源代码管理(Perforce)中为每个产品版本标记主厨脚本。这样,每当我们想要为特定产品版本设置开发人员环境时,我们通过使用标签并设置环境来提取该产品版本的相关脚本。然而,这似乎不是一个足够好的方法。
是否有与所有源控制系统可用的标签功能相似的内容?厨师应该有一些东西可以做到这一点。
答案 0 :(得分:1)
如果不同产品发布版本的要求大致相同,则可以使用1个配方,属性和角色来处理。
您为产品发布版本创建一个属性,并根据该属性在您的配方中执行一些逻辑。
然后,您为每个产品发布版本创建角色1,然后使用正确的值添加相同的属性。
在此之后,在配置环境时,您需要将角色传递给chef-solo,如:
chef-solo -o role[myrole]