tencent cloud

Cloud Virtual Machine

カスタムイメージの作成

Download
フォーカスモード
フォントサイズ
最終更新日: 2026-06-15 15:03:54

概要

Tencent Cloudが提供するパブリックイメージを使用するだけでなく、カスタムイメージを作成することもできます。カスタムイメージを作成した後、Tencent Cloudコンソールでこのイメージと同一構成のTencent Cloud CVMインスタンスをすばやく作成することができます。
説明:
イメージの基盤となるデータストレージは、CBSスナップショットサービスを使用します。
カスタムイメージを作成する場合、デフォルトでイメージに関連付けられたスナップショットが作成されます。カスタムイメージを保持すると一定のスナップショット料金が発生します。詳細については、Billing Overview をご参照ください。

注意事項

各地域では、カスタムイメージは500個までサポートしています。通常、作成されたカスタムイメージの容量サイズはインスタンスのディスクサイズと一致します。
Linuxインスタンスにデータディスクがあっても、システムディスクにのみイメージを作成する場合は、/etc/fstabにデータディスク構成が含まれていないことを確認してください。そうしないと、このイメージで作成したインスタンスを正常に起動できません。
イメージの作成には10分以上かかる場合があります。具体的な時間はインスタンスのデータサイズによって異なります。業務への影響を避けるためには、事前に関連準備を行ってください。
Windowsインスタンスをドメインに参加させ、ドメインアカウントを利用する必要がある場合は、カスタムイメージを作成する前に、Sysprep操作を実行してインスタンスがドメインに参加した後にSIDが一意であることを確保してください。詳細については、SysprepによるCVMのドメイン参加後のSID一意性の実現 をご参照ください。
25Gbpsネットワークカードを搭載したベアメタルサーバー(つまり、モデルのプライベートネットワーク帯域幅が25Gbps)を使用している場合、コンソールおよびAPIを利用したカスタムイメージの作成はサポートされていません。

操作手順

インスタンスコンソールを利用した作成
イメージコンソールを利用した作成
API 経由でカスタムイメージの作成
Linuxクライアント側でのPackerツールの利用
Windows クライアント側の Packer ツールベース

インスタンスのシャットダウン(オプション)

1. CVMコンソール にログインし、対応するインスタンスのシャットダウンが必要かどうかを確認します。
ご注意:
2018年7月以降にパブリックイメージを元に作成されたインスタンス(システムディスクはCBS)はオンラインイメージ制作(インスタンスをシャットダウンせずにイメージを制作すること)をサポートしています。これ以外でのインスタンスは、インスタンスをシャットダウンしてからイメージを制作し、イメージが現在のインスタンスデプロイ環境と完全に一致するようにしてください。
インスタンスをシャットダウンする必要がある場合は、次の手順に進みます。
インスタンスをシャットダウンする必要がない場合は、カスタムイメージの作成 に進んでください。
2. インスタンスの管理画面で、実際に使用されているビューモードに従って操作します。
リストビュー:インスタンスの行の右側にあるその他 > インスタンス状態 > シャットダウンを選択します。下図をご参照ください。

タブビュー:インスタンスの詳細ページにあるシャットダウンを選択します。下図をご参照ください。


カスタムイメージの作成

1. インスタンスの管理画面で、実際に使用されているビューモードに従って操作します。
リストビューその他 > メ-ジ/オペレ-ティングシステム > カスタムイメージの作成を選択します。下図をご参照ください。

タブビュー:右上のその他の操作 > メ-ジ/オペレ-ティングシステム > カスタムイメージの作成を選択します。下図をご参照ください。

2. 表示されたカスタムイメージの作成ウィンドウで、以下の情報を参考に設定を行います。
イメージ名イメージの説明:名称と説明をカスタマイズします。
タグ:必要に応じてインスタンスのタグを追加できます。タグは、クラウドリソースの分類、検索、および集約に使用されます。 詳細については、タグ をご参照ください。
説明:
システムディスクとデータディスクを含むカスタムイメージを作成するには、チケットを送信 してください。
3. イメージの作成をクリックします。
左側のナビゲーションバーにある イメージ をクリックし、イメージページでイメージの作成進捗を確認できます。

カスタムイメージを利用したインスタンスの作成(オプション)

イメージの作成が完了したら、イメージリストで作成したイメージを選択し、その行の右側にあるインスタンス作成をクリックすると、以前と同じイメージのサーバーを購入できます。下図をご参照ください。


创建自定义镜像

