火山引擎云服务器如何使用Packer创建自定义镜像?

axin 2025-03-31 6人围观 ,发现0个评论 火山引擎云服务器云服务器

👉点击这里申请火山引擎VIP帐号,立即体验火山引擎产品>>>


Packer是一款可以通过单一的模板文件,高效、并行创建多云平台镜像的轻量级开源工具,能够运行在常用的主流操作系统(如Windows、Linux和macOS)上。
本文以创建Linux镜像为例,介绍使用Packer流程。如需创建Windows镜像,可查看Packer官方文档。

前提条件

  • 已开通快照服务。

  • 运行Packer的服务器需可以访问公网。

  • 请参考账户说明确认您的火山引擎账号余额(即现金余额)和代金券的总值大于等于100元人民币。若余额不足,您可参考充值操作指引进行充值。

注意事项

Packer将在火山引擎创建按量计费的临时云服务器实例、公网IP等资源用于创建自定义镜像,并在创建镜像后自动删除。创建过程中相关云资源将收取费用,计费方式说明可查看按量计费。

名词解释

名词
说明
Volcengine Image Builder(Builder)
火山引擎自定义镜像生成器,用于指定Packer需要使用的配置器、自定义镜像创建过程使用的配置信息。
Provisioner
配置器,用于配置Packer在创建的自定义镜像中,需要安装的软件、补丁等内容。本文以常用的Shell配置器为例,更多配置器详情可查看Provisioners。

操作步骤

步骤一:安装Packer

  1. 登录您运行Packer工具的实例。若您使用火山引擎云服务器,操作详情可查看登录Linux实例。

  1. 执行如下命令,下载Packer。

本文以1.8.6_linux_amd64版本为例,更多版本Packer可查看Packer官方文档。
wget https://releases.hashicorp.com/packer/1.8.6/packer_1.8.6_linux_amd64.zip
  1. 执行如下命令,解压Packer压缩文件。

请将packer_1.8.6_linux_amd64.zip替换为实际Packer文件。
unzip packer_1.8.6_linux_amd64.zip
  1. 执行如下命令,将Packer移动至环境变量目录,方便在任意目录下快速使用。

mv packer /usr/local/bin/
  1. 执行如下命令,验证Packer是否成功安装。

packer -v
    • 若返回如下所示,表示Packer已正确安装。

    • 若返回command not found,表示Packer未正确安装。

步骤二:配置Packer模板

使用Packer创建自定义镜像前,您需要创建并配置模板文件。在该模板文件中,您需要配置创建自定义镜像过程中使用的临时实例、目标地域、Builder(生成器)和Provisioners(配置器)等信息。
  1. 登录您运行Packer工具的实例,执行如下命令,创建后缀为.pkr.hcl的配置文件。

说明
  • 支持HCL、JSON两种格式文件作为模板,建议您使用HCL格式文件。

  • 请将<volc_config>替换为待创建文件名。

vim <volc_config>.pkr.hcl
  1. 按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"public_ip_band_width        = "20"public_ip_id                = ""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本身行为(例如:指定当前模板所需安装的所有插件)。
请保留示例中的volcengine插件配置,更多详情可查看packer。
-
source
本模块用于配置生成器(Builder)启动信息,您需要在第一个标签指定volcengine-ecs表示创建火山引擎云服务器镜像。source模块使用详情可查看source。
-
L region
生成镜像所在的火山引擎地域,详情可查看地域和可用区。
cn-beijing
L target_image_name
生成镜像的名称。
packer_test
L source_image_id
基础镜像ID,Packer将在该镜像基础上创建自定义镜像。
  • 支持使用您火山引擎账号下的任意公共镜像、自定义镜像、共享镜像作为基础镜像。

  • 您可以在镜像控制台获取基础镜像ID。

image-38deyjkaxxxxx
L instance_type
生成镜像使用的临时实例规格,详情可查看实例规格介绍。
ecs.g2i.large
L system_disk_size
系统盘大小,单位GiB。
50
L system_disk_type
系统盘类型。
ESSD_PL0
L associate_public_ip_address
是否为临时实例关联公网IP,取值:
  • false(默认):不关联。

  • true:关联,使用公网传输数据。

注意
当本参数传入true时,支持:
  • 使用已有公网IP。此时,请在public_ip_id参数中传入目标火山引擎公网IP的ID。

  • 使用临时公网IP。此时,无需传入public_ip_id参数,可通过public_ip_band_width参数指定临时公网IP的带宽上限。该临时公网IP会在镜像创建完成后自动释放。

true
L public_ip_id
需要使用的已有公网IP的ID。
eip-13frvze8oo8hs3xxxxxx
L public_ip_band_width
临时公网IP带宽上限。
  • 默认:1 Mbps

  • 取值范围:1 ~ 200 Mbps

说明
本参数仅在associate_public_ip_address参数值为true,且public_ip_id参数值为空时生效。
1
L temporary_key_pair_name
设置连接临时实例的临时密钥对名称,系统将自动创建该密钥对并用于临时实例。
您还可以改用ssh_password参数,通过密码连接临时实例。更多SSH连接参数详情,可查看SSH Communicator。
packer-key
L ssh_username
SSH连接临时实例使用的用户名,Linux固定为root,详情可查看SSH Communicator。
root
build
本模块用于定义Packer的将启动什么Builder(配置器)及配置器(Provisioners),更多使用详情可查看build。
-
  1. 执行如下命令,初始化模板文件。

packer init <volc_config>.pkr.hcl
说明
  • 若您使用JSON文件配置Packer模板,您可以执行packer hcl2_upgrade xxx.json命令将JSON文件转换为HCL文件。更多详情可查看Upgrade Packer JSON Template to HCL2。

  • 请将<volc_config>替换为实际文件名。

步骤三:创建自定义镜像

完成Packer模板创建及初始化后,即可创建自定义镜像。
  1. 登录您运行Packer工具的实例。

  1. 执行如下命令,导入您的火山引擎账号AccessKey ID。

export VOLCENGINE_ACCESS_KEY=<AccessKey ID>
说明
请将<AccessKey ID>替换为您实际的AccessKey ID,获取详情可查看API访问密钥。
  1. 执行如下命令,导入您的火山引擎账号AccessKey Secret。

export VOLCENGINE_SECRET_KEY=<AccessKey Secret>
说明
请将<AccessKey Secret>替换为您实际的AccessKey Secret,获取详情可查看API访问密钥。
  1. 执行如下命令,开始创建自定义镜像。

packer build volc_config.pkr.hcl
说明
请将volc_config.pkr.hcl替换为实际文件名。
示例运行结果如下,以下示例将创建含MySQL的自定义镜像。

查看创建结果

创建成功后,您可以前往火山引擎控制台查看镜像详情。
  1. 登录镜像控制台。

  1. 在顶部导航栏选择目标自定义镜像所在地域与项目。

  1. 选择“自定义镜像”页签。

  1. 若目标镜像“状态”列为可用,则创建自定义镜像成功。

  1. 您还可以单击镜像名称进入镜像详情页,选择“关联快照”页签,查看镜像包含的云盘关联的快照ID、云盘类型及对应容量信息。更多快照详情可查看快照概述。


请关注微信公众号
微信二维码
不容错过
Powered By TOPYUN 云产品资讯