Tailor是火山引擎提供的自定义镜像构建工具,支持在Linux、Mac操作系统中运行。您可以通过本工具在指定的镜像基础上创建自定义镜像。
本文介绍如何通过自定义镜像构建工具Tailor,创建自定义镜像。
登录您运行Tailor工具的实例,操作详情可查看登录Linux实例。
执行如下命令,在/usr/local/bin/目录中安装Tailor。
/usr/local/bin/是环境变量目录,将Tailor安装在该目录可以方便在实例不同目录使用。
wget https://tailor.tos-cn-beijing.volces.com/Tailor.tar.gz && tar zxf Tailor.tar.gz -C /usr/local/bin/
wget https://tailor.tos-cn-beijing.volces.com/Tailor_mac.tar.gz && tar zxf Tailor_mac.tar.gz -C /usr/local/bin/
您可以执行如下命令查看Tailor使用说明,验证是否安装成功。
Tailor --help
您可以将镜像需要定制的内容(例如:安装软件、驱动、修复CVE漏洞等)制作为Shell脚本,并通过Tailor在创建自定义镜像时执行。
注意
定制镜像脚本内支持重启实例操作,且每一个script参数内,均可以重启实例。Tailor将在实例重启后继续执行脚本任务。
Tailor支持如下格式的脚本路径,您可以按需创建:
.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文件配置参数。
说明
执行如下命令,查看Tailor支持配置的参数。
Tailor build --help
参数说明:
参数 | 是否必填 | 说明 | 取值示例 |
---|---|---|---|
base | 是 | 基础镜像ID,Tailor将在该镜像基础上创建自定义镜像。 说明
| image-yc6gg6s0nvl8j17XXXXX |
region | 否 | 创建自定义镜像时,所用的临时实例所在的地域,默认为cn-beijing(华北2(北京)),更多地域信息可查看地域和可用区。 注意 创建成功的自定义镜像也将在该地域下。 | cn-beijing |
zone | 否 | 创建自定义镜像时,使用的临时实例所在的可用区,默认为a(可用区A),更多地域信息可查看地域和可用区。 说明 可用区信息无需传入地域前缀,例如:北京可用区A 的ZoneID为 | a |
spec | 否 | 创建自定义镜像时,使用的临时实例规格,默认为ecs.g2i.xlarge(通用型g2i),更多实例规格可查看实例规格介绍。 | ecs.g2a.xlarge |
disksize | 否 | 指定镜像大小,单位为G,默认为20G。 | 20 |
script | 否 | 定制镜像的脚本,支持配置多个脚本。脚本说明可查看创建定制脚本。 | - |
name | 否 | 指定创建的自定义镜像名称。默认为:镜像类型-发布版本-架构-启动模式-时间戳,例如:centos-7.8-amd64-legacy-20220511_031740。 | CentOS7.9 |
执行如下命令,创建配置参数的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
保存并退出文件。
Tailor执行创建自定义镜像任务时,将在您执行命令时所处的目录下记录任务信息及缓存文件,详情可查看创建结果。
执行如下命令,进入您期望存储相关内容的目录。
请将/etc/Tailors/替换为您的目录路径。
cd /etc/Tailors/
执行如下命令,导入访问密钥(Access Key)中包含的Access Key ID(简称AK)和 Secret Access Key(简称SK)。获取详情可查看使用指南。
export VOLC_AK=xxx export VOLC_SK=xxx
执行如下命令,创建自定义镜像。
说明
创建自定义镜像时,Tailor默认将在控制台输出包含FATAL
、ERROR
的日志信息。日志说明及调整展示的日志信息操作,可查看日志说明。
执行成功后,Tailor将输出生成的自定义镜像ID、名称,且自定义镜像将自动添加至临时实例所在地域。
说明
镜像地域与您配置的临时实例所在地域一致,详情可查看创建参数配置文件。
Tailor将在您执行Tailor build
命令时所处的目录下,创建workspace目录,存放创建自定义镜像任务的中间产物,便于您排查创建过程出现的问题。
不同创建自定义镜像任务,将在该目录下以“镜像名称-时间戳”形式创建任务目录,在其中记录对应任务的缓存文件、http文件等信息。
说明
正常执行的创建任务,一般不会在其任务目录下留存信息。
workspace结构示例
workspace └── centos-7.8-amd64-legacy-20220511_031740 ├── cache ├── http ├── log └── packer.json
文件名 | 说明 |
---|---|
cache | 缓存文件目录。 |
http | 网络拉取的中间文件目录,例如:定制镜像的脚本。 |
log | 日志文件目录。 |
packer.json | Packer构建器模板文件。 |
Tailor会在创建自定义镜像时,将该任务日志信息输出在控制台中。您可以根据需求在执行创建镜像命令时指定日志等级,以此调整展示日志详略程度。
日志级别及对应内容如下:
FATAL
内容。ERROR
及更低级别内容。WARN
及更低级别内容。DEBUG
及更低级别内容。INFO
及更低级别内容。您可以在执行Tailor build
命令创建自定义镜像时时,传入TAILOR_LOG_LEVEL
参数并指定目标任务的日志级别。示例如下:
TAILOR_LOG_LEVEL=4 Tailor build -base=image-ybqi99sxxxxxx -spec=ecs.g2a.large