Mengimpor dan mengekspor resource yang sudah ada secara massal Google Cloud

Halaman ini menjelaskan perintah config-connector bulk-export dan cara menggunakannya untuk mengekspor Google Cloud resource ke dalam file YAML Config Connector yang selanjutnya dapat Anda impor ke Config Connector.

config-connector bulk-export menggunakan fungsi Ekspor Inventaris Aset Cloud untuk menemukan resource yang sudah ada. Google Cloud Anda dapat menyediakan ekspor Inventaris Aset Cloud atau config-connector dapat melakukan ekspor atas nama Anda.

Inventaris Aset Cloud mengekspor struktur JSON. Setiap struktur memiliki nama resource, jenis Inventaris Asetnya, dan resource ancestor-nya: project, folder, dan organisasi. Untuk menemukan jenis yang didukung oleh inventaris aset, lihat Jenis aset yang didukung.

Batasan

Tidak semua resource mendukung perintah bulk-export. Untuk mendapatkan daftar resource yang didukung, jalankan config-connector print-resources.

Sebelum memulai

  1. Instal config-connector tool

  2. Jika Anda ingin menggunakan config-connector tool untuk mengekspor langsung dari Inventaris Aset Cloud, aktifkan Cloud Asset Inventory API di Google Cloudproject Identitas Anda dengan gcloud.

    gcloud services enable cloudasset.googleapis.com
    

Contoh ekspor massal

Dalam contoh ini, Anda membuat PubSubTopic dengan Google Cloud CLI, lalu mengimpornya ke Config Connector.

  1. Buat topik bernama sample-topic dengan Google Cloud CLI:

    gcloud pubsub topics create sample-topic
    

    Anda akan menerima konfirmasi bahwa topik telah dibuat.

    Created topic [projects/PROJECT_ID/topics/sample-topic].
    

    Dalam output, PROJECT_ID diganti dengan project Anda Google Cloud .

  2. Dapatkan namaresource topik dan simpan ke dalam variabel lingkungan dengan perintah berikut: Google Cloud

    TOPIC_RESOURCE_NAME=$(gcloud pubsub topics describe sample-topic --format "value(name)")
    
  3. Untuk mengidentifikasi objek, config-connector tool menggunakan struktur JSON Inventaris Aset Cloud. Simpan struktur JSON aset topik ke dalam variabel lingkungan:

    TOPIC_ASSET='{"name":"//pubsub.googleapis.com/'"${TOPIC_RESOURCE_NAME}"'","asset_type":"pubsub.googleapis.com/Topic"}'
    
  4. Teruskan aset ke config-connector bulk-export dengan menjalankan perintah berikut:

    echo ${TOPIC_ASSET} | config-connector bulk-export
    

    Outputnya adalah resource Config Connector dalam format YAML.

    ---
    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubTopic
    metadata:
      annotations:
        cnrm.cloud.google.com/project-id: PROJECT_ID
      name: sample-topic
    ...
    

    Dalam output, PROJECT_ID diganti dengan project Anda Google Cloud .

  5. Anda dapat meneruskan resource ini ke Config Connector dengan kubectl apply -f -. Untuk meneruskan resource secara langsung, jalankan perintah berikut:

    echo ${TOPIC_ASSET} | config-connector bulk-export | kubectl apply -f -  --namespace CC_NAMESPACE
    

    Ganti CC_NAMESPACE dengan namespace tempat Config Connector mengelola resource.

    Config Connector memperoleh resource.

  6. Konfirmasi bahwa Config Connector mengelola resource dengan kubectl describe:

    kubectl describe pubsubtopic sample-topic --namespace CC_NAMESPACE
    

    Ganti CC_NAMESPACE dengan namespace tempat Config Connector mengelola resource.

Pembersihan

Anda dapat menghapus PubSubTopic dengan config-connector bulk-export dan kubectl delete.

echo ${TOPIC_ASSET} | config-connector bulk-export | kubectl delete -f - --namespace CC_NAMESPACE

Ganti CC_NAMESPACE dengan namespace tempat Config Connector mengelola resource.

Menemukan resource yang akan diimpor

Saat mengimpor resource, Anda dapat melakukan ekspor Inventaris Aset Cloud dan memberikan hasilnya ke config-connector bulk-export atau meminta config-connector bulk-export untuk melakukannya atas nama Anda.

Mengimpor dari ekspor Inventaris Aset Cloud

Anda dapat menyediakan ekspor inventaris aset dengan memberikan jalur ke file lokal yang berisi ekspor atau mengarahkan hasil ekspor ke config-connector di STDIN.

Mengimpor dari file lokal

Anda dapat menyediakan ekspor inventaris aset ke config-connector bulk-export dengan menggunakan file lokal dengan parameter --input.

config-connector bulk-export --input ASSET_INVENTORY_EXPORT

Ganti ASSET_INVENTORY_EXPORT dengan nama file ekspor Inventaris Aset Cloud Anda.

Mengimpor dari STDIN

Untuk menyediakan ekspor inventaris aset di STDIN, arahkan hasil ekspor ke config-connector bulk-export. Misalnya, jika ekspor Anda berada dalam file lokal bernama export.json, arahkan konten file ke config-connector bulk-export tanpa memberikan parameter ekspor apa pun.

cat export.json | config-connector bulk-export

Memfilter ekspor Inventaris Aset di STDIN

