Fork me on GitHub

Packer之Packer介绍

Packer之Packer介绍

Packer介绍

所谓的镜像,就是一个包含预先配置好操作系统和预装软件的静态单元,通过它可以快速的创建新的虚拟机运行实例,不同的平台支持不同的镜像格式,例如AWS的EC2支持AMIs,VMware支持VMDK/VMX,Alicloud的ECS支持RAW和VHD格式等等。各云平台都提供了大量的基础镜像供用户使用,但是随着云平台用户成熟度的增加,用户对镜像个性化的需要越来越强烈,同时出于商业的考虑,用户也希望自己的系统具有在不同云平台之间迁移的能力,当然也包含个性化的镜像迁移的能力。尽管各大云平台都提供了WEB界面工具使得用户可以手工创建自定义镜像,也开放了相应的API使得通过自动化的脚本来创建个性化的自定义镜像成为可能。但是都存在一定的局限性而难以满足用户的最终需求,Packer就在这种背景下诞生了。

Packer是一个从单一的模板文件来创建多平台一致性镜像的轻量级开源工具,它能够运行在常用的主流操作系统如Windows、Linux和Mac os上,能够高效的并行创建多平台例如AWS、Azure和Alicloud的镜像,它的目的并不是取代Puppet/Chef等配置管理工具,实际上,当制作镜像的时候,Packer可以使用Chef或者Puppet等工具来安装镜像所需要的软件。通过Packer自动化的创建各种平台的镜像是非常容易的。

优势:

  • 基础设施部署迅速
  • 可以移植性
  • 镜像制作自动化,提升效率,降低误操作
  • 支持所有常见的公有云厂商
  • 支持自定义插件(可自增强)
  • 开源(成熟、透明)

工作流程

大致流程:模板–>基于公有云基础镜像–>创建主机、自定义设置–>创建镜像–上传镜像–>删除主机–>返回镜像信息

Packer安装部署

1
2
3
4
5
6
7
8
9
10
11
12
13
# wget https://releases.hashicorp.com/packer/1.3.2/packer_1.3.2_linux_amd64.zip
# unzip packer_1.3.2_linux_amd64.zip
# packer --version
1.3.2
# packer -h
Usage: packer [--version] [--help] <command> [<args>]

Available commands are:
build build image(s) from template
fix fixes templates from old versions of packer
inspect see components of a template
validate check that a template is valid
version Prints the Packer version

注意: 下载解压后使用的时候建议使用包的绝对路径执行,因为包名和Linux下另外一个二进制包重名了,或者将packer重命名,例如:packer.io等等

基于google Cloud案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# cat google.json
{
"builders": [
{
"type": "googlecompute",
"account_file": "account.json",
"project_id": "xxx",
"source_image": "debian-7-wheezy-v20150127",
"ssh_username": "packer",
"zone": "us-central1-a"
}
]
}

# ./packer build google.json
googlecompute output will be in this color.

==> googlecompute: Checking image does not exist...
==> googlecompute: Creating temporary SSH key for instance...
==> googlecompute: Using image: debian-7-wheezy-v20150127
==> googlecompute: Creating instance...
googlecompute: Loading zone: us-central1-a
googlecompute: Loading machine type: n1-standard-1
googlecompute: Requesting instance creation...
googlecompute: Waiting for creation operation to complete...
googlecompute: Instance has been created!
==> googlecompute: Waiting for the instance to become running...
googlecompute: IP: 35.202.237.72
==> googlecompute: Using ssh communicator to connect: 35.202.237.72
==> googlecompute: Waiting for SSH to become available...
==> googlecompute: Connected to SSH!
==> googlecompute: Deleting instance...


googlecompute: Instance has been deleted!
==> googlecompute: Creating image...
==> googlecompute: Deleting disk...
googlecompute: Disk has been deleted!
Build 'googlecompute' finished.

==> Builds finished. The artifacts of successful builds are:
--> googlecompute: A disk image was created: packer-1541417917

相关资料

======================================================
希望各位朋友支持一下

本文作者:dongsheng
本文地址https://mds1455975151.github.io/archives/bc880644.html
版权声明:转载请注明出处!

坚持技术分享,您的支持将鼓励我继续创作!