腾讯云CVM服务器创建自定义镜像_新手站长网_云淘科技

操作场景

除了使用腾讯云提供的公共镜像、服务市场镜像外,您还可以创建自定义镜像。创建自定义镜像后,您可以在腾讯云控制台快速创建与该镜像相同配置的腾讯云云服务器实例。说明由于镜像底层使用了云硬盘快照服务:国内地域提供80GB的免费额度,详情请参见 赠送额度。在创建自定义镜像时会默认创建关联该镜像的快照,且保留自定义镜像会产生一定的快照费用,详情请参见 快照计费概述。若您的腾讯云账户进入欠费状态,为避免您的数据丢失,我们将保留您的自定义镜像及关联的快照,且不会产生新的费用。

注意事项

每个地域暂支持50个自定义镜像。若您的 Linux 实例具备数据盘,但您仅制作系统盘自定义镜像时,请确认 /etc/fstab 不包含数据盘配置,否则会导致使用该镜像创建的实例无法正常启动。制作过程需要持续十分钟或更长时间,具体时间与实例的数据大小有关,请提前做好相关准备,以防影响业务。若您的 Windows 实例需入域且使用域账号,则在创建自定义镜像前,请执行 Sysprep 操作以确保在实例入域后 SID 唯一。详情请参见 通过 Sysprep 实现云服务器入域后 SID 唯一。若您使用的是配置25Gbps 网卡的裸金属服务器(即机型的内网带宽值是25Gbps),暂不支持使用控制台及 API 创建自定义镜像。

操作步骤

入口:控制台实例页面入口:控制台镜像页面入口:API入口:客户端基于Packer工具

创建自定义镜像

1. 登录 云服务器控制台,查看对应实例是否需进行关机。注意2018年7月之后基于公共镜像创建的实例(系统盘为云硬盘),支持在线制作镜像(即实例不关机的情况下制作镜像)。除此情况外的实例,请先将实例关机后再进行镜像制作,以确保镜像与当前实例部署环境完全一致。需要,则关机实例。不需要,请继续执行后续步骤。2. 在实例的管理页面,根据实际使用的视图模式进行操作:列表视图:选择更多 > 创建自定义镜像。如下图所示: 腾讯云CVM服务器创建自定义镜像_新手站长网_云淘科技页签视图:选择右上角的更多操作 > 创建自定义镜像。如下图所示:
腾讯云CVM服务器创建自定义镜像_新手站长网_云淘科技3. 在弹出的创建自定义镜像窗口中,参考以下信息进行配置:镜像名称镜像描述:自定义名称及描述。标签:可按需增加标签,用于资源的分类、搜索和聚合。更多信息请参见 标签。当您的实例含数据盘时,默认创建系统盘+数据盘的整机镜像,您可以指定仅创建系统盘镜像。4. 单击创建镜像即可。
您可单击左侧导航栏中的 镜像,在镜像页面中查看镜像的创建进度。

使用自定义镜像创建实例(可选)

待镜像完成创建后,在镜像列表中选择您创建的镜像,单击其所在行右侧的创建实例,即可购买与之前相同镜像的服务器。如下图所示:
腾讯云CVM服务器创建自定义镜像_新手站长网_云淘科技

创建自定义镜像

1. 登录 云服务器控制台,查看对应实例是否需进行关机。注意2018年7月之后基于公共镜像创建的实例(系统盘为云硬盘),支持在线制作镜像(即实例不关机的情况下制作镜像)。除此情况外的实例,请先将实例关机后再进行镜像制作,以确保镜像与当前实例部署环境完全一致。需要,则关机实例。不需要,请继续执行后续步骤。2. 单击左侧导航栏中的 镜像,进入镜像页面,在列表上方选择创建镜像腾讯云CVM服务器创建自定义镜像_新手站长网_云淘科技3. 在弹出的创建自定义镜像窗口中,参考以下信息进行配置:选择实例:选择该地域下需要创建自定义镜像的实例。镜像名称镜像描述:自定义名称及描述。标签:可按需增加标签,用于资源的分类、搜索和聚合。更多信息请参见 标签。当您的实例含数据盘时,默认创建系统盘+数据盘的整机镜像,您可以指定仅创建系统盘镜像。4. 单击创建镜像即可。
之后您可以在镜像页面中查看镜像的创建进度。

