Anda telah men-deploy resource di Google Cloud, dan kini Anda perlu mengelola infrastruktur sebagai kode (IaC) dengan Terraform. Google menyediakan alat yang dapat Anda gunakan dalam membuat kode Terraform untuk resource dalam project, folder, atau organisasi.
Sebelum memulai
Siapkan Cloud Shell
Luncurkan Cloud Shell, dan tetapkan project Google Cloud default tempat Anda ingin membuat kode Terraform untuk resource yang di-deploy.
Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Variabel lingkungan akan diabaikan jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Di Cloud Shell, instal antarmuka command line (CLI) untuk Config Connector.
gcloud components install config-connector
Dengan Config Connector, Anda dapat menggunakan alat ekspor massal Terraform Google Cloud.
Jika Anda melihat
ERROR: (gcloud.components.install) You cannot perform this action because the Google Cloud CLI component manager is disabled for this installation
, jalankan perintah berikut:sudo apt-get install google-cloud-sdk-config-connector
Aktifkan Cloud Asset API.
gcloud services enable cloudasset.googleapis.com
Buat akun layanan yang akan digunakan untuk ekspor ini:
gcloud beta services identity create --service=cloudasset.googleapis.com
Pastikan Agen Layanan Aset Cloud (
gcp-sa-cloudasset.iam.gserviceaccount.com
) memiliki peranroles/servicenetworking.serviceAgent
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \ --role=roles/servicenetworking.serviceAgent
Pastikan Agen Layanan Aset Cloud (
gcp-sa-cloudasset.iam.gserviceaccount.com
) memiliki peranroles/storage.objectAdmin
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \ --role=roles/storage.objectAdmin
Batasan
Beberapa jenis resource tidak didukung untuk diekspor ke format Terraform,
meskipun didukung oleh penyedia Google Terraform. Untuk
mengetahui daftar jenis resource yang didukung untuk ekspor ke format Terraform, jalankan
perintah gcloud beta resource-config list-resource-types
.
Mengekspor seluruh konfigurasi project ke kode Terraform HCL
Perintah gcloud beta resource-config bulk-export --resource-format=terraform
mengekspor
resource yang dikonfigurasi dalam project, folder, atau
organisasi dan mencetaknya ke layar dalam format kode HCL.
gcloud beta resource-config bulk-export \ --project=PROJECT_ID \ --resource-format=terraform
Menulis output ke struktur direktori
Jika Anda belum melakukannya, buat direktori tempat Anda ingin menghasilkan konfigurasi project:
mkdir OUTPUT_DIRECTORY
Ekspor seluruh konfigurasi project ke direktori:
gcloud beta resource-config bulk-export \ --path=OUTPUT_DIRECTORY \ --project=PROJECT_ID \ --resource-format=terraform
Flag
--path
menentukan lokasi untuk menghasilkan kode HCL.
Setelah menjalankan perintah, kode HCL untuk setiap resource akan dihasilkan ke
file .tf
terpisah dalam struktur direktori berikut:
OUTPUT_DIRECTORY/projects/PROJECT_ID/RESOURCE_TYPE
Menulis output ke satu file
Jika tidak ingin mencetak output ke layar atau membuat file .tf
terpisah,
Anda dapat menulis semua output ke satu file, seperti yang ditunjukkan dalam contoh
berikut:
gcloud beta resource-config bulk-export \ --resource-format=terraform \ --project=PROJECT_ID \ >> gcp_resources.tf
Memfilter output
Filter output perintah ekspor massal dengan menentukan jenis resource.
Membuat daftar jenis resource yang didukung untuk difilter
Untuk daftar jenis resource yang didukung untuk ekspor ke format Terraform,
jalankan perintah gcloud beta resource-config list-resource-types
:
gcloud beta resource-config list-resource-types
Anda juga dapat menulis output ke file:
gcloud beta resource-config list-resource-types >> strings.txt
Dalam output, jenis resource untuk VM Compute Engine tercantum sebagai:
KRM KIND: ComputeInstance
Anda dapat mengabaikan awalan KRM KIND:
.
Mengekspor satu jenis resource
Gunakan string, seperti ComputeInstance
, untuk mengekspor jenis resource tertentu untuk
project Anda dalam format kode HCL:
gcloud beta resource-config bulk-export \ --resource-types=RESOURCE_TYPE \ --project=PROJECT_ID \ --resource-format=terraform
Flag --resource-types
menentukan jenis resource yang akan dihasilkan.
Mengekspor beberapa jenis resource
Ekspor instance VM dan aturan firewall dalam format kode HCL:
gcloud beta resource-config bulk-export \ --resource-types=ComputeFirewall,ComputeInstance \ --project=PROJECT_ID \ --resource-format=terraform
Menggunakan file untuk menentukan jenis resource yang akan diekspor
Buat direktori bernama
tf-output
.cd && mkdir tf-output && cd tf-output
Buat file bernama
types.txt
, lalu tambahkan daftar jenis resource. Misalnya:ComputeBackendBucket ComputeBackendService ComputeForwardingRule
Jalankan perintah
gcloud beta resource-config bulk-export
dengan flag--resource-types-file
:gcloud beta resource-config bulk-export \ --resource-types-file=types.txt \ --path=tf-output \ --project=PROJECT_ID \ --resource-format=terraform
Jika project tidak memuat salah satu jenis resource tertentu, perintah akan berhasil, tetapi tidak ada yang dihasilkan untuk jenis resource tersebut.
Pemecahan masalah
Jika Anda melihat error berikut:
"Izin ditolak saat ekspor. Pastikan API Inventaris Aset Cloud diaktifkan."
Pastikan Anda telah mengikuti petunjuk di bagian Sebelum memulai.