Untuk memfilter ekspor inventaris aset, Anda dapat menggunakan alat jq dan mengarahkan input hasilnya ke config-connector bulk-export. Misalnya, jika Anda hanya ingin mengimpor aset PubSubTopic dari file EXPORT_FILE, jalankan perintah berikut:

cat EXPORT_FILE | jq '. | select( .asset_type == "pubsub.googleapis.com/Topic" )' | config-connector bulk-export

Mengekspor inventaris dengan config-connector

Alat config-connector bulk-export dapat mengekspor resource dari Google Cloud Hierarki resource.

Mengekspor project

Untuk mengekspor semua resource dari project Anda, gunakan parameter --project.

config-connector bulk-export --project PROJECT_ID

Ganti PROJECT_ID dengan Google Cloud project Anda.

Mengekspor folder

Untuk mengekspor semua resource dari folder, gunakan parameter --folder.

config-connector bulk-export --folder FOLDER_NUMBER

Ganti FOLDER_NUMBER dengan nomor folder Anda Google Cloud .

Mengekspor organisasi

Untuk mengekspor semua resource dari organisasi Anda, gunakan parameter --organization.

config-connector bulk-export --organization ORGANIZATION_ID

Ganti ORGANIZATION_ID dengan ID organisasi Anda. Google Cloud

Lokasi Cloud Storage

Lokasi output ekspor inventaris aset adalah Cloud Storage URI. Saat config-connector bulk-export melakukan ekspor, alat ini menggunakan bucket Cloud Storage. Secara default, config-connector bulk-export membuat bucket sementara. Anda juga dapat menentukan nama bucket.

Bucket Cloud Storage sementara

Jika Anda tidak memberikan parameter --storage-key, config-connector bulk-export akan membuat bucket Cloud Storage sementara atas nama Anda. Bucket dibuat di lokasi default untuk bucket penyimpanan; US multi-region. Bucket akan dihapus saat ekspor selesai.

Menentukan bucket sementara

Untuk menentukan bucket, gunakan URI Cloud Storage dengan parameter storage-key. Jika URI hanya nama bucket, nama akan dibuat untuk objek penyimpanan ekspor. Jika URI adalah jalur lengkap ke objek penyimpanan, jalur lengkap akan digunakan.

config-connector bulk-export --storage-key gs://BUCKET_NAME

Output

Output dari perintah config-connector bulk-export adalah resource Config Connector dalam format YAML. File YAML ditulis ke STDOUT secara default. Anda dapat mengarahkan output resource ke file dengan opsi output.

Output ke satu file

Saat Anda menetapkan parameter --output, config-connector bulk-export akan menulis hasilnya ke satu file jika salah satu hal berikut benar:

  • File yang ditentukan oleh output ada dan merupakan file regular.
  • File yang ditentukan oleh output tidak ada dan direktori induk yang diwakili oleh output ada.

Output ke direktori

config-connector menulis hasilnya ke beberapa file jika --output parameter adalah direktori yang diakhiri dengan /. config-connector bulk-export membuat satu file per resource, dan nama file cocok dengan nama resource-nya.

config-connector bulk-export --project PROJECT_ID --on-error continue --output OUTPUT_DIRECTORY/

Ganti PROJECT_ID dengan Google Cloud project Anda.

Misalnya, untuk menampilkan aset dari project my-project ke direktori sample, jalankan perintah berikut:

config-connector bulk-export --project my-project --on-error continue --output sample/

Opsi command line

Perintah config-connector bulk-export memiliki opsi berikut:

config-connector bulk-export
    --input FILENAME \
    --output FILENAME \
    --storage-key gs://BUCKET_NAME \
    --project PROJECT_ID \
    --folder FOLDER_NUMBER \
    --organization ORGANIZATION_ID \
    --oauth2-token TOKEN \
    --on-error [halt | continue | ignore] \
    --iam-format [policy | policymember | none] \
    --filter-deleted-iam-members [true | false] \
    --verbose
  • --input: File input Inventaris Aset Cloud.
  • --output: Jalur file output opsional yang menonaktifkan output standar. Jika file, hasilnya akan berisi semua output perintah; jika direktori, direktori akan berisi file baru untuk setiap resource dalam output.
  • --storage-key: Target bucket Cloud Storage sementara untuk ekspor.
  • --project: Google Cloud project ID yang akan diekspor
  • --folder: Google Cloud folder ID yang akan diekspor
  • --organization: Google Cloud organization ID yang akan diekspor.
  • --oauth2-token: Token OAUTH2 sebagai Google Cloud identity. Secara default, config-connector menggunakan kredensial Google Cloud CLI.
  • --on-error: Mengontrol perilaku saat terjadi error yang dapat dipulihkan. Opsinya adalah 'continue', 'halt', atau 'ignore'.
    • halt: menghentikan eksekusi jika terjadi error (default)
    • continue: melanjutkan pemrosesan resource, mencetak error ke STDERR
    • ignore: melanjutkan pemrosesan resource dan tidak mencetak error
  • --iam-format: Menentukan jenis output resource IAM dengan ekspor Anda. Opsinya adalah policy (default), policymember, atau none.
  • --filter-deleted-iam-members: Menentukan apakah akan memfilter prinsipal IAM yang dihapus. Opsinya adalah true atau false. Nilai defaultnya adalah false.
  • --verbose: Mengaktifkan logging panjang.

Langkah berikutnya