1. CVMコンソール にログインし、対応するインスタンスのシャットダウンが必要かどうかを確認します。
ご注意:
2018年7月以降に作成されたインスタンス(システムディスクがCBS)は、オンラインイメージ作成(インスタンスをシャットダウンせずにイメージを作成すること)をサポートしています。これ以外のインスタンスについては、インスタンスをシャットダウンしてからイメージを作成し、イメージが現在のインスタンスのデプロイ環境と完全に一致するようにしてください。
必要であれば、インスタンスをシャットダウンしてください。
必要ない場合は、次の手順に進んでください。
2. 左側のナビゲーションバーにある イメージ をクリックし、イメージページに移動して、リストの上にあるカスタムイメージの作成を選択します。

3. 表示されたカスタムイメージの作成ウィンドウで、以下の情報を参考に設定を行います。
インスタンスの選択:この地域でカスタムイメージを作成する必要があるインスタンスを選択します。
イメージ名イメージの説明:名称と説明をカスタマイズします。
タグ:必要に応じてインスタンスのタグを追加できます。タグは、クラウドリソースの分類、検索、および集約に使用されます。 詳細については、タグ をご参照ください。
インスタンスにデータディスクが含まれている場合、デフォルトではシステムディスクとデータディスクを含むインスタンス全体のイメージが作成されます。システムディスクのみのイメージを作成するように指定することもできます。
4. イメージの作成をクリックします。
その後、イメージページでイメージの作成進捗を確認できます。

カスタムイメージを利用したインスタンスの作成(オプション)

イメージの作成が完了したら、イメージリストで作成したイメージを選択し、その行の右側にあるインスタンス作成をクリックすると、以前と同じイメージのサーバーを購入できます。下図をご参照ください。

CreateImage APIを使用してカスタムイメージを作成することができます。詳細については、 CreateImage をご参照ください。

背景情報

Packerは、オープンソースで軽量な自動イメージ構築ツールです。JSON形式またはHCL2HashiCorp Configuration Language)の設定ファイルを使用してイメージの構築プロセスを定義することで、迅速かつ信頼性の高いイメージ構築とデプロイを実現します。また、Packerはイメージのテストと更新に利便性をもたらし、イメージの運用保守および管理にかかる時間コストを削減します。詳細については、Packer公式サイトをご参照ください。

前提条件

サブユーザーが作成され、CVMおよびTencentCloud APIのすべての権限が付与されています。
サブユーザーの作成については、サブユーザーの新規作成をご参照ください。
サブユーザーに権限を付与する方法については、サブユーザーの権限設定をご参照ください。本ドキュメントでは、サブユーザーにQcloudCVMFullAccessQcloudCVMFinanceAccess、およびQcloudAPIFullAccessのプリセットポリシーを付与します。
サブユーザーの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. 以下のコマンドを実行してPackerのバージョンを確認し、インストールが成功したかどうかを検証します。
packer -v
説明:
Packerのインストールについては、Packer公式サイトもご参照ください。

Packerテンプレートの定義

