You need to enable JavaScript to run this app.
文档中心
云服务器

云服务器

复制全文
下载 pdf
创建自定义镜像
使用Packer创建自定义镜像
复制全文
下载 pdf
使用Packer创建自定义镜像
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将在该镜像基础上创建自定义镜像。
    • 支持使用您火山引擎账号下的任意公共镜像、自定义镜像、共享镜像作为基础镜像。
    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、云盘类型及对应容量信息。更多快照详情可查看快照概述
最近更新时间:2025.02.20 15:15:42
这个页面对您有帮助吗?
有用
有用
无用
无用