使用自定义镜像创建实例(可选)

待镜像完成创建后,在镜像列表中选择您创建的镜像,单击其所在行右侧的创建实例,即可购买与之前相同镜像的服务器。如下图所示:
腾讯云CVM服务器创建自定义镜像_新手站长网_云淘科技您可以使用 CreateImage 接口创建自定义镜像。具体内容可以参见 创建镜像 API。

背景信息

Packer是一款开源的、轻量级的自动化镜像构建工具。使用JSON格式或 HCL2(HashiCorp Configuration Language)的配置文件来定义镜像的构建过程,从而实现快速、可靠的镜像构建和部署。Packer还能为测试和更新镜像带来使用便利,降低运维和管理镜像的时间成本。更多信息参见 Pakcer 官网。

前提条件

已创建子用户,并已具备云服务器及云 API 所有权限。创建子用户请参见 新建子用户。为子用户授予权限请参见 子用户权限设置,本文为子用户授予 QcloudCVMFullAccessQcloudCVMFinanceAccessQcloudAPIFullAccess 预设策略。为子用户创建 SecretId 与 SecretKey,操作步骤请参见 子账号访问密钥管理。请记录并妥善保管。注意:可以使用主账号 SecretId 与 SecretKey,由于主账号对名下资源有完全控制权限,为了避免因访问密钥泄露带来的安全风险,不建议您使用主账号,请如上创建子账号。

操作步骤

安装 Packer

1、运行以下命令,获取 Packer 安装包。

wget https://releases.hashicorp.com/packer/1.9.4/packer_1.9.4_linux_amd64.zip

2、运行以下命令,解压 Packer 安装包。

unzip packer_1.9.4_linux_amd64.zip

3、运行以下命令,安装 Packer 到环境变量目录/usr/local/bin。

sudo mv packer /usr/local/bin

4、运行以下命令查看 Pakcer 版本,从而验证是否安装成功。

packer -v

说明:安装Packer也可以参见 Packer 官网。

定义 Packer模板

使用 Packer 创建自定义镜像,首先,需要定义 HCL 格式或者 JSON 格式的模板文件,其次,您需要在此文件中指定创建自定义镜像的 Builders(生成器)和 Provisioners(配置器),以及创建过程中使用的临时实例信息。1、运行以下命令,创建模板文件。HCL格式JSON格式

vim tencentcloud.pkr.hcl
vim tencentcloud.json

2、按i进入文件编辑模式,根据实际情况,编辑自定义镜像生成器配置器,以及实例信息。HCL格式JSON格式

variable "secret_id" {  type    = string  default = env("TENCENTCLOUD_SECRET_ID")}
variable "secret_key" { type = string default = env("TENCENTCLOUD_SECRET_KEY")}
source "tencentcloud-cvm" "basic" { secret_id = var.secret_id secret_key = var.secret_key region = "ap-guangzhou" zone = "ap-guangzhou-6" instance_type = "SA3.MEDIUM2" disk_type = "CLOUD_PREMIUM" source_image_id = "img-9xqekomx" image_name = "packer-basic" ssh_username = "root" associate_public_ip_address = true run_tags = { "packer" = "packer-test" }}
build { sources = ["source.tencentcloud-cvm.basic"] provisioner "shell" { inline = ["sleep 30", "yum install redis.x86_64 -y"] }}
{    "variables": {      "secret_id": "{{env `TENCENTCLOUD_SECRET_ID`}}",      "secret_key": "{{env `TENCENTCLOUD_SECRET_KEY`}}"    },    "builders": [      {        "type": "tencentcloud-cvm",        "secret_id": "{{user `secret_id`}}",        "secret_key": "{{user `secret_key`}}",        "region":"ap-guangzhou",        "zone": "ap-guangzhou-6",        "instance_type": "SA3.MEDIUM2",        "disk_type": "CLOUD_PREMIUM",        "source_image_id": "img-9xqekomx",        "image_name": "packer-basic",        "ssh_username": "root",        "associate_public_ip_address": true,        "run_tags": {          "packer": "packer-test"        }      }    ],    "provisioners": [{      "type": "shell",      "inline": ["sleep 30", "yum install redis.x86_64 -y"]    }]}