Packerを使用してカスタムイメージを作成するには、まずHCL形式またはJSON形式のテンプレートファイルを定義する必要があります。次に、このファイル内でカスタムイメージを作成するためのBuilders(ビルダー)とProvisioners(プロビジョナー)、および作成プロセスで使用する一時的なインスタンス情報を指定する必要があります。
1. 以下のコマンドを実行して、テンプレートファイルを作成します。
HCL フォーマット
ステートメント statement は複数のサブステートメントで構成されます。各サブステートメントは操作 action、リソース resource、条件 condition、および効果 effect の四つの要素を含み、ここで、condition はオプション項目です。
vim tencentcloud.pkr.hcl
vim tencentcloud.json
2. iキーを押してファイル編集モードに入り、実際の状況に応じてカスタムイメージ生成器の設定とインスタンス情報を編集します。
HCL フォーマット
ステートメント statement は複数のサブステートメントで構成されます。各サブステートメントは操作 action、リソース resource、条件 condition、および効果 effect の四つの要素を含み、ここで、condition はオプション項目です。
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-6
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
いいえ
起動時の最大帯域幅(単位:Mbps)です。値は1~100の間で設定できます。
instance_name
いいえ
インスタンス名です。
disk_type
いいえ
システムディスクのタイプです。デフォルトはCLOUD_PREMIUMです。システムディスクの情報を参照してください。
disk_size
いいえ
システムディスクのサイズです。値の範囲(単位:GB):
LOCAL_BASIC: 50
Other: 50 ~ 1000(greater than 50の場合は許可リストが必要です)
data_disks
いいえ
データディスクの構成です。ディスクの詳細については、データディスクの詳細を参照してください。
vpc_id
いいえ
一時的なCVMを作成するために必要なvpc_idです。
vpc_name
いいえ
VPCの名前です。CVMを作成する前に作成するVPCの名前です。入力しない場合、デフォルト値(例:packer-****)が設定されます。
cidr_block
いいえ
vpc_idが設定されていない場合、作成するVPCのCIDRブロックを指定します。
例:false
subnet_id
いいえ
一時的なCVMを作成するために必要なsubnet_idです。
subnet_name
いいえ
サブネットの名前です。CVMを作成する前に作成するサブネットの名前です。入力しない場合、デフォルト値(例:packer-****)が設定されます。
subnet_cidr_block
いいえ
subnet_idが設定されていない場合、作成するサブネットのCIDRブロックを指定します。
例:false
security_group_id
いいえ
一時的なCVMを作成するために必要なセキュリティグループIDです。
security_group_name
いいえ
セキュリティグループの名前です。security_group_idが設定されていない場合、セキュリティグループを作成する際に必要です。
user_data
いいえ
ユーザーデータです。
user_data_file
いいえ
ユーザーデータファイルです。
host_name
いいえ
ホスト名です。
run_tags
いいえ
Tagです。一時的なCVMを作成する際にインスタンスタグを指定するために使用され、イメージの作成には使用されません。
データディスクの詳細
パラメータ
必須かどうか
説明
disk_type
はい
データディスクのタイプです。有効な選択肢は、CLOUD_BASICCLOUD_PREMIUM、およびCLOUD_SSDです。
disk_size
はい
データディスクのサイズです。
disk_snapshot_id
はい
データディスクのスナップショットのIDです。
その他のパラメータについては、Packer公式サイトのパラメータを参照してください。
3. Escキーを押し、wq を入力してからエンターキーを押すと、保存して終了します。

创建自定义镜像

1. 環境変数SecretIdとSecretKeyを設定します。
export TENCENTCLOUD_SECRET_ID=xxxx
export TENCENTCLOUD_SECRET_KEY=xxxx
2. 以下のコマンドを実行して、カスタムイメージの作成を開始します。
HCL フォーマット
ステートメント statement は複数のサブステートメントで構成されます。各サブステートメントは操作 action、リソース resource、条件 condition、および効果 effect の四つの要素を含み、ここで、condition はオプション項目です。
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 CVMコンソールにログインします。
3.2 左側のナビゲーションバーで、イメージをクリックし、イメージ管理ページに移動します。
3.3 左上の地域をクリックすると、ドロップダウンリストでその地域のカスタムイメージを確認できます。


操作シナリオ

ここでは、Windowsクライアント上でPackerツールを使用し、WinRM接続方式を通じてカスタムイメージを作成する方法について説明します。PackerはHashiCorpが提供する自動イメージ構築ツールであり、迅速かつ一貫したCVMカスタムイメージの作成を支援します。
ご注意:
WindowsはWinRMに依存してネットワーク接続を確立し、WinRMを通じてコマンドを送信します。Windows公共イメージではデフォルトでWinRMが完全に有効化されていないため、UserDataを利用してWinRMを有効化する必要があります。元々RunInstances APIを呼び出す際にUserDataに配置されていた業務コードは、provisioners部分で実行します。
Packerがマシンを作成してイメージをパッケージする際、UserDataコードの実行完了を待たずにprovisionersモジュールを実行します。また、PackerはWindowsシステム上でWinRMに強く依存していますが、sysprep公共イメージではWinRMが完全に有効化されていません。
Packerはバージョン1.9.0以降、PluginがPacker本体から分離され、Pluginを個別にインストールする必要があります。インストールしないとbuilder unknownエラーが発生します。一方、バージョン1.9.0より前(例:バージョン1.8.7)のPackerにはPluginが標準で搭載されています。

前提条件

