Packer是一款可以通过单一的模板文件,高效、并行创建多云平台镜像的轻量级开源工具,能够运行在常用的主流操作系统(如Windows、Linux和macOS)上。
本文以创建Linux镜像为例,介绍使用Packer流程。如需创建Windows镜像,可查看Packer官方文档。
Packer将在火山引擎创建按量计费的临时云服务器实例、公网IP等资源用于创建自定义镜像,并在创建镜像后自动删除。创建过程中相关云资源将收取费用,计费方式说明可查看按量计费。
名词 | 说明 |
---|---|
Volcengine Image Builder(Builder) | 火山引擎自定义镜像生成器,用于指定Packer需要使用的配置器、自定义镜像创建过程使用的配置信息,详情可查看Volcengine Image Builder(生成器)。 |
Provisioner | 配置器,用于配置Packer在创建的自定义镜像中,需要安装的软件、补丁等内容。本文以常用的Shell配置器为例,更多配置器详情可查看Provisioners。 |
本文以
1.8.6_linux_amd64
版本为例,更多版本Packer可查看Packer官方文档。
wget https://releases.hashicorp.com/packer/1.8.6/packer_1.8.6_linux_amd64.zip
请将
packer_1.8.6_linux_amd64.zip
替换为实际Packer文件。
unzip packer_1.8.6_linux_amd64.zip
mv packer /usr/local/bin/
packer -v
command not found
,表示Packer未正确安装。使用Packer创建自定义镜像前,您需要创建并配置模板文件。在该模板文件中,您需要配置创建自定义镜像过程中使用的临时实例、目标地域、Builder(生成器)和Provisioners(配置器)等信息。
登录您运行Packer工具的实例,执行如下命令,创建后缀为.pkr.hcl的配置文件。
说明
<volc_config>
替换为待创建文件名。vim <volc_config>.pkr.hcl
按i
键,进入编辑模式,复制并粘贴如下内容。
packer { required_plugins { volcengine = { version = ">= 0.0.1" source = "github.com/volcengine/volcengine" } } } source "volcengine-ecs" "foo" { target_image_name = "packer_test" source_image_id = "image-yc41yungxxxxxx" region = "cn-beijing" instance_type = "ecs.g2a.large" associate_public_ip_address = "true" system_disk_size = "50" system_disk_type = "ESSD_PL0" ssh_username = "root" temporary_key_pair_name = "packer-key" } build { sources = ["source.volcengine-ecs.foo"] provisioner "shell" { inline = ["sleep 30", "yum install mysql -y"] } }
重要参数说明:
本文使用的HCL模板完整使用说明,可查看HCL Templates。
参数名 | 说明 | 取值样例 |
---|---|---|
packer | 本模块用于配置Packer本身行为(例如:指定当前模板所需安装的所有插件)。 | - |
source | 本模块用于配置生成器(Builder)启动信息,您需要在第一个标签指定
| - |
build | 本模块用于定义Packer的将启动什么Builder(配置器)及配置器(Provisioners),更多使用详情可查看build。 | - |
执行如下命令,初始化模板文件。
- 若您使用JSON文件配置Packer模板,您可以执行
packer hcl2_upgrade xxx.json
命令将JSON文件转换为HCL文件。更多详情可查看Upgrade Packer JSON Template to HCL2。- 请将
<volc_config>
替换为实际文件名。
packer init <volc_config>.pkr.hcl
完成Packer模板创建及初始化后,即可创建自定义镜像。
登录您运行Packer工具的实例。
执行如下命令,导入您的火山引擎账号AccessKey ID。
请将
<AccessKey ID>
替换为您实际的AccessKey ID,获取详情可查看API访问密钥。
export VOLCENGINE_ACCESS_KEY=<AccessKey ID>
执行如下命令,导入您的火山引擎账号AccessKey Secret。
请将
<AccessKey Secret>
替换为您实际的AccessKey Secret,获取详情可查看API访问密钥。
export VOLCENGINE_SECRET_KEY=<AccessKey Secret>
执行如下命令,开始创建自定义镜像。
请将
volc_config.pkr.hcl
替换为实际文件名。
packer build volc_config.pkr.hcl
示例运行结果如下,以下示例将创建含MySQL的自定义镜像。
创建成功后,您可以前往火山引擎控制台查看镜像详情。