4

这可能是我在 stackoverflow 上问过的最复杂的问题,但我认为所有持续集成新手都可能真正从中受益。首先,我已经阅读了大量的文档和许多“入门”教程来理解这一切,但我错过了将它们联系在一起的更大的图景。

我对更高层次的解释很感兴趣,它可以帮助指导某人围绕 AWS、Packer、Vagrant 和 Chef 建立一个完整的堆栈 CI 工作流程。额外的好处是将它与 NodeJS、Express 服务器捆绑在一起。

以下是我发现很难从所有主题的所有文档中找出的一些陷阱。

  1. Packer/Vagrant - 当用户 Packer 的 AWS 构建的 Vagrant 后处理器生成 Vagrant Box 时......该盒子是独立的吗?我可以删除 AWS 上的实例,并且该框仍然可以在本地工作吗?
  2. 有没有办法设置上面提到的 Vagrant Box,您可以使用 Chef 在本地进行测试,然后使用相同的打包程序/厨师脚本在 AWS 上生成相同的 AMI?我的想法是,你可以很确定结果会是一样的。

任何有用的教程也会非常有帮助。

4

2 回答 2

2

查看来自 Vagrant/Packer 的创建者的 Codeship 客座帖子。这可能会帮助您更轻松地开始。

http://blog.codeship.io/2013/11/07/building-vagrant-machines-with-packer.html

你第二个问题的前提说明了一切。这个想法是您使用相同的设置脚本(chef、puppet、ansible、bash 等)构建映像、AMI、virtualbox 等,并部署到不同的目标 VM 环境。

于 2013-11-29T21:47:46.750 回答
1

我或多或少和你在同一条船上,刚刚开始涉足 devops 世界,但我会尽力回答。

  1. 您应该能够删除您的 AWS 实例,并且您创建的 Vagrant 框仍然可以使用;您甚至不必配置 AWS 实例,只需创建一个 Vagrant 框。

  2. 您可以使用 Packer 设置开发盒,并使用相同的配置与 Packer 一起部署;据我了解,这是 Packer 试图解决的问题。

为了给这些答案添加更多内容,Packer 将创建“黄金图像”,因为您需要的所有内容都已下载和配置,所以速度很快。硬币的另一面,即使是对配置文件的一个小改动,也可能意味着创建和上传一个全新的 Box,它可能是 700+ MB。

一个好的中间立场可能是使用 Packer 创建一个具有基础的 Vagrant Box(例如最有可能保持不变的东西,如 Nginx 和 gcc),并使用 Vagrant 和 Chef 配置来配置该 Box,包括设置 Node 和安装要求.

然后,当您准备好部署时,您可以使用 Packer 和相同的 Chef 配置来启动 AWS 实例。当然,这将创建一个新实例,而不是重新配置现有实例;我不确定 Packer 是否可以做到这一点,但 Chef 非常适合配置管理的角色。

额外的一点,如果你还没有,你应该考虑版本控制你的 Vagrant 配置。同样,从小处着手并逐步提高也永远不会受到伤害。

于 2013-11-03T15:52:23.103 回答