サブユーザーが作成され、CVMおよびTencentCloud APIのすべての権限が付与されています。
サブユーザーの作成については、サブユーザーの新規作成をご参照ください。
サブユーザーに権限を付与する方法については、サブユーザーの権限設定をご参照ください。ここでは、サブユーザーにQcloudCVMFullAccessQcloudCVMFinanceAccess、およびQcloudAPIFullAccessのプリセットポリシーを付与します。
サブユーザーのSecretIdとSecretKeyが作成されました。操作手順については、サブアカウントアクセスキー管理をご参照ください。記録し、適切に保管してください。
ご注意:
ルートアカウントのSecretIdとSecretKeyを利用することは可能です。ただし、ルートアカウントは配下のリソースに対して完全な制御権限を持っているため、アクセスキーの漏洩によるセキュリティリスクを避けるため、ルートアカウントの利用は推奨しません。サブアカウントを作成してください。
クライアント側(packer.exeコマンドを実行するホスト)とPackerビルドマシンとの間のネットワークが相互接続されていることを確認してください。プライベートネットワークによる相互通信を確保するため、config.jsonでパブリックIPアドレスの割り当て("associate_public_ip_address": true)を設定するか、またはクライアント側をconfig.jsonで指定された同一VPC内の他のCVMにすることをお勧めします。

操作手順

ステップ1:Packer をインストールする

1. Packerをダウンロードしてください。
2. Packerのインストールパッケージを解凍します。ここではバージョン1.14.1を例に挙げます。解凍されたファイルにはpacker.exeが含まれています。CMDコマンドラインを使用して解凍したディレクトリに移動し、以下のコマンドを実行してPacker環境の初期化を完了してください。
packer.exe plugins install github.com/hashicorp/tencentcloud
説明:
Packer環境の初期化にはGitHubからPacker Pluginを取得する必要があります。中国本土のインスタンスからGitHubにアクセスする速度は遅いため、しばらくお待ちください。エラーが発生した場合は再試行するか、他の国や地域のホストを利用してください。

ステップ2:Packer テンプレートを定義する

Packerを使用してカスタムイメージを作成するには、まずJSON形式またはHCL形式のテンプレートファイルを定義する必要があります。テンプレートファイル内で、カスタムイメージを作成するためのBuilders(ビルダー)とProvisioners(プロビジョナー)、および作成プロセスで使用する一時的なインスタンス情報を指定してください。
Tencent Cloudの完全なWindows Packer設定ファイルconfig.jsonの内容は以下の通りです:
{
"builders": [
{
"type": "tencentcloud-cvm",
"secret_id": "あなたのsecret_id",
"secret_key": "あなたのsecret_key",
"region": "ap-shanghai",
"zone": "ap-shanghai-5",
"instance_type": "S5.MEDIUM4",
"source_image_id": "img-m07ny34j",
"disk_size": 40,
"disk_type": "CLOUD_PREMIUM",
"vpc_id": "vpc-9yabaw4m",
"subnet_id": "subnet-ih08bvf9",
"communicator": "winrm",
"winrm_port": 5985,
"winrm_username": "Administrator",
"winrm_password": "大文字、小文字、数字で構成される複雑なパスワード",
"image_name": "test_Packer1",
"security_group_id": "sg-c65mz0li",
"packer_debug": true,
"associate_public_ip_address": true,
"run_tags": {
"good": "luck"
},
"user_data_file": "winrm_enable_userdata.ps1"
}
],
"provisioners": [
{
"type": "powershell",
"inline": [
"mkdir C:\\\\test -force;wget http://windows-1251783334.cos.ap-shanghai.myqcloud.com/installChrome.ps1 -Outfile c:\\\\test\\\\packer.ps1;Start-Process powershell.exe -ArgumentList '-NoProfile -File c:\\\\test\\\\packer.ps1' -Wait;"
]
}
]
}
実際の状況に応じて、カスタムイメージ生成器の設定とインスタンス情報を変更してください。各パラメータの説明は以下の通りです:
パラメータ
必須
説明
secret_id
はい
TENCENTCLOUD_SECRET_ID環境変数を設定することをお勧めします。
secret_key
はい
TENCENTCLOUD_SECRET_KEY環境変数を設定することをお勧めします。
region
はい
地域です。一時的なCVMを作成する地域、およびイメージを作成する地域です。
例:ap-guangzhou
zone
はい
アベイラビリティーゾーンです。一時的なCVMを作成するアベイラビリティーゾーンです。
例:ap-guangzhou-4
instance_type
はい
インスタンスモデルです。異なるインスタンスモデルは、異なるリソース仕様を指定します。
例:S5.MEDIUM4
source_image_id
はい
ベースイメージIDです。一時的なCVMイメージの作成に使用され、公共イメージリストから取得するか、またはDescribeImagesインターフェースを通じて照会して取得できます。
例:img-m07ny34j
image_name
はい
カスタムイメージの名前です。英字、数字、-で構成され、60文字を超えてはいけません。
例:test_Packer1
communicator
はい
Packerがターゲットマシンに接続する方法を指定します。winrmに固定され、WinRM接続を通じてマシンと通信を確立します。
winrm_port
はい
WinRM接続のポート番号です。5985に固定されています。
winrm_username
はい
WinRM接続に使用するユーザー名です。winrm_enable_userdata.ps1内のユーザー名と一致させる必要があります。
winrm_password
はい
WinRM接続に使用するパスワードです。winrm_enable_userdata.ps1内のパスワードと一致させる必要があります。
associate_public_ip_address
いいえ
一時的なCVMのパブリックIPアドレスを有効化するかどうかです。デフォルトはfalseです。パブリックIPアドレスで接続する場合は、trueに設定してください。
disk_type
いいえ
システムディスクのタイプです。デフォルトはCLOUD_PREMIUMです。詳細についてはSystemDiskを参照してください。
disk_size
いいえ
システムディスクのサイズです。単位はGBで、例えば40GBの場合は40を入力してください。
vpc_id
いいえ
一時的なCVMを作成するために必要なVPC IDです。
subnet_id
いいえ
一時的なCVMを作成するために必要なサブネットIDです。
security_group_id
いいえ
一時的なCVMを作成するために必要なセキュリティグループIDです。
user_data_file
いいえ
ユーザーデータファイルのパスです。
inline
いいえ
イメージ作成前に必要な業務ロジックです。例えば、パブリックネットワークに接続可能な場合、Chromeブラウザを自動インストールします。
その他のパラメータについては、Packer公式サイトのパラメータを参照してください。

