すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:オンプレミスイメージを作成およびインポートするためのPackerの使用

最終更新日:May 15, 2025

Packerは、Windows、Linux、macOSなどの主要なオペレーティングシステム用のイメージを並行して作成するために使用される軽量のオープンソースツールです。このトピックでは、Packerを使用してオンプレミスイメージを作成し、Alibaba Cloudにアップロードする方法について説明します。このトピックでは、Ubuntu 16.04を実行しているオンプレミスサーバーでCentOS 6.9イメージが作成されます。

前提条件

  • AccessKey IDとAccessKey Secretで構成されるAccessKeyペアを取得済みであること。詳細については、「AccessKeyペアを取得する」をご参照ください。

    説明
    • Alibaba CloudアカウントのAccessKeyペアの漏洩を防ぐために、Resource Access Management (RAM) ユーザーを作成し、RAMユーザーの認証情報を使用してAccessKeyペアを作成することをお勧めします。RAMユーザーの作成方法については、「RAMユーザーを作成する」をご参照ください。

    • RAMユーザーのAccessKey Secretは、RAMユーザーのAccessKeyペアを作成するときにのみ表示されます。AccessKeyペアの作成後、AccessKey Secretを照会することはできません。AccessKey Secretを記録し、機密性を保持してください。

  • Object Storage Service (OSS) が有効化されており、OSSバケットが作成済みであること。詳細については、「OSSを有効にする」をご参照ください。

    説明

    イメージのディスクサイズは5 GBより大きくすることはできません。詳細については、「PutObject」をご参照ください。

背景情報

Packerは、ビルダープロビジョナーポストプロセッサなど、さまざまなコンポーネントで構成されています。Packerは、Hashicorp Configuration Language (HCL) またはJSON形式のテンプレートを使用して、カスタムイメージの作成プロセスを簡素化します。さらに、Packerはイメージ作成プロセスを標準化および自動化し、クラウド移行を容易にするためにイメージをコードとして定義できるようにします。Packerの詳細については、Packer公式ドキュメントをご参照ください。

手順

この例では、次のソフトウェアバージョンが使用されています。操作は、ソフトウェアのバージョンによって異なる場合があります。

  • オンプレミスサーバーのオペレーティングシステム:Ubuntu 16.04

  • イメージを作成するオペレーティングシステム:CentOS 6.9

手順 1:Kernel-based Virtual Machine (KVM) をインストールする

  1. 次のコマンドを実行して、オンプレミスサーバーがKVMをサポートしているかどうかを確認します。この例では、ソースサーバーはUbuntu 16.04を実行しています。

    egrep "(svm|vmx)" /proc/cpuinfo

    次のコマンド出力例は、ソースサーバーがKVMをサポートしていることを示しています。

    pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp
    flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
  2. オンプレミスサーバーがKVMをサポートしている場合は、次のコマンドを実行してKVMと関連コントロールをインストールします。

    sudo apt-get update
    sudo apt-get install qemu-kvm qemu virt-manager virt-viewer  libvirt-bin bridge-utils
  3. KVMが想定どおりにインストールされているかどうかを確認します。

    1. KVMカーネルモジュールがロードされているかどうかを確認します。

      sudo lsmod | grep kvm

      KVMカーネルモジュールがロードされている場合、kvmkvm_intel、または kvm と kvm_amd を含むコマンド出力が返されます。KVM内核

    2. libvirtがインストールされているかどうかを確認します。

      sudo dpkg -l libvirt-bin

      libvirtがインストールされている場合、libvirt-bin を含むコマンド出力が返されます。libvirt

    3. QEMUがインストールされているかどうかを確認します。

      sudo dpkg -l qemu-kvm

      QEMUがインストールされている場合、qemu-kvm を含むコマンド出力が返されます。QEMU

    コマンド出力が想定どおりであれば、KVMはインストールされています。コマンド出力のいずれかが想定どおりでない場合は、KVMを再インストールする必要がある場合があります。

手順 2:Packerをインストールする

オンプレミスサーバーにPackerをインストールします。詳細については、「Packerを使用してカスタムイメージを作成する」トピックの「手順 1:Packerをインストールする」セクションをご参照ください。

手順 3:Packerテンプレートを定義する