自定义各参数说明如下表所示:

参数 是否为必选 说明
secret_id secret_id推荐设置TENCENTCLOUD_SECRET_ID环境变量。
secret_key secret_key推荐设置TENCENTCLOUD_SECRET_KEY环境变量。
region 地域。创建临时cvm所在地域,以及创建镜像所在的地域。示例值:ap-guangzhou
zone 可用区。创建临时cvm所在可用区。示例值:ap-guangzhou-4
instance_type 实例机型。不同实例机型指定了不同的资源规格。示例值:SA3.MEDIUM2
source_image_id 基础镜像ID,用于创建临时cvm镜像,可从公共镜像列表获取,或者通过接口DescribeImages查询获得。示例值:img-9xqekomx
image_name 指定自定义镜像的名称。有字母、数字和-组成,不能超60个字符。示例值:packer-basic
image_description 镜像描述。不能超60个字符
associate_public_ip_address 是否为临时cvm开启公网IP,默认false。如果通过公网IP连接,请设置值为true
force_poweroff 当关闭临时cvm创建镜像时失败,是否强制关机创制镜像,默认为false
sysprep 是否在创建 Windows 映像期间启用 Sysprep。示例值:false
image_copy_regions 创建图像后将复制到的区域。示例值:[“ap-beijing”]
image_share_accounts 创建映像后将共享的账户。示例值:[“10002297xxxx”]
skip_region_validation 验证时不检查区域和区域。示例值:false
internet_max_bandwidth_out 启动的最大带宽(以 MB 为单位)。 值可设置在 1 ~ 100 之间。
instance_name 实例名称
disk_type 系统磁盘类型,默认为 CLOUD_PREMIUM。 您可以参见系统盘的信息。
disk_size 系统磁盘大小。 值范围(以 GB 为单位):- LOCAL_BASIC: 50
– Other: 50 ~ 1000(>50需要白名单)
data_disks 数据磁盘配置,磁盘详情如下表:数据磁盘详情
vpc_id 创建临时cvm所需vpc_id
vpc_name 私有网络名称,创建cvm前创建vpc的名称,如果不输入给默认值,例如packer-****
cidr_block 若未设置vpc_id,则指定将创建的vpc的cider块。示例值:false
subnet_id 创建临时cvm所需subnet_id
subnet_name 子网名称,创建cvm前创建subnet的名称,如果不输入给默认值,例如packer-****
subnect_cidr_block 若未设置subnet_id,则指定将创建的subnet的cider块。
示例值:false
security_group_id 创建临时cvm所需的安全组id
security_group_name 安全组名称,未设定security_group_id时,创建安全组时所需
user_data 用户数据。
user_data_file 用户数据文件。
host_name 主机名。
run_tags 标签,用于创建临时cvm时指定实例标签,创建镜像不会使用
security_token STS访问令牌,可以通过模板设置,也可以通过导出设置作为环境变量,例如export SECURITY_TOKEN=value
profile 在共享凭据中设置的配置文件名称。它也可以来源于“TENCENTCLOUD_PROFILE”环境变量。如果未设置,将使用“tccli configure”创建的默认配置文件,默认为default
shared_credentials_dir 共享凭据的目录。它也可以来源于TENCENTCLOUD_SHARED_CREDENTIALS_DIR环境变量。如果未设置,则默认为~/.tccli

数据磁盘参数说明如下表所示:

