【发布时间】:2019-01-29 06:25:48
【问题描述】:
我是 Chef 的新手,目前正在研究它。我们目前在 Windows 环境中使用 Chef Solo。我们每 3 个月发布一次产品。我们的组织使用 Chef 来设置生产构建环境、开发人员机器等。这些环境的设置涉及安装一堆开发人员工具,例如 Visual Studio、第 3 方软件等。设置环境所需的工具/软件列表可以在不同版本中不断变化。例如:如果产品版本 1.0 需要安装 Visual Studio 2015,则产品版本 2.0 可能需要 Visual Studio 2015 Update 1 等等。
更准确地说,对于特定的产品版本,所有服务器都应该具有相同的软件/配置。我们没有分期和生产的概念。我们在开发者系统上设置的构建环境应该与我们在生产盒上为特定产品版本设置的构建环境相同。
我们使用Chef的方式如下:
- 最终用户登录到服务器并以管理员权限启动 Powershell 控制台。
- 执行 Powershell 脚本。该脚本首先在客户端机器上安装 chef solo,并将所有 chef 脚本复制到本地。
- 然后执行 Chef 脚本以设置开发人员构建环境。
这是我的要求:我确实喜欢使用 chef 来为特定版本重新创建生产构建环境/开发人员构建环境。
例如:开发人员想要为产品版本 1.0 创建构建环境。厨师脚本应处理此要求。如果开发者想要为产品版本 2.0 创建开发者环境,厨师脚本也应该处理这个问题。
这可以使用 Chef 吗?我认为这是可能的,因为可以对 Chef 脚本进行版本控制。如果是这样,使用 Chef 实现此目的的方法是什么?
我想的一种方法是,我们可以在源代码控制 (Perforce) 中为每个产品版本标记厨师脚本。这样,每当我们想为特定产品版本设置开发人员环境时,我们都会通过使用标签来拉取该产品版本的相关脚本并设置环境。然而,这似乎不是一个足够好的方法。
是否有类似于所有源代码控制系统都提供的标签功能? Chef 中应该有一些东西可以做到这一点。
【问题讨论】:
-
在 slack 上给出的答案/指导,请不要交叉发布。
-
投票结束基于意见,因为有很多方法可以实现这一点。
-
@Tensibai 我只是想获得尽可能多的意见。我不会假设堆栈溢出的每个用户都处于松弛状态。因此,这里的更多答案将很有用。除非有足够充分的理由关闭此问题,否则我要求保持开放状态。
-
它是基于意见的,每个人都有自己喜欢的工作流程,除了意见之外,事实无法回答,因此超出了stackoverflow的主题
标签: chef-infra chef-recipe chef-solo