Image membangun virtual machine (VM)

Halaman ini membantu Anda membuat image mesin publik untuk produk Anda agar dapat dijalankan di Compute Engine.

Image berisi boot loader, sistem operasi, dan sistem file root yang diperlukan untuk memulai instance. Anda dapat mengonfigurasi image dengan serangkaian aplikasi dan layanan untuk produk Anda. Image digunakan oleh pelanggan untuk meluncurkan instance virtual machine (VM) di cloud.

Sebaiknya mulai dengan membuat gambar di project pengembangan Anda, lalu pindahkan ke project publik Anda setelah Google Partner Engineer memverifikasi gambar tersebut.

Sebelum memulai

  1. Download Google Cloud SDK.

Membuat VM produk dasar

Guna membuat image mesin kustom untuk Cloud Marketplace, Anda harus menyelesaikan langkah-langkah berikut (dijelaskan di bagian berikut):

  • Menggunakan salah satu image publik dasar yang didukung dari Google untuk membuat VM, dan menginstal paket dan konfigurasi khusus aplikasi Anda.

    Anda dapat memilih gambar yang menggunakan prosesor Arm atau gambar yang menggunakan prosesor x86. Anda juga dapat menyertakan beberapa gambar, yang menargetkan berbagai jenis mesin, dalam satu produk VM. Untuk mengetahui informasi selengkapnya tentang platform CPU dan jenis mesin yang mendukungnya, lihat platform CPU.

  • Jika Anda ingin memberikan dukungan kepada pelanggan, instal skrip untuk mengambil kredensial pengguna aplikasi.

Membuat image VM berlisensi

  1. Gunakan gcloud untuk menetapkan setelan default untuk Google Cloud CLI:

    gcloud config set project <project_id>
    gcloud config set compute/zone <zone>
  2. Buat instance utama yang digunakan untuk menginstal software Anda, lalu dikonversi menjadi image untuk digunakan di Cloud Marketplace. Untuk mengetahui informasi selengkapnya mengenai pembuatan instance, baca Membuat dan memulai instance.

    gcloud compute instances create ${INSTANCE} --scopes
    https://www.googleapis.com/auth/cloud-platform 
  3. Instal dan sesuaikan software Anda. Sertakan skrip startup apa pun yang diperlukan, seperti skrip untuk membuat kredensial otorisasi.

    Untuk membuat kredensial otorisasi menggunakan sandi acak yang aman, ikuti langkah-langkah dalam Membuat kredensial otorisasi, di bagian berikut.

    Setelah Anda membuat dan menyesuaikan instance utama, siapkan disk yang diperlukan untuk membuat image VM.

  4. Bersihkan disk. Membuat image VM langsung dari VM juga akan mentransfer direktori pengguna dan kunci SSH ke VM pelanggan, sehingga Anda harus membersihkan disk input saat membuat image VM.

    Untuk membersihkan disk:

    1. Di menu VM Instances Compute Engine, klik nama instance yang ingin Anda bersihkan, lalu klik Edit.

    2. Scroll ke bawah dan hapus centang pada kotak Delete boot disk when instance is deleted, lalu klik Save. Gunakan disk untuk membuat image.

    3. Menghapus VM sambil mempertahankan disk. Anda akan diminta untuk mengonfirmasi penghapusan. Jangan pilih Juga hapus boot disk.

    4. Selanjutnya, Anda perlu membuat Instance VM baru. Perluas opsi Management, disk, networking, SSH keys.

    5. Di bagian disk, pasang disk dari instance sebelumnya sebagai disk data tambahan. Pastikan opsi Keep disk dipilih untuk Saat menghapus instance.

      Sekarang Anda dapat menerapkan SSH ke instance dan menghapus direktori home atau file sementara lain yang dibuat selama proses penginstalan software. Anda harus memasang disk data sebelum dapat mengaksesnya. Untuk mengetahui informasi selengkapnya tentang memasang disk, lihat Menambahkan atau Mengubah Ukuran Persistent Disk.

    6. Setelah selesai, matikan dan hapus instance sambil mempertahankan disk data yang sudah diupdate. Sekarang Anda dapat membuat image VM dengan menyelesaikan langkah-langkah berikut.

  5. Dapatkan nama lisensi untuk produk VM Anda di Producer Portal dengan menggunakan langkah-langkah berikut:

    1. Buka Producer Portal di Konsol Google Cloud:

      https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
      

      Ganti YOUR_PROJECT_ID dengan ID untuk pengembangan atau project publik Anda. Sebaiknya mulai dengan membuat image di project pengembangan Anda, lalu pindahkan ke project publik Anda setelah Google Partner Engineer memverifikasi gambar tersebut.

    2. Klik nama produk Anda.

    3. Buka bagian Paket Deployment. Di bagian Lisensi VM, catat namanya. Anda menggunakan nama lisensi ini dalam langkah berikut, saat membuat image.

  6. Buat image berlisensi dengan menjalankan perintah gcloud berikut:

    gcloud compute images create CREATE_IMAGE_NAME \
     --project PUBLIC_PROJECT_NAME \
     --source-disk projects/DEV_PROJECT_NAME/zones/SOURCE_DISK_ZONE/disks/SOURCE_DISK_NAME \
     --licenses LICENSE_NAME \
     --description ADD_DESCRIPTION
    

    Ganti kode berikut:

    • CREATE_IMAGE_NAME: Nama image dan arsitektur CPU yang didukungnya, dalam format who-vmOS-image-architecture-date, menggantikan architecture dengan Arm atau x86_64, bergantung pada arsitektur CPU yang didukung image. Anda harus menggunakan nama baru dan unik setiap kali memperbarui gambar untuk produk Anda.

    • PUBLIC_PROJECT_NAME: Project ID untuk project publik Anda untuk Cloud Marketplace. Anda pasti sudah diberi peran Compute Storage Admin (roles/compute.storageAdmin) untuk project ini.

    • LICENSE_NAME: Nama lisensi untuk produk VM yang Anda catat pada langkah sebelumnya.

    • DEV_PROJECT_NAME: Project ID untuk project yang Anda buat untuk pengembangan dan pengujian untuk Cloud Marketplace. Anda harus memiliki peran Compute Image User (roles/compute.imageUser) untuk project ini.

    • SOURCE_DISK_ZONE: Zona disk sumber.

    • SOURCE_DISK_NAME: Nama disk sumber.

    • ADD_DESCRIPTION: Deskripsi tekstual opsional untuk gambar yang sedang dibuat.