この例では、CentOS 6.9イメージが作成されます。他のオペレーティングシステムのイメージを作成するには、ニーズに合わせてPackerテンプレート構成ファイル centos.json を変更します。詳細については、「Packerテンプレートを作成する」をご参照ください。

  1. ソースサーバーで次のコマンドを実行して、作業ディレクトリを /usr/local ディレクトリに変更します。

    cd /usr/local
  2. Alibaba Cloudが提供する centos.json 構成ファイルをダウンロードします。

    sudo wget https://raw.githubusercontent.com/hashicorp/packer-plugin-alicloud/main/builder/examples/local/centos.json
  3. Alibaba Cloudが提供する ks.cfg 構成ファイルをダウンロードします。

    sudo wget https://raw.githubusercontent.com/hashicorp/packer-plugin-alicloud/main/builder/examples/local/http/centos-6.8/ks.cfg
  4. ディレクトリを作成します。この例では、http/centos-6.9 ディレクトリが作成されます。

    sudo mkdir -p http/centos-6.9
  5. ks.cfg 構成ファイルを http/centos-6.9 ディレクトリに移動します。

    sudo mv ks.cfg http/centos-6.9/

手順 4:Packerを使用してオンプレミスイメージを作成し、イメージをインポートする

  1. オンプレミスサーバーで次のコマンドを実行して、AccessKey IDをインポートします。

    export ALICLOUD_ACCESS_KEY=<AccessKey ID>

    上記のコマンドで、<AccessKey ID> を実際のAccessKey IDに置き換えます。

  2. AccessKey Secretをインポートします。

    export ALICLOUD_SECRET_KEY=<AccessKey Secret>

    上記のコマンドで、<AccessKey Secret> を実際のAccessKey Secretに置き換えます。

  3. オンプレミスイメージを作成し、Alibaba Cloudにインポートします。

    sudo packer build centos.json

    次のコマンド出力例は、オンプレミスイメージがカスタムイメージとして中国 (北京) リージョンにインポートされたことを示しています。

    qemu output will be in this color.
     ==> qemu: Downloading or copying ISO
         qemu: Downloading or copying: http://mirrors.aliyun.com/centos/6.9/isos/x86_64/CentOS-6.9-x86_64-minimal.iso
     ................................................
     ==> qemu: Running post-processor: alicloud-import
         qemu (alicloud-import): Deleting import source https://oss-cn-beijing.aliyuncs.com/packer/centos_x86_64
     Build 'qemu' finished.
     ==> Builds finished. The artifacts of successful builds are:
     --> qemu: Alicloud images were created:
     cn-beijing: XXXXXXXX
  4. ECS コンソール - イメージ に移動します。

  5. 上部ナビゲーションバーの左上隅で、centos.json 構成ファイルが配置されているリージョンを選択します。この例では、中国 (北京) が選択されています。

  6. [カスタムイメージ] タブで、CentOS 6.9イメージを表示します。

Packerテンプレートを作成する

次のJSONコードは、CentOS 6.9イメージを作成するために使用されるPackerテンプレートの作成方法を示しています。別のオペレーティングシステムのイメージを作成するには、ニーズに合わせてコードを変更します。

{"variables": {
        "box_basename": "centos-6.9",
        "build_timestamp": "{{isotime \"20060102150405\"}}",
        "cpus": "1",
        "disk_size": "4096",
        "git_revision": "__unknown_git_revision__",
        "headless": "",
        "http_proxy": "{{env `http_proxy`}}",
        "https_proxy": "{{env `https_proxy`}}",
        "iso_checksum_type": "md5",
        "iso_checksum": "af4axxxxxxxxxxxxxxxxx192a2", // ISOファイルのチェックサム
        "iso_name": "CentOS-6.9-x86_64-minimal.iso",
        "ks_path": "centos-6.9/ks.cfg",
        "memory": "512",
        "metadata": "floppy/dummy_metadata.json",
        "mirror": "http://mirrors.aliyun.com/centos",
        "mirror_directory": "6.9/isos/x86_64",
        "name": "centos-6.9",
        "no_proxy": "{{env `no_proxy`}}",
        "template": "centos-6.9-x86_64",
        "version": "2.1.TIMESTAMP"
      },
    "builders":[
        {
          "boot_command": [
            "<tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/{{user `ks_path`}}<enter><wait>"
          ],
          "boot_wait": "10s",
          "disk_size": "{{user `disk_size`}}",
          "headless": "{{ user `headless` }}",
          "http_directory": "http",
          "iso_checksum": "{{user `iso_checksum`}}",
          "iso_checksum_type": "{{user `iso_checksum_type`}}",
          "iso_url": "{{user `mirror`}}/{{user `mirror_directory`}}/{{user `iso_name`}}",
          "output_directory": "packer-{{user `template`}}-qemu",
          "shutdown_command": "echo 'vagrant'|sudo -S /sbin/halt -h -p",
          "ssh_password": "vagrant",
          "ssh_port": 22,
          "ssh_username": "root",
          "ssh_wait_timeout": "10000s",
          "type": "qemu",
          "vm_name": "{{ user `template` }}.raw",
          "net_device": "virtio-net",
          "disk_interface": "virtio",
          "format": "raw"
        }
      ],
    "provisioners": [{
          "type": "shell",
          "inline": [
                "sleep 30",
                "yum install cloud-util cloud-init -y" // cloud-util と cloud-init をインストールする
              ]
        }],
      "post-processors":[
        {
          "type":"alicloud-import",
          "oss_bucket_name": "packer",
          "image_name": "packer_import",
          "image_os_type": "linux",
          "image_platform": "CentOS",
          "image_architecture": "x86_64",
          "image_system_size": "40",
          "region":"cn-beijing"
        }
      ]
}

