You need to enable JavaScript to run this app.
导航

使用Tailor创建自定义镜像

最近更新时间2024.03.22 16:45:43

首次发布时间2023.02.03 08:30:26

Tailor是火山引擎提供的自定义镜像构建工具,支持在Linux、Mac操作系统中运行。您可以通过本工具在指定的镜像基础上创建自定义镜像。
本文介绍如何通过自定义镜像构建工具Tailor,创建自定义镜像。

前提条件

注意事项

  • 暂不支持通过本工具创建Windows自定义镜像。
  • 仅针对您的系统盘创建自定义镜像。创建自定义镜像所需的时间,取决于系统盘的实际大小。
  • 火山引擎将创建按量计费的临时云服务器实例、公网IP等资源用于创建自定义镜像,并在创建镜像后自动删除。创建过程中相关云资源将收取费用,计费方式说明可查看按量计费

操作步骤

步骤一:安装Tailor

  1. 登录您运行Tailor工具的实例,操作详情可查看登录Linux实例

  2. 执行如下命令,在/usr/local/bin/目录中安装Tailor。

    /usr/local/bin/是环境变量目录,将Tailor安装在该目录可以方便在实例不同目录使用。

    • Linux 版:
      wget https://tailor.tos-cn-beijing.volces.com/Tailor.tar.gz && tar zxf Tailor.tar.gz -C /usr/local/bin/
      
    • Mac 版:
      wget https://tailor.tos-cn-beijing.volces.com/Tailor_mac.tar.gz && tar zxf Tailor_mac.tar.gz -C /usr/local/bin/
      
  3. 您可以执行如下命令查看Tailor使用说明,验证是否安装成功。

    Tailor --help
    

步骤二:创建定制镜像脚本(可选)

您可以将镜像需要定制的内容(例如:安装软件、驱动、修复CVE漏洞等)制作为Shell脚本,并通过Tailor在创建自定义镜像时执行。

注意

  • 定制镜像脚本内支持重启实例操作,且每一个script参数内,均可以重启实例。Tailor将在实例重启后继续执行脚本任务。

  • Tailor支持如下格式的脚本路径,您可以按需创建:

    • 本地目录,例如:/tmp/update/。
    • 本地脚本,例如:/tmp/a.sh。
    • 网络脚本,例如:http://install/a.sh。
    • 压缩格式脚本,目前支持.tar.gzip.zip格式。例如:centos_shell.zip。
  • 对于压缩格式脚本集合或本地目录脚本集合,需要遵守如下规则:

    • 需要指定buildx.sh(例如:build1.sh、build3.sh)作为定制脚本的执行入口。Tailor将根据buildx.sh文件x值由小到大自动执行,且每次执行完成buildx.sh,Tailor都会执行重启实例操作。

    • 脚本集合内buildx.sh不支持二级目录(例如:temp/temp_1/build3.sh),其他脚本和文件位置无限制。

标准的脚本集合示例

centos_shell.zip          
  ├── 00_extra_pkg.sh
  ├── build1.sh
  ├── build5.sh
  ├── centos_zip.zip
  ├── cleanup.sh
  └── cve.sh

其中buildx.sh脚本内容示例如下:

  • build1.sh

    #!/bin/bash
    
    set -x
    
    BASE_PATH=$(cd "$(dirname "$0")";pwd)
    
    source ${BASE_PATH}/config
    
    scripts=(
        "00_extra_pkg.sh"
        "cve.sh"
    )
    for file in ${scripts[@]}
    do
        source ${BASE_PATH}/${file}
    done
    
  • build5.sh

    #!/bin/bash
    
    set -x
    
    BASE_PATH=$(cd "$(dirname "$0")";pwd)
    
    source ${BASE_PATH}/config
    
    scripts=(
        "cleanup.sh"
    )
    for file in ${scripts[@]}
    do
        source ${BASE_PATH}/${file}
    done
    

步骤三:创建参数配置文件(可选)

使用Tailor创建自定义镜像时,支持通过参数指定创建出的自定义镜像名称、镜像大小、创建过程使用的临时实例规格、等信息,您可以通过yaml文件配置参数。