Jadikan gambar bersifat publik

Untuk produk non-Terraform yang tidak menggunakan gambar yang dimiliki Marketplace, Anda harus menyediakan gambar untuk publik sehingga pelanggan dapat men-deploy gambar tersebut ke instance Compute Engine mereka. Untuk mengubah image menjadi publik, gunakan Google Cloud Console, atau Google Cloud CLI:

Konsol

  1. Pada project publik Anda, di bagian Compute Engine, buka halaman Gambar.

    Membuka halaman Images

  2. Pilih gambar Anda, seperti yang ditunjukkan di bawah ini:

  3. Jika Anda tidak melihat panel info di kanan atas, klik Tampilkan Panel Info.

  4. Di panel info, pada kolom Add Members, masukkan allAuthenticatedUsers, lalu dari menu Select a role, pilih Compute Image User.

  5. Klik Tambahkan untuk menjadikan gambar Anda publik.

Command Line

Gunakan perintah gcloud berikut di Cloud Shell, atau di komputer lokal Anda:

gcloud compute images add-iam-policy-binding IMAGE_NAME --member=allAuthenticatedUsers --role=roles/compute.imageUser

Membuat kredensial otorisasi

Jika produk Anda merupakan deployment sederhana dari satu instance VM dengan aturan firewall dasar, Anda dapat otomatis menyertakan sandi acak yang aman saat mengonfigurasi paket deployment secara langsung.

Jika Anda berencana membuat paket deployment menggunakan alat mpdev open source, yang kami rekomendasikan untuk sebagian besar kasus penggunaan, Anda dapat menggunakan mpdev untuk otomatis menyertakan beberapa sandi acak yang aman.

Untuk mengetahui langkah-langkah membuat kredensial otorisasi, lihat Membuat paket deployment.

Setelah produk Anda di-deploy, untuk mendapatkan nilai sandi apa pun yang Anda buat, gunakan perintah berikut dari dalam instance VM Anda:

curl -H "Metadata-Flavor: Google" \
http://metadata/computeMetadata/v1/instance/attributes/PASSWORD_NAME

Menguji image VM

Buat instance VM dengan image yang baru Anda buat, dan verifikasi fungsinya.

Selain itu, untuk memverifikasi ID lisensi, terapkan SSH ke instance dan pastikan bahwa lisensi yang valid telah dilampirkan:

curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/licenses/?recursive=true

Pastikan Python 2.6 atau yang lebih baru telah diinstal:

python -V

Pastikan paket berikut telah diinstal:

gcloud --version
gsutil --version
ssh -V
ps aux | grep sshd
curl -V
ps aux | grep dhcp

Pastikan tidak ada direktori pengguna lain yang diinstal pada instance kecuali direktori Anda sendiri, dan tidak ada direktori pengguna dan kredensial yang tersisa selain milik Anda.