参数 是否为必选 说明
disk_type 数据磁盘的类型。 有效选择:CLOUD_BASICCLOUD_PREMIUMCLOUD_SSD
disk_size 数据磁盘的大小。
disk_snapshot_id 数据磁盘快照的 ID。

更多参数请参见 Packer 官网参数。3、按 Esc 键,并输入:wq 后按下回车键,保存并退出。

创建自定义镜像

1、配置环境变量 SecretId 与 SecretKey。

export TENCENTCLOUD_SECRET_ID=xxxxexport TENCENTCLOUD_SECRET_KEY=xxxx

2、执行以下命令,开始创建自定义镜像。HCL格式JSON格式

packer build tencentcloud.pkr.hcl
packer build tencentcloud.json

注意:本操作会创建计费资源,请注意释放和清理。如 cvm 实例、公网IP、镜像等(除镜像外,其他资源正常情况会自动清理)。运行结果如下:

tencentcloud-cvm.basic: output will be in this color.==> tencentcloud-cvm.basic: Trying to check image name: packer-basic...    tencentcloud-cvm.basic: Image name: useable==> tencentcloud-cvm.basic: Trying to check source image: img-9xqekomx...    tencentcloud-cvm.basic: Image found: CentOS Stream 9 64bit==> tencentcloud-cvm.basic: Trying to create a new keypair: packer_656c7***...    tencentcloud-cvm.basic: Keypair created: skey-2ekzd***==> tencentcloud-cvm.basic: Trying to create a new vpc...    tencentcloud-cvm.basic: Vpc created: vpc-bm797***==> tencentcloud-cvm.basic: Trying to create a new subnet...    tencentcloud-cvm.basic: Subnet created: subnet-74c4j***==> tencentcloud-cvm.basic: Trying to create a new securitygroup...    tencentcloud-cvm.basic: Securitygroup created: sg-7kf8z***==> tencentcloud-cvm.basic: Trying to create securitygroup polices...    tencentcloud-cvm.basic: Securitygroup polices created==> tencentcloud-cvm.basic: Trying to create a new instance...    tencentcloud-cvm.basic: Waiting for instance ready    tencentcloud-cvm.basic: Instance created: ins-n6dp2***==> tencentcloud-cvm.basic: Using SSH communicator to connect: 1.14.***.***==> tencentcloud-cvm.basic: Waiting for SSH to become available...==> tencentcloud-cvm.basic: Connected to SSH!==> tencentcloud-cvm.basic: Provisioning with shell script: /var/folders/0_/xl3kk_6n79vbnpgj97******0000gn/T/packer-shell1288510462    tencentcloud-cvm.basic: CentOS Stream 9 - AppStream                      42 MB/s |  18 MB     00:00    tencentcloud-cvm.basic: CentOS Stream 9 - BaseOS                         31 MB/s | 7.9 MB     00:00    tencentcloud-cvm.basic: Last metadata expiration check: 0:00:01 ago on Sun 03 Dec 2023 09:18:14 PM CST.    tencentcloud-cvm.basic: Dependencies resolved.    tencentcloud-cvm.basic: ================================================================================    tencentcloud-cvm.basic:  Package        Architecture    Version                Repository          Size    tencentcloud-cvm.basic: ================================================================================    tencentcloud-cvm.basic: Installing:    tencentcloud-cvm.basic:  redis          x86_64          6.2.7-1.el9            appstream          1.3 M    tencentcloud-cvm.basic:    tencentcloud-cvm.basic: Transaction Summary    tencentcloud-cvm.basic: ================================================================================    tencentcloud-cvm.basic: Install  1 Package    tencentcloud-cvm.basic:    tencentcloud-cvm.basic: Total download size: 1.3 M    tencentcloud-cvm.basic: Installed size: 4.7 M    tencentcloud-cvm.basic: Downloading Packages:    tencentcloud-cvm.basic: redis-6.2.7-1.el9.x86_64.rpm                    6.5 MB/s | 1.3 MB     00:00    tencentcloud-cvm.basic: --------------------------------------------------------------------------------    tencentcloud-cvm.basic: Total                                           6.5 MB/s | 1.3 MB     00:00    tencentcloud-cvm.basic: Running transaction check    tencentcloud-cvm.basic: Transaction check succeeded.    tencentcloud-cvm.basic: Running transaction test    tencentcloud-cvm.basic: Transaction test succeeded.    tencentcloud-cvm.basic: Running transaction    tencentcloud-cvm.basic:   Preparing        :                                                        1/1    tencentcloud-cvm.basic:   Running scriptlet: redis-6.2.7-1.el9.x86_64                               1/1    tencentcloud-cvm.basic:   Installing       : redis-6.2.7-1.el9.x86_64                               1/1    tencentcloud-cvm.basic:   Running scriptlet: redis-6.2.7-1.el9.x86_64                               1/1    tencentcloud-cvm.basic:   Verifying        : redis-6.2.7-1.el9.x86_64                               1/1    tencentcloud-cvm.basic:    tencentcloud-cvm.basic: Installed:    tencentcloud-cvm.basic:   redis-6.2.7-1.el9.x86_64    tencentcloud-cvm.basic:    tencentcloud-cvm.basic: Complete!==> tencentcloud-cvm.basic: Trying to detach keypair: skey-2ekzdz0x...    tencentcloud-cvm.basic: Waiting for keypair detached    tencentcloud-cvm.basic: Keypair detached==> tencentcloud-cvm.basic: Trying to create a new image: packer-basic...    tencentcloud-cvm.basic: Waiting for image ready    tencentcloud-cvm.basic: Image created: img-pubkd***==> tencentcloud-cvm.basic: Cleaning up instance...==> tencentcloud-cvm.basic: Cleaning up securitygroup...==> tencentcloud-cvm.basic: Cleaning up subnet...==> tencentcloud-cvm.basic: Cleaning up vpc...==> tencentcloud-cvm.basic: Cleaning up keypair...Build 'tencentcloud-cvm.basic' finished after 3 minutes 38 seconds.
==> Wait completed after 3 minutes 38 seconds
==> Builds finished. The artifacts of successful builds are:--> tencentcloud-cvm.basic: Tencentcloud images(ap-guangzhou: img-pubkd***) were created.

