AWS,Packer,Vagrant和Chef如何协同工作?

4
这可能是我在stackoverflow上提出的最复杂的问题,但我认为所有CI新手都可以从中受益。首先,我已经阅读了大量文档和许多“入门”教程来理解这一切,但我缺少将它们联系起来的更大的图景。
我感兴趣的是一个更高层次的解释,可以帮助指导如何设置围绕AWS、Packer、Vagrant和Chef的完整堆栈CI工作流程。额外的奖励是将其全部与NodeJS、Express服务器绑定在一起。
以下是我在所有话题的所有文档中发现很难梳理出的几个陷阱:
  1. Packer/Vagrant - 当使用Packer的Vagrant后处理器构建AWS生成Vagrant Box时,该Box是否是独立的?我可以删除AWS上的实例,Box仍然可以在本地工作吗?
  2. 是否有一种方法可以设置上述提到的Vagrant Box,以便您可以在本地使用chef进行测试,然后使用相同的packer/chef脚本生成相同的AMI用于AWS?我的想法是,然后您就可以相当确定结果将是相同的。
任何有用的教程也将非常有帮助。
2个回答

2
请看这篇来自Vagrant/Packer的创作者在Codeship上的客座文章。这可能会让你更轻松地开始。

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

你的第二个问题的前提已经说明了一切。意思是你要使用相同的设置脚本(chef、puppet、ansible、bash等)构建镜像、AMI、virtualbox等,并部署到不同的目标虚拟机环境中。

1
我和你差不多,刚开始涉足devops领域,但我会尽力回答问题。
1. 你应该能够删除AWS实例,而创建的Vagrant box仍然可以使用;你甚至不必提供AWS实例,只需创建一个Vagrant box即可。
2. 你可以使用Packer设置开发框,然后使用相同的配置进行部署;据我所知,这就是Packer试图解决的问题。
另外,Packer将创建“黄金镜像”,这些镜像速度很快,因为你需要的一切都已经下载并配置好了。另一方面,即使对配置文件进行小小的更改,也可能意味着创建和上传一个全新的Box,这可能达到700MB以上。
一个好的中间地带可能是使用Packer创建一个带有基本功能(例如最可能保持不变的东西,如Nginx和gcc)的Vagrant Box,并在Chef配置文件的帮助下使用Vagrant来配置该Box,包括设置Node和安装要求。
当你准备好部署时,可以使用Packer和相同的Chef配置来启动AWS实例。当然,这将创建一个新的实例而不是重新配置现有的实例;我不确定Packer是否能够做到这一点,但是Chef非常适合担任配置管理的角色。
如果您还没有这样做,可以考虑对Vagrant配置进行版本控制。另外,从小处开始,循序渐进也无妨。

你有任何教程或示例可以分享吗?我已经四处寻找,似乎找不到一个展示Packer使用Chef-solo作为provisioner的教程。Packer文档中的半页内容真的不够用。 - iDVB
我学习时遵循的教程只是官方文档,而且我并没有深入研究 Packer,所以很遗憾我没有任何教程或示例可供提供。 - Crimson
请查看此演示文稿 - mestachs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接