Jika perlu memindahkan data disk booting Compute Engine ke luar project Compute Engine, Anda dapat mengekspor image disk booting ke Cloud Storage sebagai file tar.gz
. Jika Anda perlu membuat image persistent disk untuk digunakan saat membuat persistent disk baru di Compute Engine, baca Membuat image kustom.
Anda dapat mencadangkan atau membagikan image kustom dengan mengekspor image ke Cloud Storage. Metode ini ideal untuk membagikan setiap gambar ke project yang tidak memiliki akses ke gambar Anda. Atau, Anda dapat membagikan image dengan memberikan peran pengguna image Compute Engine pada image atau project yang berisinya.
Diagram berikut menunjukkan beberapa alur kerja umum untuk pembuatan dan penggunaan kembali gambar kustom.
Sebelum memulai
- Baca halaman images.
- Jika project tempat Anda ingin mengekspor image memiliki kebijakan image
tepercaya yang telah ditentukan, tambahkan
projects/compute-image-import
danprojects/compute-image-tools
ke daftar yang diizinkan penayang. - Untuk mengetahui cara memenuhi persyaratan sebelum mengekspor image, lihat Prasyarat untuk mengimpor dan mengekspor image VM.
-
Jika Anda belum melakukannya, siapkan autentikasi.
Autentikasi adalah
proses yang digunakan untuk memverifikasi identitas Anda agar dapat mengakses Google Cloud layanan dan API.
Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:
Select the tab for how you plan to use the samples on this page:
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Untuk informasi selengkapnya, lihat Mengautentikasi untuk menggunakan REST dalam Google Cloud dokumentasi autentikasi.
-
Pembatasan dan batasan
Batasan berikut berlaku untuk proses ekspor gambar.
Batasan umum
Saat Anda mengekspor image, sesi akan dibuat di mesin tempat Anda mengekspor image. Sesi ini harus tetap aktif hingga proses ekspor selesai. Jika sesi dihentikan sebelum proses ekspor selesai, resource sementara seperti disk sementara, instance VM, atau bucket penyimpanan mungkin tidak dihapus. Dalam hal ini, Anda harus menghapus resource sementara ini secara manual.
Proses ekspor menggunakan Cloud Build untuk mengekspor image. Sesi Cloud Build berlangsung maksimal 24 jam. Jika gambar Anda sangat besar dan memerlukan waktu lebih dari 24 jam untuk diekspor, Anda dapat mengekspor gambar secara manual.
Batasan Kontrol Layanan VPC
Untuk project yang dilindungi dengan Kontrol Layanan VPC, gunakan salah satu metode berikut:
- mengekspor dari project yang sama dengan tempat image berada
- mengekspor gambar secara manual
Mengekspor gambar dengan satu perintah
Mengekspor gambar ke Cloud Storage
Anda dapat mengekspor image menggunakan konsol Google Cloud, Google Cloud CLI, atau REST.
Di Konsol Google Cloud, buka halaman Images.
Klik nama gambar yang ingin diekspor untuk membuka halaman detail gambar. Anda tidak dapat mengekspor image publik yang disediakan oleh Google. Anda hanya dapat mengekspor gambar yang sebelumnya dibuat atau diimpor.
Dari halaman detail gambar, klik Export untuk membuka halaman Export Image.
Dari halaman Export image, pilih Export format gambar.
Pilih lokasi Cloud Storage tempat Anda akan mengekspor gambar dengan mengklik Browse.
Pilih lokasi Cloud Storage yang ada untuk mengekspor gambar Anda. Atau, ikuti petunjuk untuk membuat bucket Cloud Storage baru, lalu masukkan nama untuk bucket Cloud Storage baru.
Setelah memilih Cloud Storage, pilih nama file untuk gambar yang diekspor. Anda dapat menggunakan nama file default, atau memilih nama file Anda sendiri.
Setelah memilih Cloud Storage, dan memasukkan nama file untuk gambar, klik Select.
Dari halaman Ekspor gambar, klik Ekspor. Setelah memilih Export, konsol Google Cloud akan menampilkan Image export history, tempat Anda dapat melihat proses ekspor image. Untuk detail tambahan tentang proses ekspor image, klik Cloud Build ID untuk membuka halaman Image export details tempat Anda dapat melihat dan mendownload log ekspor image.
Buka halaman Penyimpanan untuk mengakses gambar yang diekspor.
Cara yang lebih disukai untuk mengekspor image ke Cloud Storage adalah dengan menggunakan perintah gcloud compute images export
. Perintah ini menggunakan
Daisy
untuk merangkai beberapa langkah yang diperlukan untuk mengekspor image.
Perintah ini mengasumsikan bahwa Anda telah
membuat image,
misalnya, dengan
perintah
gcloud compute images create
.
Dengan menggunakan Google Cloud CLI, jalankan:
gcloud compute images export \ --destination-uriDESTINATION_URI \ --imageIMAGE_NAME
Ganti kode berikut:
DESTINATION_URI
: tujuan URI Cloud Storage untuk file gambar yang diekspor.IMAGE_NAME
: nama disk image yang akan diekspor.
Secara default, image diekspor dalam format Compute Engine,
yang merupakan file disk.raw
yang di-tar dan di-gzip. Untuk mengekspor image dalam
format lain yang didukung oleh utilitas disk image QEMU, Anda dapat menggunakan
flag --export-format
. Format yang valid mencakup vmdk
, vhdx
, vpc
, vdi
,
dan qcow2
.
Contoh
Misalnya, perintah berikut mengekspor image bernama my-image
dari my-project
ke bucket Cloud Storage bernama my-bucket
. Secara default, gambar diekspor sebagai disk.raw file
dan dikompresi ke dalam format file tar.gz
.
gcloud compute images export \ --destination-uri gs://my-bucket/my-image.tar.gz \ --image my-image \ --project my-project
Untuk flag, lihat
dokumentasi referensi
gcloud compute images export
.
Kirim permintaan POST
ke Cloud Build API.
POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID /builds { "timeout": "7200s", "steps":[ { "args":[ "-timeout=7000s", "-source_image=SOURCE_IMAGE ", "-client_id=api", "-format=IMAGE_FORMAT ", "-destination_uri=DESTINATION_URI " ], "name":"gcr.io/compute-image-tools/gce_vm_image_export:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-daisy", "gce-daisy-image-export" ] }
Ganti kode berikut:
PROJECT_ID
: project ID untuk project yang berisi image yang ingin Anda ekspor.SOURCE_IMAGE
: nama image yang akan diekspor.IMAGE_FORMAT
: format gambar yang diekspor. Format yang valid mencakupvmdk
,vhdx
,vpc
,vdi
, danqcow2
.DESTINATION_URI
: lokasi URI Cloud Storage yang menjadi tujuan ekspor file gambar. Contoh,gs://my-bucket/my-exported-image.vmdk
.
Untuk mengetahui nilai args
tambahan yang dapat diberikan, lihat bagian flag opsional di halaman GitHub ekspor image VM.
Contoh respons
Contoh respons berikut menyerupai output yang ditampilkan:
{ "name": "operations/build/myproject-12345/operation-1578608233418", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": "3a2055bc-ccbd-4101-9434-d376b88b8940", "status": "QUEUED", "createTime": "2019-10-02T18:59:13.393492020Z", "steps": [ { "name": "gcr.io/compute-image-tools/gce_vm_image_export:release", "env": [ "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940" ], "args": [ "-timeout=7056s", "-source_image=my-image", "-client_id=api", "-format=vmdk", "-destination_uri=gs://my-bucket/my-exported-image.vmdk" ] } ], "timeout": "7200s", "projectId": "myproject-12345", "logsBucket": "gs://123456.cloudbuild-logs.googleusercontent.com", "options": { "logging": "LEGACY" }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=123456" } }
Ada beberapa cara untuk memantau build Anda:
- Jalankan permintaan
projects.builds.get
menggunakan
build-id
yang ditampilkan. - Tinjau log yang dihosting di
logUrl
yang disediakan.
Mengekspor image dari project menggunakan akun layanan Compute Engine kustom
Selama ekspor image, instance virtual machine (VM) sementara akan dibuat dalam project Anda. Alat ekspor image pada VM sementara ini harus diautentikasi.
Akun layanan adalah identitas yang terpasang pada VM. Token akses akun layanan dapat diakses melalui server metadata instance dan digunakan untuk mengautentikasi alat ekspor image di VM.
Secara default, proses ekspor menggunakan Agen Layanan Compute Engine default project. Namun, jika akun layanan Compute Engine default dinonaktifkan di project Anda atau jika ingin menggunakan akun layanan Compute Engine kustom, Anda harus membuat akun layanan dan menentukannya untuk proses ekspor.
Anda dapat mengekspor image menggunakan Google Cloud CLI atau REST.
Buat akun layanan dan tetapkan peran minimum. Untuk informasi selengkapnya tentang cara membuat akun layanan, lihat Membuat dan mengelola akun layanan.
Akun layanan Compute Engine yang ditentukan setidaknya harus memiliki peran berikut yang ditetapkan:
roles/compute.storageAdmin
roles/storage.objectAdmin
Untuk mengetahui informasi selengkapnya, lihat Memberikan peran yang diperlukan ke akun layanan Compute Engine.
Gunakan perintah
gcloud compute images export
untuk mengekspor image.gcloud compute images export \ --destination-uri
DESTINATION_URI \ --imageIMAGE_NAME \ --compute-service-accountSERVICE_ACCOUNT_EMAIL Ganti kode berikut:
DESTINATION_URI
: tujuan URI Cloud Storage untuk file gambar yang diekspor.IMAGE_NAME
: nama disk image yang akan diekspor.SERVICE_ACCOUNT_EMAIL
: alamat email yang terkait dengan akun layanan Compute Engine yang dibuat pada langkah sebelumnya.
Contoh
Misalnya, perintah berikut mengekspor image bernama my-image
dari my-project
ke bucket Cloud Storage bernama my-bucket
dengan akun layanan yang memiliki email image-export-service-account@proj-12345.iam.gserviceaccount.com
. Secara default, gambar diekspor sebagai file disk.raw
dan dikompresi ke dalam format file tar.gz
.
gcloud compute images export \ --destination-uri gs://my-bucket/my-image.tar.gz \ --image my-image \ --project my-project \ --compute-service-account image-export-service-account@proj-12345.iam.gserviceaccount.com
Untuk flag, lihat
dokumentasi referensi
gcloud compute images export
.
Buat akun layanan dan tetapkan peran minimum. Untuk informasi selengkapnya tentang cara membuat akun layanan, lihat Membuat dan mengelola akun layanan.
Akun layanan Compute Engine yang ditentukan setidaknya harus memiliki peran berikut yang ditetapkan:
roles/compute.storageAdmin
roles/storage.objectAdmin
Untuk mengetahui informasi selengkapnya, lihat Memberikan peran yang diperlukan ke akun layanan Compute Engine.
Di API, buat permintaan
POST
ke Cloud Build API.POST https://cloudbuild.googleapis.com/v1/projects/
PROJECT_ID /builds { "timeout": "7200s", "steps":[ { "args":[ "-timeout=7000s", "-source_image=SOURCE_IMAGE ", "-client_id=api", "-format=IMAGE_FORMAT ", "-destination_uri=DESTINATION_URI ", "-compute_service_account=SERVICE_ACCOUNT_EMAIL " ], "name":"gcr.io/compute-image-tools/gce_vm_image_export:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-daisy", "gce-daisy-image-export" ] }Ganti kode berikut:
PROJECT_ID
: project ID untuk project yang berisi image yang ingin Anda ekspor.SOURCE_IMAGE
: nama image yang akan diekspor.IMAGE_FORMAT
: format gambar yang diekspor. Format yang valid mencakupvmdk
,vhdx
,vpc
,vdi
, danqcow2
.DESTINATION_URI
: lokasi URI Cloud Storage yang menjadi tujuan ekspor file gambar. Contoh,gs://my-bucket/my-exported-image.vmdk
.SERVICE_ACCOUNT_EMAIL
: alamat email yang terkait dengan akun layanan Compute Engine yang dibuat pada langkah sebelumnya.
Untuk mengetahui nilai args
tambahan yang dapat diberikan, lihat bagian flag opsional di halaman GitHub ekspor image VM.
Mengekspor image menggunakan VPC Bersama
Sebelum mengekspor image yang menggunakan VPC bersama, Anda harus
menambahkan peran compute.networkUser
ke akun layanan Cloud Build.
Untuk mengetahui informasi selengkapnya, lihat Memberikan peran yang diperlukan ke akun layanan Cloud Build.
Anda dapat mengekspor image menggunakan Google Cloud CLI atau REST.
Gunakan perintah gcloud compute images export
untuk mengekspor image Anda.
gcloud compute images export \ --imageIMAGE_NAME \ --destination-uriDESTINATION_URI \ --projectPROJECT_ID \ --networkNETWORK \ --subnetSUBNET \ --zoneZONE
Ganti kode berikut:
IMAGE_NAME
: nama image yang akan diekspor.DESTINATION_URI
: lokasi URI Cloud Storage yang menjadi tujuan ekspor file gambar.PROJECT_ID
: ID project tempat gambar berada.NETWORK
: jalur lengkap ke jaringan VPC Bersama. Contohnya,projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME
.SUBNET
: Opsional. Jalur lengkap ke subnetwork VPC Bersama. Contohnya,projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
.Penentuan mode ini bergantung pada mode jaringan VPC.
- Jika jaringan VPC menggunakan mode lama, jangan tentukan subnet.
- Jika jaringan VPC menggunakan mode otomatis, menentukan subnet adalah opsional.
- Jika jaringan VPC menggunakan mode kustom, kolom ini harus ditentukan.
ZONE
: Opsional. Zona yang akan digunakan untuk ekspor. Zona ini harus cocok dengan region subnet. Misalnya, jikaSUBNET
berada di regionus-west1
, zona ekspor harus berupa salah satu dari yang berikut:us-west1-a
,us-west1-b
, atauus-west1-c
.Jika menentukan
SUBNET
, Anda juga harus menentukan zona.
Misalnya, perintah berikut mengekspor image bernama example-image
dari my-project
ke bucket Cloud Storage bernama my-bucket
. Dalam contoh
ini, jaringan Virtual Private Cloud (my-shared-vp
) menggunakan subnet kustom
(my-custom-subnet
).
Secara default, image diekspor sebagai file disk.raw
dan dikompresi ke dalam
format file tar.gz
.
Contoh perintah
gcloud compute images export \ --image example-image \ --destination-uri gs://my-bucket/my-image.tar.gz \ --project my-project \ --network projects/my-vpc-project/global/networks/my-shared-vpc \ --subnet projects/my-vpc-project/regions/us-west1/subnetworks/my-custom-subnet \ --zone us-west1-c
Tambahkan gambar ke Cloud Storage.
Di API, buat permintaan
POST
ke Cloud Build API.POST https://cloudbuild.googleapis.com/v1/projects/
PROJECT_ID /builds { "timeout": "7200s", "steps":[ { "args":[ "-timeout=7000s", "-source_image=SOURCE_IMAGE ", "-client_id=api", "-format=IMAGE_FORMAT ", "-destination_uri=DESTINATION_URI ", "-network=NETWORK ", "-subnet=SUBNET ", "-zone=ZONE " ], "name":"gcr.io/compute-image-tools/gce_vm_image_export:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-daisy", "gce-daisy-image-export" ] }Ganti kode berikut:
PROJECT_ID
: project ID untuk project yang berisi image yang ingin Anda ekspor.SOURCE_IMAGE
: nama image yang akan diekspor.IMAGE_FORMAT
: format gambar yang diekspor. Format yang valid mencakupvmdk
,vhdx
,vpc
,vdi
, danqcow2
.DESTINATION_URI
: lokasi URI Cloud Storage yang menjadi tujuan ekspor file gambar. Contoh,gs://my-bucket/my-exported-image.vmdk
.NETWORK
: jalur lengkap ke jaringan VPC bersama. Contohnya,projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME
.SUBNET
: jalur lengkap ke Subnetwork VPC Bersama. Contohnya,projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
.Penentuan mode ini bergantung pada mode jaringan VPC.
- Jika jaringan VPC menggunakan mode lama, jangan tentukan subnet.
- Jika jaringan VPC menggunakan mode otomatis, menentukan subnet bersifat opsional.
- Jika jaringan VPC menggunakan mode kustom, kolom ini harus ditentukan.
ZONE
: zona yang akan digunakan untuk ekspor. Zona ini harus cocok dengan region subnet. Misalnya, jikaSUBNET
berada di regionus-west1
, zona ekspor harus berupa salah satu dari yang berikut:us-west1-a
,us-west1-b
, atauus-west1-c
.Dalam sebagian besar kasus, menentukan zona bersifat opsional. Jika
SUBNET
ditentukan, zona harus ditentukan.
Untuk mengetahui nilai
args
tambahan yang dapat diberikan, lihat bagian flag opsional di halaman GitHub ekspor image VM.
Membuat dan mengekspor gambar secara manual
Jika perintah gcloud compute images create
dan gcloud compute images export
tidak memenuhi persyaratan Anda, Anda dapat membuat dan mengekspor image
secara manual dari instance Compute Engine. Proses ini memiliki langkah-langkah
terpisah untuk membuat gambar terlebih dahulu, lalu mengekspor gambar.
Dalam contoh berikut, perhatikan bahwa disk yang dibuat disebut image-disk.
Untuk membuat dan mengekspor gambar:
Opsional: Hentikan instance tempat disk terpasang sebelum Anda membuat snapshot. Menghentikan instance akan memastikan integritas konten disk dalam snapshot.
Buat snapshot disk. Beri nama snapshot
image-snapshot
.gcloud compute disks snapshot
DISK_NAME \ --snapshot-names image-snapshotGanti
DISK_NAME
dengan nama disk yang ingin Anda gunakan untuk membuat snapshot. Anda dapat menemukan nama disk dengan mencantumkan disk.Gunakan snapshot
image-snapshot
untuk membuat disk baru bernamaimage-disk
dengan menjalankan perintah berikut:gcloud compute disks create image-disk \ --source-snapshot image-snapshot
Buat disk sementara bernama
temporary-disk
untuk menyimpan filetar
, dan tentukanSIZE
disk agar setidaknya 50% lebih besar dari disk image.Setelah itu, Anda dapat melepaskan dan menghapus disk.
gcloud compute disks create temporary-disk \ --size
SIZE dengan
SIZE
adalah ukuran, dalam gigabyte atau terabyte, disk sementara. Misalnya, tentukan100GB
untuk membuat disk 100 gigabyte.Buat instance dan aktifkan cakupan
storage-rw
pada instance. Selain itu, lampirkanimage-disk
dantemporary-disk
ke instance sebagai disk sekunder dengan atributdevice-name
tertentu. GantiVM_NAME
dengan nama instance yang akan dibuat.gcloud compute instances create
VM_NAME \ --scopes storage-rw \ --disk name=image-disk,device-name=image-disk \ --disk name=temporary-disk,device-name=temporary-diskPerhatikan bahwa Anda meneruskan cakupan akun layanan agar dapat mengupload file ke Cloud Storage di langkah-langkah berikutnya.
Tinjau detail tentang memulai instance baru jika diperlukan.
Terhubung ke instance. Ganti
VM_NAME
dengan nama instance yang akan dihubungkan.gcloud compute ssh
VM_NAME Format dan pasang disk sementara. Memformat disk akan menghapus konten disk sementara.
sudo mkdir /mnt/tmp
sudo mkfs.ext4 -F /dev/disk/by-id/google-temporary-disk
sudo mount -o discard,defaults /dev/disk/by-id/google-temporary-disk /mnt/tmp
Opsional: Pasang disk image dan buat perubahan tambahan sebelum Anda membuat file
tar
. Misalnya, Anda mungkin ingin menghapus file yang ada dari direktori/home
jika tidak ingin file tersebut menjadi bagian dari image. Pasang partisi disk yang perlu diubah, ubah file di disk yang perlu diubah, lalu lepas disk setelah selesai.Buat direktori tempat Anda dapat memasang disk atau partisi.
sudo mkdir /mnt/image-disk
Gunakan perintah
ls
untuk menentukan disk atau partisi disk yang perlu dipasang.ls /dev/disk/by-id/
Perintah ini akan mencetak daftar ID dan partisi disk. Misalnya, disk berikut memiliki tabel partisi dengan satu partisi. ID
google-image-disk
mengarah ke disk lengkap tempat Anda ingin membuat image. IDgoogle-image-disk-part1
mengarah ke partisi pertama di disk ini. Pasang partisi jika Anda perlu membuat perubahan pada disk, lalu buat image dari disk penuh.google-image-disk google-image-disk-part1
Pasang disk atau partisi. Jika disk Anda memiliki tabel partisi, pasang setiap partisi untuk disk Anda. Misalnya, pasang
google-image-disk-part1
.sudo mount /dev/disk/by-id/google-image-disk-part1 /mnt/image-disk
Atau, jika disk Anda diformat mentah tanpa tabel partisi, pasang disk
google-image-disk
lengkap.sudo mount /dev/disk/by-id/google-image-disk /mnt/image-disk
Ubah file di direktori
/mnt/image-disk
untuk mengonfigurasi file di disk. Misalnya, Anda dapat menghapus file/mnt/image-disk/home/[USER]/.ssh/authorized_keys
untuk melindungi kunci SSH agar tidak dibagikan.Setelah selesai mengubah file, hapus pemasangan disk.
sudo umount /mnt/image-disk/
Buat file
tar
dari gambar Anda.Setelah Anda selesai menyesuaikan file di disk image, buat file disk mentah di disk sementara. Nama image disk mentah harus 'disk.raw':
sudo dd if=/dev/disk/by-id/google-image-disk of=/mnt/tmp/disk.raw bs=4096
Kemudian, buat file
tar.gz
:cd /mnt/tmp
sudo tar czvf myimage.tar.gz disk.raw
Perintah ini akan membuat image instance di lokasi berikut:
/mnt/tmp/myimage.tar.gz
Upload gambar ke Cloud Storage.
Untuk mengupload file
tar
ke Cloud Storage, gunakan Google Cloud CLI yang sudah diprainstal di instance Anda.Buat bucket menggunakan gcloud CLI.
Pastikan untuk meninjau pedoman penamaan bucket dan objek sebelum membuat bucket. Kemudian, buat bucket menggunakan perintah berikut. Ganti
BUCKET_NAME
dengan nama bucket yang akan dibuat.me@example-instance:~$ gcloud storage buckets create gs://
BUCKET_NAME Salin file Anda ke bucket baru. Ganti
BUCKET_NAME
dengan nama bucket tempat file akan disalin.me@example-instance:~$ gcloud storage cp /mnt/tmp/myimage.tar.gz gs://
BUCKET_NAME
Anda telah mengekspor file ke Cloud Storage. Sekarang Anda dapat membagikan gambar kepada orang lain, atau menggunakan file tar
untuk menambahkan image baru ke project konsol Google Cloud.
Langkah berikutnya
- Membagikan gambar menggunakan peran pengguna gambar.
- Pelajari metode impor yang tersedia untuk Compute Engine.