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

Elastic Compute Service:Packer を使用したオンプレミスイメージの作成とインポート

最終更新日:Apr 28, 2026

Ubuntu 16.04 サーバー上で Packer および KVM を使用して CentOS 6.9 イメージをビルドし、それを Alibaba Cloud のカスタムイメージとしてインポートします。

前提条件

  • AccessKey ペア(AccessKey ID および AccessKey Secret)を取得済みである必要があります。

    説明
    • AccessKey の漏洩を防ぐため、RAM ユーザーを作成し、その認証情報を使用してください。詳細については、「RAM ユーザーの作成」をご参照ください。

    • AccessKey Secret は AccessKey ペアの作成時のみ表示されます。必ず記録し、秘密にしてください。

  • OSS が有効化されており、OSS バケットが作成されています。

    説明

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

背景情報

Packer は BuildersProvisioners、および Post-Processors を使用して、HCL または JSON テンプレートからカスタムイメージを生成し、手動でのイメージ作成をコードによる構成(Infrastructure as Code)に置き換えます。詳細については、Packer ドキュメントをご参照ください。

イメージのビルドとインポート

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

  • オンプレミスサーバー OS: Ubuntu 16.04

  • ターゲットイメージ OS: CentOS 6.9

ステップ 1:KVM のインストール

  1. オンプレミスサーバーが KVM をサポートしているか確認します。

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

    出力に vmx または svm が含まれている場合、サーバーは 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 および kvm_intel または kvm_amd が含まれます。KVM内核

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

      sudo dpkg -l libvirt-bin

      インストール済みの場合、出力に libvirt-bin が含まれます。libvirt

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

      sudo dpkg -l qemu-kvm

      インストール済みの場合、出力に qemu-kvm が含まれます。QEMU

    いずれかの出力が期待どおりでない場合は、KVM を再インストールしてください。

ステップ 2:Packer のインストール

オンプレミスサーバーに Packer をインストールします。「Packer を使用したカスタムイメージの作成」の「ステップ 1:Packer のインストール」セクションをご参照ください。

ステップ 3:Packer テンプレートの定義

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

  1. 作業ディレクトリを /usr/local に変更します。

    cd /usr/local
  2. centos.json テンプレートをダウンロードします。

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

    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:イメージの作成とインポート

  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 イメージを作成します。他のオペレーティングシステム用に必要に応じて変更してください。

{"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_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"
              ]
        }],
      "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 ビルダーのパラメーター

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

パラメーター

タイプ

説明

iso_checksum

文字列

OS ISO ファイルのチェックサムです。Packer は仮想マシンの起動前にこれを検証します。iso_checksum および iso_checksum_url のいずれか一方以上を指定する必要があります。iso_checksum を指定した場合、iso_checksum_url は無視されます。

iso_checksum_type

文字列

OS ISO ファイルのチェックサムタイプです。有効な値:

  • none:チェックサム検証をスキップします。推奨されません。

  • md5

  • sha1

  • sha256

  • sha512

iso_checksum_url

文字列

OS ISO の GNU または BSD スタイルのチェックサムファイルを指す URL です。iso_checksum および iso_checksum_url のいずれか一方以上を指定する必要があります。iso_checksum を指定した場合、iso_checksum_url は無視されます。

iso_url

文字列

ISO イメージへの URL またはファイルパスです。

  • HTTP URL:Packer がファイルをダウンロードしてキャッシュします。

  • IMG または QCOW2 ファイルへのファイルパス:disk_imagetrue に設定します。

headless

ブール値

デフォルトでは、Packer は GUI を備えた QEMU 仮想マシンをビルドします。headlessTrue に設定すると、ヘッドレス仮想マシンが起動します。

Packer ポストプロセッサーのパラメーター

ポストプロセッサーモジュールはオンプレミスイメージを Alibaba Cloud にアップロードします。次の表に必須パラメーターを示します。オプションのパラメーターについては、Post-Processors をご参照ください。

パラメーター

タイプ

説明

access_key

文字列

イメージのインポートに使用する AccessKey ID です。詳細については、「AccessKey ペアの詳細の確認」をご参照ください。

secret_key

文字列

イメージのインポートに使用する AccessKey Secret です。シークレットは作成時のみ表示されます。詳細については、「AccessKey ペアの作成」をご参照ください。

region

文字列

イメージのターゲットリージョンです。例: cn-beijing。詳細については、「リージョンとゾーン」をご参照ください。

image_name

文字列

アップロードするイメージの名前です。

  • 長さは 2~128 文字です。

  • 先頭は英字である必要があります。

  • 英字、数字、アンダースコア (_)、ハイフン (-) を使用できます。

  • http:// または https:// で始まってはいけません。

oss_bucket_name

文字列

イメージをアップロードする OSS バケットです。バケットが存在しない場合、Packer が自動的に作成します。

image_os_type

文字列

イメージの OS タイプです。有効な値:

  • linux

  • windows

image_platform

文字列

OS ディストリビューションです。例: CentOS。

image_architecture

文字列

イメージのアーキテクチャです。有効な値:

  • i386

  • x86_64

format

文字列

イメージのフォーマットです。有効な値:

  • RAW

  • VHD