ここでは、Packer のインストールとそれを使用したカスタムイメージの作成方法について説明します。

前提条件

AccessKey が作成されている必要があります。

Alibaba Cloud アカウントの AccessKey は使用しないでください。 代わりに、RAM ユーザーを作成し、アカウントのセキュリティを維持するために RAM アカウントを使用して必要な AccessKey を作成します。

手順 1. Packer のインストール

公式の『Packer ダウンロードページ』にアクセスし、オペレーティングシステムに必要なバージョンの Packer を選択します。

Linux サーバーへの Packer のインストール
  1. Linux サーバーに接続してログインします。 接続するサーバーが ECS Linux インスタンスの場合は、「パスワードを使用した Linux インスタンスへの接続」をご参照ください。
  2. cd /usr/local/bin を実行して /usr/local/bin ディレクトリに移動します。
    /usr/local/bin は環境変数ディレクトリです。 このディレクトリ、または環境変数に追加された別のディレクトリに Packer をインストールします。
  3. wget https://releases.hashicorp.com/packer/1.1.1/packer_1.1.1_linux_amd64.zip を実行して Packer のインストーラーをダウンロードします。 他の Packer のバージョンのインストーラーをダウンロードするには、公式『Packer のダウンロードページ』を参照します。
  4. unzip packer_1.1.1_linux_amd64.zip を実行してパッケージを解凍します。
  5. packer -v を実行して Packer のインストール状態を確認します。 Packer のバージョン番号が返されれば、Packer は正常にインストールされています。 "command not found" のエラーが返された場合は、Packer は正しくインストールされていません。
Windows サーバーへの Packer のインストール

次の例では、Windows Server 2012 64 ビットを使用しています。

  1. Windows サーバーに接続してログインします。 接続先のサーバーが ECS Windows インスタンスの場合は、「Windowsインスタンスへの接続」をご参照ください。
  2. 公式『Packer のダウンロードページ』を開き、64 ビット Windows に適切な Packer のインストーラーを選択します。
  3. 指定したディレクトリにパッケージを解凍し、Packer をインストールします。
  4. PATH 環境変数で Packer のディレクトリを定義します。
    1. [コントロールパネル] を開きます。
    2. [全てのコントロールパネル項目] > [システム] > [システムの詳細設定] を選択します。
    3. [環境変数] をクリックします。
    4. システム変数リストから [Path] をクリックします。
    5. この例の C:\Packer のような、Paker インストールディレクトリを [変数値] に加えます。 複数のディレクトリは半角のセミコロン (;) で区切ります。 [OK] をクリックします。
  5. 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 テンプレートファイルを指定してカスタムイメージを作成するには、次の手順を実行します。

  1. export ALICLOUD_ACCESS_KEY=your AccessKeyID を実行して、 AccessKey ID をインポートします。
  2. export ALICLOUD_SECRET_KEY=your AccessKeySecret を実行して、 AccessKey Secret をインポートします。
  3. 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 インスタンスを作成します。 詳細は、「カスタムイメージからインスタンスの作成」をご参照ください。

参照