说明

  • 若您不创建参数配置文件,可以在执行命令时直接传入参数及参数值。
  • 临时实例由火山引擎自动创建,并在完成自定义镜像创建后删除。
  1. 执行如下命令,查看Tailor支持配置的参数。

    Tailor build --help
    

    参数说明

    参数是否必填说明取值示例

    base

    基础镜像ID,Tailor将在该镜像基础上创建自定义镜像。

    说明

    • 支持使用您账号下的任意公共镜像、自定义镜像、共享镜像作为基础镜像。
    • 您可以在镜像控制台获取基础镜像ID。

    image-yc6gg6s0nvl8j17XXXXX

    region

    创建自定义镜像时,所用的临时实例所在的地域,默认为cn-beijing(华北2(北京)),更多地域信息可查看地域和可用区

    注意

    创建成功的自定义镜像也将在该地域下。

    cn-beijing

    zone

    创建自定义镜像时,使用的临时实例所在的可用区,默认为a(可用区A),更多地域信息可查看地域和可用区

    说明

    可用区信息无需传入地域前缀,例如:北京可用区A 的ZoneID为cn-beijing-a,仅需传入a即可。

    a

    spec创建自定义镜像时,使用的临时实例规格,默认为ecs.g2i.xlarge(通用型g2i),更多实例规格可查看实例规格介绍ecs.g2a.xlarge
    disksize指定镜像大小,单位为G,默认为20G20
    script定制镜像的脚本,支持配置多个脚本。脚本说明可查看创建定制脚本-
    name指定创建的自定义镜像名称。默认为:镜像类型-发布版本-架构-启动模式-时间戳,例如:centos-7.8-amd64-legacy-20220511_031740。CentOS7.9
  2. 执行如下命令,创建配置参数的yml文件。

    文件名config请自行替换为所需名称。

    vim config.yml
    

    i键,按如下结构写入您需要配置的参数信息。

    base: image-yclxxxxxx
    region: cn-beijing	
    zone: a
    script:
        - /temp/centos_shell.zip
        - http://install/update.sh
        - /temp/download.sh
    spec: ecs.g2a.xlarge
    disksize: 20
    name: CentOS7.9
    

    ecs键,输入:wq保存并退出文件。

步骤四:创建自定义镜像

  1. Tailor执行创建自定义镜像任务时,将在您执行命令时所处的目录下记录任务信息及缓存文件,详情可查看创建结果
    执行如下命令,进入您期望存储相关内容的目录。

    请将/etc/Tailors/替换为您的目录路径。

    cd /etc/Tailors/
    
  2. 执行如下命令,导入访问密钥(Access Key)中包含的Access Key ID(简称AK)和 Secret Access Key(简称SK)。获取详情可查看使用指南

    export VOLC_AK=xxx
    export VOLC_SK=xxx
    
  3. 执行如下命令,创建自定义镜像。

    说明

    创建自定义镜像时,Tailor默认将在控制台输出包含FATALERROR的日志信息。日志说明及调整展示的日志信息操作,可查看日志说明

    • 通过参数配置文件指定参数值。

      参数配置文件创建详情,可查看创建参数配置文件

      Tailor build config.yml
      
    • 直接指定参数值。

      说明

      • 支持配置的参数详情,可查看创建参数配置文件
      • script参数支持复用,用以传入多个脚本信息。
      Tailor build -base=image-ybqi99s7aayq8rx7xxxxx -script=/tmp/update.sh -script=/tmp/centos_shell.tgz
      
  4. 执行成功后,Tailor将输出生成的自定义镜像ID、名称,且自定义镜像将自动添加至临时实例所在地域。

步骤五:查看创建结果

查看自定义镜像

  1. 登录云服务器控制台
  2. 在顶部导航栏选择自定义镜像所在地域。

    说明

    镜像地域与您配置的临时实例所在地域一致,详情可查看创建参数配置文件

  3. 在左侧导航树中选择“实例与镜像 > 镜像”。
  4. 选择“自定义镜像”页签,您可以使用命令返回的自定义镜像ID或镜像名称搜索查询创建的自定义镜像。
  5. 若目标镜像的状态为可用 ,则创建自定义镜像成功。

查看任务

Tailor将在您执行Tailor build命令时所处的目录下,创建workspace目录,存放创建自定义镜像任务的中间产物,便于您排查创建过程出现的问题。
不同创建自定义镜像任务,将在该目录下以“镜像名称-时间戳”形式创建任务目录,在其中记录对应任务的缓存文件、http文件等信息。

说明

正常执行的创建任务,一般不会在其任务目录下留存信息。

workspace结构示例

workspace
 └── centos-7.8-amd64-legacy-20220511_031740    
  ├── cache
  ├── http
  ├── log
  └── packer.json  
文件名说明
cache缓存文件目录。
http网络拉取的中间文件目录,例如:定制镜像的脚本。
log日志文件目录。
packer.jsonPacker构建器模板文件。

日志说明

Tailor会在创建自定义镜像时,将该任务日志信息输出在控制台中。您可以根据需求在执行创建镜像命令时指定日志等级,以此调整展示日志详略程度。

日志级别

日志级别及对应内容如下:

  • 0:日志展示FATAL内容。
  • 1:默认值,日志展示ERROR及更低级别内容。
  • 2:日志展示WARN及更低级别内容。
  • 3:日志展示DEBUG及更低级别内容。
  • 4:日志展示INFO及更低级别内容。

配置说明

您可以在执行Tailor build命令创建自定义镜像时时,传入TAILOR_LOG_LEVEL参数并指定目标任务的日志级别。示例如下:

TAILOR_LOG_LEVEL=4 Tailor build -base=image-ybqi99sxxxxxx -spec=ecs.g2a.large