AWS,Packer,Vagrant和Chef如何一起工作?

时间:2013-11-03 15:00:14

标签: amazon-web-services continuous-integration chef vagrant packer

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

我对一些更高级别的解释感兴趣,这些解释可以帮助指导某人围绕AWS,Packer,Vagrant和Chef建立完整的堆栈CI工作流程。额外的奖励是让它全部与NodeJS,Express服务器配合使用。

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

  1. Packer / Vagrant - 当用户Packer的AWS构建的Vagrant后处理器生成Vagrant Box时......那个盒子是独立的吗?我可以在AWS上删除该实例,该框仍可在本地使用吗?
  2. 有没有办法设置上面提到的Vagrant Box,您可以使用chef在本地进行测试,然后使用相同的packer / chef脚本在AWS上生成相同的AMI?我的想法是,你可以非常肯定结果是一样的。
  3. 任何有用的教程都会非常有用。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

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

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

  3. 为了向这些答案添加更多内容,Packer将创建“黄金图像”,这意味着您已经下载和配置了所需的一切。硬币的另一面甚至是配置文件的一个小改动可能意味着创建和上传一个全新的Box,可能是700多MB。

    一个良好的中间地带可能是使用Packer创建一个基本的Vagrant Box(例如很可能像Nginx和gcc一样保持不变的东西)并使用Vagrant和Chef配置来配置Box,包括设置Node和安装要求。

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

    还有一点,如果你还没有,你应该考虑控制你的Vagrant配置的版本。从小处着手也一点也不痛苦。