ステップ3:カスタムイメージの作成

1. config.jsonwinrm_enable_userdata.ps1をPackerのメインプログラムpacker.exeと同じディレクトリに配置してください。
2. 対応するディレクトリに切り替えた後、以下のコマンドを実行します:
packer.exe build config.json
説明:
packer.exeの実行中、CVMコンソールで作成されたビルドマシンを確認できますが、そのサーバーは操作しないでください。イメージの作成が成功したか失敗したかに関わらず、最終的にそのサーバーは自動的に回収されます。回収に異常がある場合は、オンラインカスタマーサービスに連絡して対応してください。
3. コマンドの実行が完了した後、出力結果に以下のような情報が含まれている場合、イメージの作成が成功したことを示します:
==> tencentcloud-cvm: Waiting for image creating...
==> tencentcloud-cvm: Image ID: img-xxxxxx
Build 'tencentcloud-cvm' finished after ...
CVMコンソールカスタムイメージページに移動して、作成済みのイメージを確認することもできます。

よくあるご質問

イメージ作成時にプロンプト Some builds didn't complete successfully and had errors: tencentcloud-cvm: Image name xxxx exists

config.jsonを使用してイメージを一度作成した後、再利用する際にはimage_nameの値を更新する必要があります。

イメージ作成時に Waiting for WinRM become available... が常に表示される

config.json内のwinrm_passwordwinrm_enable_userdata.ps1内のパスワードが一致していることを確認してください。winrm_enable_userdata.ps1のパスワード設定位置は以下の通りです:


イメージ作成時にプロンプト Script exited with non-zero exit status: 16001.

セキュリティソフトウェアのネットワークセキュリティ対策により、Packerのネットワークアクセスが影響を受け、パッケージングがタイムアウトする可能性があります。クライアント側では、可能な限り独立したネットワーク環境にあるCVMを利用することをお勧めします。

関連操作

各地域のカスタムイメージ数量を確認する

イメージリソースが多く、複数地域にデプロイされているようなシナリオでは、各リージョンのイメージ数をワンクリックで検索することで、イメージリソースをより効率的に管理できます。
1. CVMコンソールにログインします。
2. 左側のナビゲーションバーで、イメージをクリックし、イメージ管理ページに移動します。
3. 左上の地域をクリックすると、ドロップダウンリストで各リージョンのカスタムイメージ数量を確認できます。

4. 共有イメージ管理ページに切り替え、左上の地域をクリックすると、ドロップダウンリストで各リージョンの共有イメージ数量を確認できます。

データディスク上のデータ移行

新しいインスタンスを起動する際に、既存のインスタンスデータディスク上のデータを保持する必要がある場合は、まずデータディスクのスナップショットを作成し、新しいインスタンス起動時にそのデータディスクスナップショットを使用して新しいCBSデータディスクを作成してください。
詳細については、スナップショットによるCBSの作成をご参照ください。


ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック