云原生学习笔记2:Iac以及Packer
- 开发公司:HashiCorp
- 官网:https://www.packer.io/
- 入门手册:https://www.packer.io/intro/index.html
- Github:https://github.com/hashicorp/packer
- 文档:https://www.packer.io/docs/index.html
1 简介
- 基于相同的配置,为多个云平台生成不同的服务器镜像
- 可以创建匹配不同云平台的服务器镜像,例如aws的ami,VMware的VMDK / VMX文
- 性能强劲,可以为多个云平台并发创建服务器镜像
- 可以很方便集成chef/puppet等配置服务
2 为什么使用packer
- 各平台的镜像创建较为繁琐
- packer使用较为简单,可以创建多种云平台的镜像
优点:
- 超级快的部署和配置虚拟机:几秒的时间完成计算机申请、部署和配置工作
- 跨云平台服务商支持:支持aws/openstack/vmware等云平台服务商,非常快速满足开发/测试/生产的需求
- 稳定性提升:创建和配置所有的软件,如果有问题,可以提前发现
- 可测试性更高:能快速启动服务器用于各种测试,提升可测试性
3 使用场景
- 服务器镜像持续交付工具
- 基于相同模板可以创建满足开发/测试/生产等不同运行环境的镜像,例如开发环境跑openstack、生产环境跑aws,基于相同的packer模板可以一键创建满足不同环境需求的服务器镜像
- 适合快速创建演示产品,基于生产的模板,快速在一个地方进行搭建,并进行功能演示
4 使用
创建aws ec2 ami
- 创建模板:模板为json格式
- 模板包含:variables(外部变量)、builder(构建方法)等
- build:通过packer build template构建模板,生成ami
- 管理镜像:通过以上,会在aws账号生成对应的ami镜像,可以后续自行管理,例如删除等
- provisioner:用于镜像构建后执行一些操作,操作类型可以是shell,也可以是将文件创建到镜像中
- 构建:构建完成后,将会生成一个ami,并挂在对应的账户下
5 Provision
- provision实现了基于原始的镜像进行重新配置的能力
- 例如支持在原有镜像中引入一个新的服务
6 并发构建
- 支持在一个packer模板中并发构建面向不同云服务商的镜像
- 例如同时构建aws的ami镜像和vmware的虚拟机镜像
- variables:可以把多个平台用到的变量一并生命
- build:多种build时,支持多个build构建不同平台的镜像
- provision:多个平台的镜像build完成后,可以同时执行同一个provision
- 构建:构建完成后,会创建两个虚拟机镜像, 一个挂载aws的账户下,另一个挂在vmware的平台上