Mengimpor resource yang di-deploy ke Infrastructure Manager


Tutorial ini menunjukkan cara mengimpor resource Google Cloud ke deployment Infrastructure Manager. Anda hanya dapat mengimpor resource yang disediakan menggunakan Terraform.

Jika Anda memiliki konfigurasi Terraform dan belum men-deploy-nya diGoogle 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 resource Google Cloud lainnya 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

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Infrastructure Manager API:

    gcloud services enable config.googleapis.com
  7. Set up authentication:

    1. Create the service account:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Replace SERVICE_ACCOUNT_NAME with a name for the service account.

    2. Grant the roles/config.agent IAM role to the service account:

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent

      Replace the following:

      • SERVICE_ACCOUNT_NAME: the name of the service account
      • PROJECT_ID: the project ID where you created the service account
  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  11. Make sure that billing is enabled for your Google Cloud project.

  12. Enable the Infrastructure Manager API:

    gcloud services enable config.googleapis.com
  13. Set up authentication:

    1. Create the service account:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Replace SERVICE_ACCOUNT_NAME with a name for the service account.

    2. Grant the roles/config.agent IAM role to the service account:

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent

      Replace the following:

      • SERVICE_ACCOUNT_NAME: the name of the service account
      • PROJECT_ID: the project ID where you created the service account
  14. Instal versi yang didukung dari Terraform.

Men-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 mana pun 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 yang khusus untuk resource yang dijelaskan dalam konfigurasi yang Anda deploy.

Berikan izin agar 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

  1. 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
    }
    EOF
    
  2. Deploy konfigurasi menggunakan Terraform CLI menggunakan 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 berada di sistem file di samping file main.tf.

Membuat deployment placeholder di Infrastructure Manager

Untuk mengimpor resource ke Infra Manager, Anda memerlukan deployment yang sudah ada di Infra Manager.

Tutorial ini menggunakan bucket penyimpanan untuk menyimpan konfigurasi Terraform. Jika 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 komputer lokal.

  1. 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 ..
    
  2. 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_ACCOUNT
    

    Setelah 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 mengubah 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 digunakan untuk membuat jaringan VPC. Infra Manager memerlukan file status Terraform sehingga saat pratinjau Infra Manager dijalankan, pratinjau tidak akan menemukan perubahan apa pun 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 mendeskripsikan resource yang ingin Anda deploy. Saat Anda membuka kunci deployment, jika ada perbedaan antara file status dan konfigurasi Terraform, saat Anda membuka kunci deployment, Infra Manager akan membuat atau menghapus resource agar cocok dengan file status.

Anda perlu membuka kunci deployment agar dapat mengelola resource menggunakan Infra Manager. Dalam tutorial ini, file status dan konfigurasi Terraform mendeskripsikan 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 resource

Jalankan pratinjau pada deployment untuk mengonfirmasi bahwa status Terraform dan resource yang di-deploy di Google Cloud sinkron.

  1. Buat pratinjau menggunakan perintah berikut:

    gcloud infra-manager previews create projects/PROJECT_ID/locations/us-central1/previews/import-deployment-preview \
    --gcs-source gs://import-deployment-configuration \
    --input-values project_id=PROJECT_ID \
    --deployment projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \
    --service-account projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    
  2. Dapatkan detail pratinjau untuk memastikan pratinjau berhasil diselesaikan.

    gcloud infra-manager previews describe projects/PROJECT_ID/locations/us-central1/previews/import-deployment-preview
    
  3. Ekspor pratinjau untuk meninjau perubahan.

    SIGNED_BIN_PLAN_URL=$(gcloud infra-manager previews export projects/PROJECT_ID/locations/us-central1/previews/import-deployment-preview --format "get(result.binarySignedUri)")
    curl -X GET --output tfplan.out $SIGNED_BIN_PLAN_URL
    
  4. Pastikan konfigurasi ada secara lokal dan diinisialisasi dengan perintah berikut:

    terraform init
    
  5. Jalankan 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 sinkron, terraform show akan menampilkan output berikut yang memvalidasi bahwa Infrastructure Manager tidak melihat perubahan apa pun 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 memperbarui 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

    Delete a 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 selanjutnya