ここでは、Packer のインストールとそれを使用したカスタムイメージの作成方法について説明します。
前提条件
AccessKey が作成されている必要があります。
手順 1. Packer のインストール
公式の『Packer ダウンロードページ』にアクセスし、オペレーティングシステムに必要なバージョンの Packer を選択します。
Linux サーバーへの Packer のインストール- Linux サーバーに接続してログインします。 接続するサーバーが ECS Linux インスタンスの場合は、「パスワードを使用した Linux インスタンスへの接続」をご参照ください。
cd /usr/local/bin
を実行して /usr/local/bin ディレクトリに移動します。注 /usr/local/bin は環境変数ディレクトリです。 このディレクトリ、または環境変数に追加された別のディレクトリに Packer をインストールします。wget https://releases.hashicorp.com/packer/1.1.1/packer_1.1.1_linux_amd64.zip
を実行して Packer のインストーラーをダウンロードします。 他の Packer のバージョンのインストーラーをダウンロードするには、公式『Packer のダウンロードページ』を参照します。unzip packer_1.1.1_linux_amd64.zip
を実行してパッケージを解凍します。packer -v
を実行して Packer のインストール状態を確認します。 Packer のバージョン番号が返されれば、Packer は正常にインストールされています。 "command not found" のエラーが返された場合は、Packer は正しくインストールされていません。
次の例では、Windows Server 2012 64 ビットを使用しています。
- Windows サーバーに接続してログインします。 接続先のサーバーが ECS Windows インスタンスの場合は、「Windowsインスタンスへの接続」をご参照ください。
- 公式『Packer のダウンロードページ』を開き、64 ビット Windows に適切な Packer のインストーラーを選択します。
- 指定したディレクトリにパッケージを解凍し、Packer をインストールします。
- PATH 環境変数で Packer のディレクトリを定義します。
- [コントロールパネル] を開きます。
- を選択します。
- [環境変数] をクリックします。
- システム変数リストから [Path] をクリックします。
- この例の C:\Packer のような、Paker インストールディレクトリを [変数値] に加えます。 複数のディレクトリは半角のセミコロン (;) で区切ります。 [OK] をクリックします。
- CMD で
packer.exe -v
を実行し、Packer のインストール状態を確認します。 Packer のバージョン番号が返されれば、Packer は正常にインストールされています。 "command not found" のエラーが返された場合は、Packer は正しくインストールされていません。
手順 2. Packer テンプレートの定義
Packer を使用してカスタムイメージを作成するには、まず JSON 形式のテンプレートファイルを作成する必要があります。 テンプレートでは、カスタムイメージを作成するために Alibaba Cloud Image Builder およびプロビジョナーを指定する必要があります。 Packer はさまざまなプロビジョナーを提供しており、カスタムイメージのコンテンツ生成モードの設定時に選択できます。 この JSON ファイルの例では、Shell プロビジョナーを使用した Packer テンプレートの定義方法を説明します。
alicloud という名前の JSON ファイルを作成し、次のコンテンツを貼り付けます。
{
"variables": {
"access_key": "{{env `ALICLOUD_ACCESS_KEY`}}",
"secret_key": "{{env `ALICLOUD_SECRET_KEY`}}"
},
"builders": [{
"type":"alicloud-ecs",
"access_key":"{{user `access_key`}}",
"secret_key":"{{user `secret_key`}}",
"region":"cn-beijing",
"image_name":"packer_basic",
"source_image":"centos_7_02_64_20G_alibase_20170818.vhd",
"ssh_username":"root",
"instance_type":"ecs.n1.tiny",
"internet_charge_type":"PayByTraffic",
"io_optimized":"true"
}],
"provisioners": [{
"type": "shell",
"inline": [
"sleep 30",
"yum install redis.x86_64 -y"
]
}]
}
パラメーター | 説明 |
access_key | AccessKey ID。 詳細は、「アクセスキーの作成」をご参照ください。 |
secret_key | AccessKey Secret。 詳細は、「アクセスキーの作成」をご参照ください。 |
region | カスタムイメージの作成に使用された一時インスタンスのリージョン |
image_name | カスタムイメージの名前 |
source_image | Alibaba Cloud パブリックイメージリストから取得した基本イメージ名 |
instance_type | カスタムイメージを作成するために生成された一時インスタンスのタイプ |
internet_charge_type | カスタムイメージを作成するために生成された一時インスタンスのインターネット帯域幅課金方法 |
provisioners | カスタムイメージの生成に使用される Packer プロビジョナー のタイプ |
手順 3. Packer を使用したカスタムイメージの作成
Packer テンプレートファイルを指定してカスタムイメージを作成するには、次の手順を実行します。
export ALICLOUD_ACCESS_KEY=your AccessKeyID
を実行して、 AccessKey ID をインポートします。export ALICLOUD_SECRET_KEY=your AccessKeySecret
を実行して、 AccessKey Secret をインポートします。packer build alicloud.json
を実行して、カスタムイメージを作成します。
ApsaraDB for Redis を含むカスタムイメージを作成するには、次の手順を実行します。
alicloud-ecs output will be in this color.
==> alicloud-ecs: Prevalidating alicloud image name...
alicloud-ecs: Found image ID: centos_7_02_64_20G_alibase_20170818.vhd
==> alicloud-ecs: Start creating temporary keypair: packer_59e44f40-c8d6-0ee3-7fd8-b1ba08ea94b8
==> alicloud-ecs: Start creating alicloud vpc
---------------------------
==> alicloud-ecs: Provisioning with shell script: /var/folders/3q/w38xx_js6cl6k5mwkrqsnw7w0000gn/T/packer-shell257466182
alicloud-ecs: Loaded plugins: fastestmirror
---------------------------
alicloud-ecs: Total 1.3 MB/s | 650 kB 00:00
alicloud-ecs: Running transaction check
---------------------------
==> alicloud-ecs: Deleting temporary keypair...
Build 'alicloud-ecs' finished.
==> Builds finished. The artifacts of successful builds are:
--> alicloud-ecs: Alicloud images were created:
cn-beijing: m-2ze12578be1oa4ovs6r9
次のステップ
このカスタムイメージを使用して ECS インスタンスを作成します。 詳細は、「カスタムイメージからインスタンスの作成」をご参照ください。
参照
- 詳細は、Alibaba Cloud Github の Packer レポジトリ 『packer-provider』をご参照ください。
- Packer の使い方の詳細については、『Packer 公式ドキュメント』をご参照ください。