• 沒有找到結果。

– 制作过程会消耗一定计费资源,主要涉及ECS服务器、EVS云硬盘、弹性IP及 带宽和IMS镜像。正常场景制作成功或者失败后会自动释放。但制作完成

– ECS执行机:一台ECS x86服务器作为Linux执行机,建议选择CentOS7操作系 统并绑定EIP支持访问公网,便于后续安装Packer工具。

– 认证凭据:制作镜像需要获取具有相关权限用户或者租户的AK/SK认证凭 据,请提前获取,详情请参考IAM 如何获取访问密钥AK/SK。

– 安全组:由于Packer通过创建临时ECS服务器并使用秘钥对SSH登录,需要提 前确保安全组放开TCP:22端口通道。详情请参考安全组配置示例。

制作镜像

步骤1 登录ECS执行机,下载cce-image-builder并解压。

wget https://cce-north-4.obs.cn-north-4.myhuaweicloud.com/cce-image-builder/cce-image-builder.tgz tar zvxf cce-image-builder.tgz

cd cce-image-builder/

说明

cce-image-builder主要包含

● turbo-node.pkr.hcl 镜像制作使用的Packer配置模板

● scripts/* 模板预置的CCE镜像制作。建议不要修改,避免影响最终镜像可用性。

● user-scripts/* 模板预置的自定义包脚本目录。以example.sh为例,制作自定义镜像时将自动 上传至临时服务器并执行。

● user-packages/* 模板预置的自定义包目录。制作自定义镜像时,以example.package为例,

制作自定义镜像时将自动上传至临时服务器/tmp/example.package。

步骤2 安装HashiCorp Packer,建议参考官方指导执行。

说明

Packer版本要求:packer >= 1.7.2

以CentOS 7执行机为例,执行如下命令自动安装packer(以官方指导为准):

# 配置Packer的yum源后安装Packer sudo yum install -y yum-utils

sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo sudo yum -y install packer

# 配置alias用于避免OS中同名packer二进制影响,并检查packer版本 rpm -q packer

alias packer=$(rpm -ql packer) packer -v

步骤3 获取cce-image-builder/turbo-node.pkr.hcl所需的参数,并通过环境变量配置。

说明

turbo-node.pkr.hcl文件是packer的配置模板,定义了完整的镜像构建过程。更详细说明请参考 Packer官网文档

variables/variable

变量定义。turbo-node.pkr.hcl中主要定义了构建所需填写的参数,支持用户按需修改或填 写,参数定义参见 表1。

packer

packer模块定义。其中required_plugins定义了Packer的插件依赖,包括插件来源与插件版 本范围,packer init时会自动下载插件并初始化,无需用户手动填写。

packer {

required_plugins { huaweicloud = { version = ">= 0.4.0"

source = "github.com/huaweicloud/huaweicloud"

} }}

source

source定义。通过引用了上述定义的变量,自动配置了插件创建ECS所需的参数,无需用户

sources = ["source.huaweicloud-ecs.builder"]

provisioner "file" {

source = "<source file path>"

destination = "<destination file path>"

}

provisioner "shell" { scripts = [

"<source script file: step1.sh>", "<source script file: step2.sh>"

] }

provisioner "shell" { inline = ["echo foo"]

}}

export REGION_NAME=xxx export IAM_ACCESS_KEY=xxx export IAM_SECRET_KEY=xxx export ECS_VPC_ID=xxx export ECS_NETWORK_ID=xxx export ECS_SECGRP_ID=xxx export CCE_SOURCE_IMAGE_ID=xxx

2-6 variables 配置参数说明

参数 参数说明 备注

REGION_NAME 所属项目区域。 请在我的凭证下查看所属区域。

IAM_ACCESS_K

EY 用户认证凭据Access Key。 建议临时申请,制作完成后删除。

IAM_SECRET_K

EY 用户认证凭据Secret Key。 建议临时申请,制作完成后删除。

ECS_VPC_ID 虚拟私有云ID。 临时ECS服务器使用,需要与执行 机一致。

MAGE_ID CCE服务的最新节点镜像

ID。 /

备注:其他参数通常无需配置,默认即可。如需修改,可以参考turbo-node.pkr.hcl中 variable定义中的description描述通过环境变量配置。

以ECS规格变量ecs_az为例,未指定时选择随机可用区,如需指定可以按照如下格式通 过环境变量配置。其他参数类似。

# export PKR_VAR_<variable name>=<variable value>

export PKR_VAR_ecs_az=xxx

步骤4 参考步骤1中样例说明,定制修改cce-image-builder下user-scripts,user-packages目 录,并修改或添加turbo-node.pkr.hcl对应的file和shell模块配置实现。

步骤5 定制修改结束后,执行make image并等待镜像制作完成,通常需要耗时3~5min。

说明

构建封装脚本packer.sh中,

● 隐私和安全考虑,默认关闭了packer自动访问hashicorp.com检查版本的功能。

export CHECKPOINT_DISABLE=false

● 构建过程可见性与可追溯考虑,默认开启了debugging详细日志,并指定了本地packer构建 日志packer_{timestamp}.log以在构建时打包至镜像/var/log/目录。如涉及敏感信息,移除 相关逻辑即可。

export PACKER_LOG=1

export PACKER_BUILD_TIMESTAMP=$(date +%Y%m%d%H%M%S) export PACKER_LOG_PATH="packer_$PACKER_BUILD_TIMESTAMP.log"

更多packer配置详细参见官网说明。

执行结束日志:

如果出现packer插件报错的情况,请参见常见问题处理。

步骤6 清理执行机上构建文件,主要涉及turbo-node.pkr.hcl中认证凭据清理。

● 建议直接释放执行机,如认证凭据为临时申请建议直接删除;

● 如需自动构建,建议自行在配置文件中添加post-processor实现相关功能。

步骤7 镜像制作完成后,进入IMS镜像服务控制台,找制作好的镜像(默认名称为image-by- packer-xxxxxx,xxxxxx为制作时间),进入镜像详情页,删除如下3个标签(cce-created-at、cce-created-by、cce-created-from)。

另外还可以修改镜像名称。

CCE节点创建或者节点池创建时,在私有镜像中选择此镜像创建即可。

----结束