All Products
Search
Document Center

Elastic Compute Service:Buat dan impor gambar on-premises dengan Packer

Last Updated:Apr 28, 2026

Buat gambar CentOS 6.9 pada server Ubuntu 16.04 menggunakan Packer dan KVM, lalu impor ke Alibaba Cloud sebagai custom image.

Prasyarat

  • Pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) telah diperoleh.

    Catatan
    • Untuk mencegah kebocoran AccessKey, buat RAM user dan gunakan kredensial RAM user tersebut. Lihat Buat RAM user.

    • Rahasia AccessKey hanya ditampilkan saat pasangan AccessKey dibuat. Catat dan simpan secara rahasia.

  • OSS telah diaktifkan dan bucket OSS telah dibuat.

    Catatan

    Ukuran disk gambar tidak boleh melebihi 5 GB. Lihat PutObject.

Latar Belakang

Packer menggunakan Builders, Provisioners, dan Post-Processors untuk mengubah templat HCL atau JSON menjadi custom image, menggantikan pembuatan gambar manual dengan pendekatan konfigurasi sebagai kode. Untuk informasi selengkapnya, lihat dokumentasi Packer.

Buat dan impor gambar

Contoh ini menggunakan versi perangkat lunak berikut. Langkah-langkahnya mungkin berbeda tergantung pada versi perangkat lunak yang Anda gunakan.

  • Sistem operasi server on-premises: Ubuntu 16.04

  • Sistem operasi gambar target: CentOS 6.9

Langkah 1: Instal KVM

  1. Periksa apakah server on-premises mendukung KVM:

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

    Jika output berisi vmx atau svm, berarti server mendukung 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. Jika server mendukung KVM, instal KVM dan alat terkait:

    sudo apt-get update
    sudo apt-get install qemu-kvm qemu virt-manager virt-viewer  libvirt-bin bridge-utils
  3. Verifikasi bahwa KVM telah terinstal.

    1. Verifikasi bahwa modul kernel KVM telah dimuat:

      sudo lsmod | grep kvm

      Jika modul telah dimuat, output akan berisi kvm dan kvm_intel atau kvm_amd.KVM内核

    2. Verifikasi bahwa libvirt telah terinstal:

      sudo dpkg -l libvirt-bin

      Jika terinstal, output akan berisi libvirt-bin.libvirt

    3. Verifikasi bahwa QEMU telah terinstal:

      sudo dpkg -l qemu-kvm

      Jika terinstal, output akan berisi qemu-kvm.QEMU

    Jika ada output yang tidak sesuai harapan, instal ulang KVM.

Langkah 2: Instal Packer

Instal Packer pada server on-premises. Lihat bagian "Langkah 1: Instal Packer" dalam Buat custom image dengan Packer.

Langkah 3: Definisikan templat Packer

Contoh ini membuat gambar CentOS 6.9. Untuk membuat gambar sistem operasi lain, ubah templat centos.json. Lihat Buat templat Packer.

  1. Ubah direktori kerja ke /usr/local:

    cd /usr/local
  2. Unduh templat centos.json:

    sudo wget https://raw.githubusercontent.com/hashicorp/packer-plugin-alicloud/main/builder/examples/local/centos.json
  3. Unduh file kickstart ks.cfg:

    sudo wget https://raw.githubusercontent.com/hashicorp/packer-plugin-alicloud/main/builder/examples/local/http/centos-6.8/ks.cfg
  4. Buat direktori http/centos-6.9:

    sudo mkdir -p http/centos-6.9
  5. Pindahkan file konfigurasi ks.cfg ke direktori http/centos-6.9.

    sudo mv ks.cfg http/centos-6.9/

Langkah 4: Buat dan impor gambar

  1. Ekspor ID AccessKey Anda:

    export ALICLOUD_ACCESS_KEY=<AccessKey ID>

    Ganti <AccessKey ID> dengan ID AccessKey aktual Anda.

  2. Ekspor rahasia AccessKey Anda:

    export ALICLOUD_SECRET_KEY=<AccessKey Secret>

    Ganti <AccessKey Secret> dengan rahasia AccessKey aktual Anda.

  3. Buat gambar on-premises dan impor ke Alibaba Cloud:

    sudo packer build centos.json

    Output berikut menunjukkan bahwa gambar telah diimpor sebagai custom image ke wilayah China (Beijing).

    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. Buka ECS console - Images.

  5. Pilih wilayah yang ditentukan dalam centos.json. Dalam contoh ini, pilih China (Beijing).

  6. Pada tab Custom Images, verifikasi bahwa gambar CentOS 6.9 muncul.

Referensi templat Packer

Templat JSON berikut membuat gambar CentOS 6.9. Ubah sesuai kebutuhan untuk sistem operasi lain.

{"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"
        }
      ]
}

Parameter builder QEMU

Builder QEMU membuat gambar mesin virtual KVM. Tabel berikut mencantumkan parameter yang diperlukan. Untuk parameter opsional, lihat QEMU Builder.

Parameter

Type

Description

iso_checksum

string

Checksum untuk file ISO sistem operasi. Packer memverifikasi nilai ini sebelum menjalankan mesin virtual. Tentukan setidaknya salah satu dari iso_checksum dan iso_checksum_url. Jika iso_checksum ditentukan, iso_checksum_url akan diabaikan.

iso_checksum_type

string

Jenis checksum untuk file ISO sistem operasi. Nilai yang valid:

  • none: melewati verifikasi checksum. Tidak disarankan.

  • md5

  • sha1

  • sha256

  • sha512

iso_checksum_url

string

URL yang mengarah ke file checksum bergaya GNU atau BSD untuk ISO sistem operasi. Tentukan setidaknya salah satu dari iso_checksum dan iso_checksum_url. Jika iso_checksum ditentukan, iso_checksum_url akan diabaikan.

iso_url

string

URL atau path file ke gambar ISO:

  • URL HTTP: Packer mengunduh dan menyimpan cache file tersebut.

  • Path file ke file IMG atau QCOW2: Atur disk_image ke true.

headless

boolean

Secara default, Packer membuat mesin virtual QEMU dengan GUI. Atur headless ke True untuk menjalankan mesin virtual tanpa antarmuka grafis.

Parameter post-processor Packer

Modul Post-Processor mengunggah gambar on-premises ke Alibaba Cloud. Tabel berikut mencantumkan parameter yang diperlukan. Untuk parameter opsional, lihat Post-Processors.

Parameter

Type

Description

access_key

string

ID AccessKey untuk mengimpor gambar. Lihat Lihat detail pasangan AccessKey.

secret_key

string

Rahasia AccessKey untuk mengimpor gambar. Rahasia ini hanya ditampilkan saat pembuatan. Lihat Buat pasangan AccessKey.

region

string

Wilayah tujuan untuk gambar. Contoh: cn-beijing. Lihat Wilayah dan zona.

image_name

string

Nama gambar yang akan diunggah.

  • Panjang 2 hingga 128 karakter.

  • Harus diawali dengan huruf.

  • Dapat berisi huruf, angka, garis bawah (_), dan tanda hubung (-).

  • Tidak boleh diawali dengan http:// atau https://.

oss_bucket_name

string

Bucket OSS untuk mengunggah gambar. Jika bucket belum ada, Packer akan membuatnya secara otomatis.

image_os_type

string

Jenis sistem operasi gambar. Nilai yang valid:

  • linux

  • windows

image_platform

string

Distribusi sistem operasi. Contoh: CentOS.

image_architecture

string

Arsitektur gambar. Nilai yang valid:

  • i386

  • x86_64

format

string

Format gambar. Nilai yang valid:

  • RAW

  • VHD