3、查看已创建的自定义镜像3.1 登录 云服务器控制台。3.2 在左侧导航栏中,单击 镜像,进入镜像管理页面。3.3 单击左上角的地域,即可在下拉框中查看所在地域的自定义镜像腾讯云CVM服务器创建自定义镜像_新手站长网_云淘科技

相关文档

Packer tencentcloud

最佳实践

查看各地域自定义镜像数量

在镜像资源较多、跨地域部署等场景下,一键查询各地域镜像数量可帮助您更高效地管理镜像资源。1. 登录 云服务器控制台。2. 在左侧导航栏中,单击 镜像,进入镜像管理页面。3. 单击左上角的地域,即可在下拉框中查看各地域的自定义镜像数量。腾讯云CVM服务器创建自定义镜像_新手站长网_云淘科技4、切换至共享镜像管理页面,单击左上角的地域,即可在下拉框中查看各地域的共享镜像数量。

数据盘数据迁移

如果您需要在启动新实例时同时保留原有实例数据盘上的数据,您可以先对数据盘做 快照,并在启动新实例时使用该数据盘快照创建新的云硬盘数据盘。
更多相关信息,请参见 快照创建云硬盘。

对腾讯云CVM服务器有疑惑?想了解产品收费? 联系解决方案专家

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案

本文来自投稿,不代表新手站长_郑州云淘科技有限公司立场,如若转载,请注明出处:http://www.cnzhanzhang.com/16394.html

(0)
匿名
上一篇 2023年12月12日
下一篇 2023年12月13日

相关推荐

新手站长从“心”出发,感谢16年您始终不离不弃。