Tutorial ini menunjukkan cara mengimpor Google Cloud resource ke dalam deployment Infrastructure Manager. Anda hanya dapat mengimpor resource yang disediakan menggunakan Terraform.
Jika Anda memiliki konfigurasi Terraform dan belum men-deploy-nya di Google Cloud, lihat men-deploy infrastruktur menggunakan Infrastructure Manager.
Tutorial ini dimulai dengan men-deploy Virtual Private Cloud (VPC) ke Google Cloud menggunakan Terraform CLI. Kemudian, tutorial ini menunjukkan cara mengimpor resource yang di-deploy ini ke Infrastructure Manager sehingga resource tersebut dapat dikelola sebagai deployment Infrastructure Manager.
Anda dapat menggunakan contoh dalam tutorial ini untuk memahami cara mengimpor resourceGoogle Cloud lain ke Infra Manager. Untuk mengimpor deployment ke Infra Manager, konfigurasi Terraform yang digunakan untuk menyediakan resource harus mematuhi batasan, dan resource harus telah disediakan menggunakan versi Terraform yang didukung.
Biaya
Tutorial ini menggunakan komponen Google Cloudyang dapat ditagih berikut:
Sebelum memulai
-
Login ke Akun Google Anda.
Jika Anda belum memilikinya, Daftar untuk membuat akun baru.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan Infrastructure Manager API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.gcloud services enable config.googleapis.com
-
Menyiapkan autentikasi:
-
Pastikan Anda memiliki peran IAM Create Service Accounts
(
roles/iam.serviceAccountCreator) dan peran IAM Project IAM Admin (roles/resourcemanager.projectIamAdmin). Pelajari cara memberikan peran. -
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAMEdengan nama untuk akun layanan. -
Memberikan peran IAM
roles/config.agentke akun layanan.gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent
Ganti kode berikut:
SERVICE_ACCOUNT_NAME: nama dari akun layanan.PROJECT_ID: project ID dimana Anda membuat akun layanan
-
Pastikan Anda memiliki peran IAM Create Service Accounts
(
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan Infrastructure Manager API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.gcloud services enable config.googleapis.com
-
Menyiapkan autentikasi:
-
Pastikan Anda memiliki peran IAM Create Service Accounts
(
roles/iam.serviceAccountCreator) dan peran IAM Project IAM Admin (roles/resourcemanager.projectIamAdmin). Pelajari cara memberikan peran. -
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAMEdengan nama untuk akun layanan. -
Memberikan peran IAM
roles/config.agentke akun layanan.gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent
Ganti kode berikut:
SERVICE_ACCOUNT_NAME: nama dari akun layanan.PROJECT_ID: project ID dimana Anda membuat akun layanan
-
Pastikan Anda memiliki peran IAM Create Service Accounts
(
- Instal versi yang didukung dari Terraform.
Deploy resource ke Google Cloud
Resource Google Cloud yang Anda deploy dalam tutorial ini adalah VPC. Bagian ini menunjukkan cara men-deploy resource untuk digunakan sebagai contoh untuk mengimpor resource yang di-deploy ke Infra Manager.
Tutorial ini menggunakan region us-central1. Jika ingin menggunakan region lain, Anda dapat menggunakan lokasi tempat Infra Manager berjalan. Lihat
Lokasi Infrastructure Manager
untuk mengetahui daftar lokasi yang valid.
Memberikan izin untuk resource dalam konfigurasi
Anda telah memberikan izin yang diperlukan untuk menjalankan Infra Manager, tetapi Anda juga perlu memberikan izin khusus untuk resource yang dijelaskan dalam konfigurasi yang Anda deploy.
Beri izin untuk dapat membuat jaringan VPC, yang merupakan resource yang ditentukan dalam konfigurasi Terraform:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
--role=roles/compute.networkAdmin
Ganti kode berikut:
- SERVICE_ACCOUNT_NAME: nama akun layanan.
- PROJECT_ID: project ID Anda.
Men-deploy resource menggunakan Terraform CLI
Buat jaringan VPC menggunakan konfigurasi Terraform berikut. Untuk melakukannya, jalankan perintah berikut:
mkdir vpc_to_import cd vpc_to_import cat <<EOF > main.tf variable "project_id" { type = string } resource "google_compute_network" "vpc_network" { name = "my-custom-mode-network" project = var.project_id } EOFDeploy konfigurasi menggunakan Terraform CLI dengan perintah berikut:
terraform init echo "************** TERRAFORM APPLY ******************" terraform apply -var="project_id=PROJECT_ID" -auto-approve cd ..
Saat VPC disediakan, Anda akan melihat output yang dimulai dengan
teks Creation complete.
VPC yang ditentukan dalam konfigurasi Terraform kini di-deploy di Google Cloud. Terraform membuat file status, dan file ini ada di sistem file di samping file main.tf.
Membuat deployment placeholder di Infrastructure Manager
Untuk mengimpor resource ke Infra Manager, Anda memerlukan deployment yang ada di Infra Manager.
Tutorial ini menggunakan bucket penyimpanan untuk menyimpan konfigurasi Terraform. Jika Anda menggunakan tutorial ini untuk memahami cara mengimpor deployment lain ke Infra Manager, Anda dapat menyimpan konfigurasi Terraform di bucket penyimpanan, repositori Git publik, atau di mesin lokal Anda.
Tambahkan konfigurasi Terraform kosong ke bucket penyimpanan:
gcloud storage buckets create gs://import-deployment-configuration --project=PROJECT_ID mkdir placeholder_deployment cd placeholder_deployment cat <<EOF > main.tf EOF gcloud storage cp main.tf gs://import-deployment-configuration cd ..Buat deployment menggunakan Infra Manager.
gcloud infra-manager deployments apply projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \ --gcs-source gs://import-deployment-configuration \ --input-values project_id=PROJECT_ID \ --service-account projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNTSetelah deployment selesai, Anda akan melihat:
Creating the deployment...done
Sekarang Anda memiliki deployment Infra Manager. Selanjutnya, Anda perlu menambahkan file status dan konfigurasi Terraform ke deployment ini agar deployment ini mengelola VPC.
Mengimpor file status dan konfigurasi Terraform
Untuk mengelola resource yang di-deploy (VPC) menggunakan Infra Manager, Anda perlu menambahkan file status dan konfigurasi Terraform ke Infra Manager.
Mengunci deployment
Kunci deployment Infra Manager agar Anda dapat membuat perubahan pada statusnya.
LOCK_ID=$(gcloud infra-manager deployments lock projects/PROJECT_ID/locations/us-central1/deployments/import-deployment --format="get(lockId)")
Mengimpor file status Terraform ke Infra Manager
Impor file status untuk resource yang di-deploy. File status ini dibuat oleh Terraform saat Anda men-deploy VPC menggunakan Terraform CLI.
Upload file status Terraform ke deployment Infra Manager.
SIGNED_STATE_UPLOAD_URL=$(gcloud infra-manager deployments import-statefile projects/PROJECT_ID/locations/us-central1/deployments/import-deployment --lock-id ${LOCK_ID} --format="get(signedUri)")
cd vpc_to_import
curl -s -X PUT --upload-file terraform.tfstate $SIGNED_STATE_UPLOAD_URL
Upload konfigurasi Terraform ke bucket Cloud Storage
Setelah mengupload file status Terraform, Anda juga perlu mengupload konfigurasi Terraform yang Anda gunakan untuk membuat jaringan VPC. Infra Manager memerlukan file status Terraform sehingga saat pratinjau Infra Manager dijalankan, tidak ada perubahan pada resource.
Upload konfigurasi Terraform ke Cloud Storage menggunakan perintah berikut:
gcloud storage cp main.tf gs://import-deployment-configuration
Membuka kunci deployment
Jika Anda menggunakan tutorial ini untuk memahami cara mengimpor resource apa pun ke Infra Manager, pastikan file status dan konfigurasi Terraform tidak memiliki perbedaan. Jika ada perbedaan antara file status dan konfigurasi Terraform, pastikan file status menjelaskan resource yang ingin Anda deploy. Saat Anda membuka kunci deployment, jika ada perbedaan antara file status dan konfigurasi Terraform, maka saat Anda membuka kunci deployment, Infra Manager akan membuat atau menghapus resource agar sesuai dengan file status.
Anda perlu membuka kunci deployment agar dapat mengelola resource menggunakan Infra Manager. Dalam tutorial ini, file status dan konfigurasi Terraform menjelaskan konfigurasi yang sama, sehingga Infra Manager tidak membuat atau menghapus resource apa pun.
Lepaskan kunci dari deployment dengan menjalankan perintah berikut.
gcloud infra-manager deployments unlock projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \
--project PROJECT_ID \
--location us-central1 \
--lock-id ${LOCK_ID}
Setelah file status dan konfigurasi Terraform ditambahkan ke deployment Infra Manager, Anda telah selesai mengimpor resource yang di-deploy. VPC yang di-deploy kini dikelola oleh Infra Manager.
Melihat pratinjau perubahan referensi
Jalankan pratinjau pada deployment untuk mengonfirmasi bahwa status Terraform dan resource yang di-deploy di Google Cloud sudah sinkron.
Buat pratinjau menggunakan perintah berikut:
gcloud infra-manager previews create projects/PROJECT_ID/locations/us-central1/previews/IMPORT_DEPLOYMENT_PREVIEW_NAME \ --gcs-source gs://import-deployment-configuration \ --deployment projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \ --service-account projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --location us-central1Dapatkan detail pratinjau untuk memastikan pratinjau telah berhasil diselesaikan.
gcloud infra-manager previews describe projects/PROJECT_ID/locations/us-central1/previews/IMPORT_DEPLOYMENT_PREVIEW_NAMEEkspor pratinjau untuk meninjau perubahan.
SIGNED_BIN_PLAN_URL=$(gcloud infra-manager previews export projects/PROJECT_ID/locations/us-central1/previews/IMPORT_DEPLOYMENT_PREVIEW_NAME --format "get(result.binarySignedUri)") curl -X GET --output tfplan.out $SIGNED_BIN_PLAN_URLPastikan konfigurasi ada secara lokal dan diinisialisasi dengan perintah berikut:
terraform initJalankan Terraform show untuk meninjau perubahan antara status deployment Infrastructure Manager dan konfigurasi.
terraform show tfplan.out
Jika resource VPC di Google Cloud dan file status sudah
disinkronkan, terraform show akan menampilkan output berikut yang memvalidasi bahwa
Infrastructure Manager tidak melihat adanya perubahan antara status deployment dan
konfigurasi. Anda akan melihat output yang mirip dengan berikut ini:
No changes. Your infrastructure matches the configuration.
Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.
Anda kini telah mengimpor resource yang di-deploy sehingga dikelola oleh Infra Manager. Misalnya, Anda kini dapat menggunakan Infra Manager untuk memperbarui deployment.
Anda juga dapat mengupdate deployment untuk memvalidasi bahwa deployment berhasil diimpor ke Infra Manager.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
Menghapus Google Cloud project:
gcloud projects delete PROJECT_ID
Menghapus resource satu per satu
Hapus VPC dan metadata tentang deployment:
gcloud infra-manager deployments delete projects/PROJECT_ID/locations/us-central1/deployments/quickstart-deployment
Langkah berikutnya
- Pelajari lebih lanjut Terraform dengan Google Cloud.
- Perbarui deployment.
- Melihat status deployment.
- Lihat resource yang di-deploy.
- Menghapus deployment.