QEMU Packerビルダーの必須パラメーター

QEMU Packerビルダーは、KVM仮想マシンイメージを作成するために使用されます。次の表に、ビルダーの必須パラメーターを示します。オプションパラメーターについては、QEMUビルダーをご参照ください。

必須パラメーター

タイプ

説明

iso_checksum

文字列

オペレーティングシステムのISOファイルのチェックサム。Packerは、ISOファイルがアタッチされている仮想マシンが起動する前に、このパラメーターを確認します。iso_checksumiso_checksum_url パラメーターの少なくともいずれかを指定してください。iso_checksum パラメーターを指定すると、iso_checksum_url の値は自動的に無視されます。

iso_checksum_type

文字列

指定されたオペレーティングシステムのISOファイルのチェックサムタイプ。有効な値:

  • none:チェックサムプロセスを無視します。この値を使用しないことをお勧めします。

  • md5

  • sha1

  • sha256

  • sha512

iso_checksum_url

文字列

オペレーティングシステムのISOファイルのチェックサムを含むGNUまたはBSDスタイルのチェックサムファイルを指すURL。iso_checksumiso_checksum_url パラメーターの少なくともいずれかを指定してください。iso_checksum パラメーターを指定すると、iso_checksum_url の値は自動的に無視されます。

iso_url

文字列

イメージを含むISOファイルを指すURL。URLは、HTTP URLまたはファイルパスです。

  • URLがHTTP URLの場合、PackerはHTTP URLからファイルをダウンロードし、後でファイルを実行するためにファイルをキャッシュします。

  • URLがIMGまたはQCOW2ファイルへのファイルパスの場合、QEMU Packerビルダーはファイルを使用してカスタムイメージを作成します。ファイルパスを指定する場合は、disk_imagetrue に設定します。

headless

ブール値

デフォルトでは、PackerはGUIを使用してQEMU仮想マシンを構築します。headlessTrue に設定すると、コンソールを持たない仮想マシンが起動します。

Packerプロビジョナーの必須パラメーター

Packerプロビジョナーには、オンプレミスイメージのAlibaba Cloudへの自動アップロードを可能にするポストプロセッサモジュールが含まれています。次の表に、Packerプロビジョナーの必須パラメーターを示します。オプションパラメーターについては、ポストプロセッサをご参照ください。

必須パラメーター

タイプ

説明

access_key

文字列

オンプレミスイメージのインポートに使用するAccessKey ID。RAMユーザーのAccessKey IDの取得方法については、「RAMユーザーのAccessKeyペアに関する情報を表示する」をご参照ください。

secret_key

文字列

オンプレミスイメージのインポートに使用するAccessKey Secret。RAMユーザーのAccessKey Secretは、RAMユーザーのAccessKeyペアを作成するときにのみ表示されます。AccessKeyペアの作成後、AccessKey Secretを照会することはできません。詳細については、「AccessKeyペアを取得する」をご参照ください。

region

文字列

オンプレミスイメージをアップロードするリージョンのID。この例では、cn-beijing が使用されています。詳細については、「リージョンとゾーン」をご参照ください。

image_name

文字列

アップロードするオンプレミスイメージの名前。

  • 名前は2~128文字の長さでなければなりません。

  • 名前は文字で始まる必要があります。

  • 名前には、文字、数字、アンダースコア(_)、ハイフン(-)を含めることができます。

  • 名前はhttp://またはhttps://で始めることはできません。

oss_bucket_name

文字列

オンプレミスイメージのアップロード先のOSSバケットの名前。指定されたOSSバケットが存在しない場合、Packerはイメージのアップロード時に指定された名前でOSSバケットを自動的に作成します。

image_os_type

文字列

オンプレミスイメージのタイプ。有効な値:

  • linux

  • windows

image_platform

文字列

オンプレミスイメージのディストリビューション。この例では、CentOSが使用されています。

image_architecture

文字列

オンプレミスイメージのアーキテクチャ。有効な値:

  • i386

  • x86_64

format

文字列

オンプレミスイメージのフォーマット。有効な値:

  • RAW

  • VHD