From 2b0575364b284e19cf86f047172d778b250f0175 Mon Sep 17 00:00:00 2001 From: Moritz Graf Date: Sat, 18 Jul 2026 21:41:33 +0200 Subject: [PATCH] feat: enable Google Photos Library API in Terraform and create gdrive-to-gphotos sync Job --- k8s/backup/job-gdrive-to-gphotos.yaml | 28 ++++++++ k8s/backup/rclone.secret.yml | 9 ++- terraform/gcp_backups.tf | 6 ++ terraform/terraform.tfstate | 24 ++++++- terraform/terraform.tfstate.backup | 94 ++++++++++++++++++++++++++- 5 files changed, 158 insertions(+), 3 deletions(-) create mode 100644 k8s/backup/job-gdrive-to-gphotos.yaml diff --git a/k8s/backup/job-gdrive-to-gphotos.yaml b/k8s/backup/job-gdrive-to-gphotos.yaml new file mode 100644 index 0000000..bb49080 --- /dev/null +++ b/k8s/backup/job-gdrive-to-gphotos.yaml @@ -0,0 +1,28 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: gdrive-to-gphotos + namespace: backup +spec: + template: + spec: + containers: + - name: sync-agent + image: iptizer/swiss + volumeMounts: + - name: rclone-gdrive-config + mountPath: /rclone.conf + subPath: "rclone.conf" + command: + - "/bin/bash" + - "-c" + args: + - | + echo "Starting copy operation from Google Drive to Google Photos..." + cd /home/devbox && devbox run rclone --config /rclone.conf -v --stats 10s --stats-one-line copy --drive-root-folder-id="1f43AtWvfb7qd-eGr9nw-8vHraA5k9mVl" gdrive: "gphotos:album/All pictures of the last years" + volumes: + - name: rclone-gdrive-config + configMap: + name: rclone-gdrive-config + restartPolicy: Never + backoffLimit: 1 diff --git a/k8s/backup/rclone.secret.yml b/k8s/backup/rclone.secret.yml index 5a33e67..87e06d3 100644 --- a/k8s/backup/rclone.secret.yml +++ b/k8s/backup/rclone.secret.yml @@ -11,6 +11,13 @@ data: client_id = 510142397622-ife8ab809cirgb2f3t1gk6gmj0p3ehrb.apps.googleusercontent.com client_secret = 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 scope = drive - token = {"access_token":"ya29.a0AZYkNZjtwgj_7XaZtlsrUuXbJcYJSE2Zl4WEFlhaqSIDT3csW05ZrKcZqvsF_6Ql45C-391judgNE8DUKAAqkf2-6zyrXXPlz99lQWSuuEovtfF2A9shiQb6_oYGIT8FrW3xnFNkpz1HVY_xbeJ_PRxLpeA0V1XeKFNHJ4KTaCgYKAfESARISFQHGX2MiNcnE9tRt0XzNPF6o-HumWQ0175","token_type":"Bearer","refresh_token":"1//0918ME0bkQh3uCgYIARAAGAkSNwF-L9Irikk_ba5HNHLu5UTWvO4n_EslCc5SDbDX4_KzbUpDRBhd_v3W-wFC0LU0Uf4VbD2u42I","expiry":"2025-04-21T17:40:48.191375+02:00"} + token = {"access_token":"ya29.a0ARGnu0YmJeV8Trm4A1gJgGC3exlstFs129WPux6-xwkqecyyPkhsIDGhmBJJhhCuylATzGRLlPaE-mj2x8gZPlGC85qrInSAAmP9bY53eBkfzeF3E9cETg2kaR5xkS0-das6v2gy7R9Dq_wo0yYGClv6J56VzksCdRtENOau3G_NKY-iL6Q63HGwP6RyN0NM7hKx9pkaCgYKARESARISFQHGX2Miw0_XCkFbRIwLBjzvClPCyQ0206","token_type":"Bearer","refresh_token":"1//03GEaMgtFsVCDCgYIARAAGAMSNwF-L9IrVZhVXkWbq6INTYCxGHpC_bF4SFvJJhfM1liCJCmBfyGk-tguYoceGPEPwEn28HbBQiQ","expiry":"2026-07-18T22:12:35.929827+02:00","expires_in":3599} team_drive = + # Google Photos API credentials belong to project: default-api-key-project (Project Number: 510142397622) + [gphotos] + type = google photos + client_id = 510142397622-ife8ab809cirgb2f3t1gk6gmj0p3ehrb.apps.googleusercontent.com + client_secret = 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 + token = {"access_token":"ya29.a0ARGnu0aRExzvH1CNICKilmDMjjNIbH1H5qRKuuIvhbgOUifU_kKs5KxssTNodx6djqkFRU-NIeRw7oAkPPWY4VAcIO5zpmyEMd3VIF3CjY2u9vDVUgLc8NEuQMt9-zi01mPUi0AXc1o74Ye1OzS1wa5hxIIdiGJa4M_qOY9m3z2zUd2YUrLwx4IsJR0OBgl1E-qg_HUaCgYKAT4SARISFQHGX2MiYL5GLbjZZ822Wf5iqIGiWg0206","token_type":"Bearer","refresh_token":"1//03evlOJXMLFW5CgYIARAAGAMSNwF-L9IrBQkl-7meHL_WGfNZ8LFiCvu6my79XK8OzyaldVlcqXuEco93RUFFLsOHyDTqrIcJMY0","expiry":"2026-07-18T21:21:29.116745+02:00","expires_in":3599} + diff --git a/terraform/gcp_backups.tf b/terraform/gcp_backups.tf index 9520705..143bc3b 100644 --- a/terraform/gcp_backups.tf +++ b/terraform/gcp_backups.tf @@ -54,3 +54,9 @@ output "velero_backup_sa_email" { value = google_service_account.velero_backup_sa.email description = "The email address of the Google Cloud Service Account. Share your Google Drive backup folder with this email address and grant it Editor access." } + +resource "google_project_service" "photos_api" { + project = "default-api-key-project" + service = "photoslibrary.googleapis.com" + disable_on_destroy = false +} diff --git a/terraform/terraform.tfstate b/terraform/terraform.tfstate index 4adab42..0dc141d 100644 --- a/terraform/terraform.tfstate +++ b/terraform/terraform.tfstate @@ -1,7 +1,7 @@ { "version": 4, "terraform_version": "1.14.3", - "serial": 221, + "serial": 229, "lineage": "8aff5d23-05f6-10eb-0ae6-1084c787677e", "outputs": { "velero_backup_sa_email": { @@ -104,6 +104,28 @@ } ] }, + { + "mode": "managed", + "type": "google_project_service", + "name": "photos_api", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "disable_dependent_services": null, + "disable_on_destroy": false, + "id": "default-api-key-project/photoslibrary.googleapis.com", + "project": "default-api-key-project", + "service": "photoslibrary.googleapis.com", + "timeouts": null + }, + "sensitive_attributes": [], + "identity_schema_version": 0, + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0=" + } + ] + }, { "mode": "managed", "type": "google_service_account", diff --git a/terraform/terraform.tfstate.backup b/terraform/terraform.tfstate.backup index bd9333c..d2a0019 100644 --- a/terraform/terraform.tfstate.backup +++ b/terraform/terraform.tfstate.backup @@ -1,7 +1,7 @@ { "version": 4, "terraform_version": "1.14.3", - "serial": 218, + "serial": 226, "lineage": "8aff5d23-05f6-10eb-0ae6-1084c787677e", "outputs": { "velero_backup_sa_email": { @@ -137,6 +137,98 @@ } ] }, + { + "mode": "managed", + "type": "google_service_account_key", + "name": "velero_backup_sa_key", + "provider": "provider[\"registry.terraform.io/hashicorp/google\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "projects/velero-backup-dc8c8f74/serviceAccounts/velero-backup-sa@velero-backup-dc8c8f74.iam.gserviceaccount.com/keys/069aa702ed55bb6d3c325a45535ee51bc87de092", + "keepers": null, + "key_algorithm": "KEY_ALG_RSA_2048", + "name": "projects/velero-backup-dc8c8f74/serviceAccounts/velero-backup-sa@velero-backup-dc8c8f74.iam.gserviceaccount.com/keys/069aa702ed55bb6d3c325a45535ee51bc87de092", + "private_key": "ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsCiAgInByb2plY3RfaWQiOiAidmVsZXJvLWJhY2t1cC1kYzhjOGY3NCIsCiAgInByaXZhdGVfa2V5X2lkIjogIjA2OWFhNzAyZWQ1NWJiNmQzYzMyNWE0NTUzNWVlNTFiYzg3ZGUwOTIiLAogICJwcml2YXRlX2tleSI6ICItLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS1cbk1JSUV2QUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktZd2dnU2lBZ0VBQW9JQkFRRGtacWNsaXV2MWVSQk9cblVIN2twTER0RzEwd3VnMHptaE8wMTlDSFBMNVhGYkR2aW9LWlliTVZKV25XY29CUFJEZmNXQS9NTVhOeXJPSUdcbkdpWndMVFkyek5pdGRGQ3BweVY3ZTR1Zjk1ak9HREdwWkZGZ1hNSEc5RndFb3RNQlJQNTVTNnVMU3lXbW1idE5cbkdDRkoxV0h0a2plREp1SUpsb0xlL1BFV2NhR0FWcjE1VlBSNGQwMlRVZEFZcHJJZGJuRm90MnJ4U1RHS2IzZktcbi9PRm41SkdoeURyejR3Nkg1ME1ZWVQvVFI4ZWVSVTZoRHlsWVpja1FJK0dKcWp6eCtXMVZyY2dKdUs0MTN5bzhcbmY3RnBlRGpQZldGS2NGdHZNUk5SemtTRzd2VS9EbnUxQ0IxQUhYWEp0SE5HaGJXV2s2K0NPZ2tzTUV4UldFOFNcbmt4cEUxMjc1QWdNQkFBRUNnZ0VBR0FzaVgxWmZmb2pQQ1o5NXJESVdHZSsrZ0ttbFNDQlpJTGx6VHprNnhFb1pcblJTNHNqMTcwamk1UkZPMGF5cjFnc0FacEsxS3RWNDRSZ1JqeG9POXhmSlZWM2ZTWHBUUmVRc0IvczBoS1FxL1RcblVvU24rRi9yV2psUkVuL2RmSTI1eUNVS0d2Qy9OdW1LQ1JTWU5JQ00vWWhkNWFXTE4vMHJLN1F1NFBEM1VsNGNcblRFU2o2QVFUbzlycGJPc0ZzRmF3QkJhSnJ4eUhQOS80aWhINGxJbW1CM3crOEFQRDhkbmdsRCtYaDJHVEpPc0lcbklXWlZ3KzgrdEUrV3JDL2dyUE9hUW9UdW9nNVA2QVFzTzMrM1RCRGlqOXRxUWpHMHlWaThXa1FUWm1NYkNmYlpcbm10Q29GUTRrRUwwSURqclEwWFF3Z2h5OW5vU1djaUdRdEcwaFhtWVdIUUtCZ1FEMGROVExYNmVFV2x6M0xCK3Jcbmc0VjZxdXBHVmxyN3EzbCtGS2U1eUgxVkJ0OGdMWHJmU2lMNUlLTmRoTTc1bkFDcUN1dmI4dmpYbUhmRFlhcFJcbklNY29FYWJKUjVGVENjZzJQSW4xWGlvQWgySFNJTGdPTUxaeHg4WG5lL0lJYm1MYTNQMjFnUkx5TXFTWnl3aFJcbndLb1hzRklrMEF3akloVUJSa3FOak5YT3R3S0JnUUR2TDd0ODVaclk2OVAxMWlLcW1abGt4WCsvSVl2VHE5dEhcbnZ4SW5IeFJSclVTckplVFQ3NFBiQTMrTmhMZmQ2TTVyTkF3YXZFRlJxak55YnlaeGNmaE5ScnFmcDNCWXY0TWNcblBGOHBvUE5iNmU1dTI0QUM2c2lrQm5rYlBEOUJtZ1FrNGVhLzJUcnZGOUdxaUZWakZWMW5wT0xSZ0FRUWw5M2Ncbkk5eVRrRnYvendLQmdHVkNlOTdlZVpxR2Y5blhDaXRXcUpUZWRYcTdUS2JSS2R0REhSTUU3SDJyQWdQbk11MkpcblhTRkxGc0NuUWNEOWtQemUxMEpkekJ3cVNQbkMyL1VOR2RJTU5jVk1ndk1kcXpSa01WVlZNeHJTK1g4OEZHRzBcblplNk5yUG10U3QyWk5CT3ExT0U1WFNxOE5aaUxGS0FncVpSMGNpSlRsNk41KzY5eWVYRlc5RDNUQW9HQUVUY2hcblNuc0lLeWJHS2NLUTJqQ1Yvcy9NUXdoNkZQRWdwa2hWV1NWK2crWnhzOVBWWlgrdXdOdSttWVA4NitidXZINlJcbmhIY2FTSE4wb243bmlIRElpMTlVM1ZyaTFqQnFrbVN5QU1BSjVBcXhVNTlPMW1icHJBeWZPTnVjUGUrRTd0YW5cbmtoVmpqWVBzWGxiVHRuNzZLeFNPRXNBaENzU3pmajNDaVloeFpyY0NnWUF3cG45ME84MmZwZE9FVUo1bnNpbElcbktjVEI2dU1XTW5XbWN0cEpEQ05iVlRVNWk0SmxYd0wzaGkzdCtjZENjWk4vMHJKU0lXT3psT29lYWg0MGw1MUhcbkpQclZ0M2lhSmdQanVJMVFHYjhyc3JPNnpMNDRvb0pHWHo1U2sxRi9NOXBnY2dKWlR3akpXV3VpN1pET0VPUzJcblVLN3NwNGJaU0dXZE1iOUY5SUxKcWc9PVxuLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLVxuIiwKICAiY2xpZW50X2VtYWlsIjogInZlbGVyby1iYWNrdXAtc2FAdmVsZXJvLWJhY2t1cC1kYzhjOGY3NC5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgImNsaWVudF9pZCI6ICIxMTA3NzI2MTcyNTA0Mjc1NzgwMjYiLAogICJhdXRoX3VyaSI6ICJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vby9vYXV0aDIvYXV0aCIsCiAgInRva2VuX3VyaSI6ICJodHRwczovL29hdXRoMi5nb29nbGVhcGlzLmNvbS90b2tlbiIsCiAgImF1dGhfcHJvdmlkZXJfeDUwOV9jZXJ0X3VybCI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9vYXV0aDIvdjEvY2VydHMiLAogICJjbGllbnRfeDUwOV9jZXJ0X3VybCI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9yb2JvdC92MS9tZXRhZGF0YS94NTA5L3ZlbGVyby1iYWNrdXAtc2ElNDB2ZWxlcm8tYmFja3VwLWRjOGM4Zjc0LmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAidW5pdmVyc2VfZG9tYWluIjogImdvb2dsZWFwaXMuY29tIgp9Cg==", + "private_key_type": "TYPE_GOOGLE_CREDENTIALS_FILE", + "public_key": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvRENDQWVTZ0F3SUJBZ0lJWWRxRUo0cmJOMzB3RFFZSktvWklodmNOQVFFRkJRQXdJREVlTUJ3R0ExVUUKQXd3Vk1URXdOemN5TmpFM01qVXdOREkzTlRjNE1ESTJNQ0FYRFRJMk1EWXpNREUzTURZeU9Gb1lEems1T1RreApNak14TWpNMU9UVTVXakFnTVI0d0hBWURWUVFEREJVeE1UQTNOekkyTVRjeU5UQTBNamMxTnpnd01qWXdnZ0VpCk1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRGtacWNsaXV2MWVSQk9VSDdrcExEdEcxMHcKdWcwem1oTzAxOUNIUEw1WEZiRHZpb0taWWJNVkpXbldjb0JQUkRmY1dBL01NWE55ck9JR0dpWndMVFkyek5pdApkRkNwcHlWN2U0dWY5NWpPR0RHcFpGRmdYTUhHOUZ3RW90TUJSUDU1UzZ1TFN5V21tYnROR0NGSjFXSHRramVECkp1SUpsb0xlL1BFV2NhR0FWcjE1VlBSNGQwMlRVZEFZcHJJZGJuRm90MnJ4U1RHS2IzZksvT0ZuNUpHaHlEcnoKNHc2SDUwTVlZVC9UUjhlZVJVNmhEeWxZWmNrUUkrR0pxanp4K1cxVnJjZ0p1SzQxM3lvOGY3RnBlRGpQZldGSwpjRnR2TVJOUnprU0c3dlUvRG51MUNCMUFIWFhKdEhOR2hiV1drNitDT2drc01FeFJXRThTa3hwRTEyNzVBZ01CCkFBR2pPREEyTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CWUdBMVVkSlFFQi93UU0KTUFvR0NDc0dBUVVGQndNQ01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRREsrZG8yUElZcitSUnUrVDFXdzU3agpNV1U4bC9ZWmlZYjZHVHdSSTl5aGVUZ0JMd0ZxbS9Hckw4RHFhSHd1eXlHcCtIZHIzRENqRDZLQmd3ZFE1WFdRCmxCNlN5dExOVmJGKzRKN1lick1zbWJvSWg4RDRaUDZMQjNNTDM0dmc2eHg1Mmt5QU9JeDg0S1Z3TXh6RjJBaXYKUFZWQkxwWGtBcE53WlJnMy9uYWZnMVl1VW0xWXBqQVpaVDdrLzRZVGJPL0dmS0ZNLzlDT0M5OENidFNUUjJoVgpLZFlHK3hWek52VjYvTGdtUjFoRXF2Q2xKOG00Y3RzdTk4dURleGNDZ21TaXc3Z3Mzc240cDBhNE90OWdtTFh3Ckxva3dPMnFBdGhBN3YvU0ZaQ050Y2p6VGRha1did1YyeWU5QldGcWNpZExEbnk5cFpwd0w4STRHNTZ2MW1LbVIKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "public_key_data": null, + "public_key_type": "TYPE_X509_PEM_FILE", + "service_account_id": "projects/velero-backup-dc8c8f74/serviceAccounts/velero-backup-sa@velero-backup-dc8c8f74.iam.gserviceaccount.com", + "valid_after": "2026-06-30T17:06:28Z", + "valid_before": "9999-12-31T23:59:59Z" + }, + "sensitive_attributes": [ + [ + { + "type": "get_attr", + "value": "private_key" + } + ] + ], + "identity_schema_version": 0, + "private": "bnVsbA==", + "dependencies": [ + "google_project.backup_project", + "google_project_organization_policy.allow_key_creation", + "google_project_service.drive_api", + "google_service_account.velero_backup_sa", + "random_id.project_suffix" + ] + } + ] + }, + { + "mode": "managed", + "type": "local_file", + "name": "gdrive_sa_key_file", + "provider": "provider[\"registry.terraform.io/hashicorp/local\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "content": "{\n \"type\": \"service_account\",\n \"project_id\": \"velero-backup-dc8c8f74\",\n \"private_key_id\": \"069aa702ed55bb6d3c325a45535ee51bc87de092\",\n \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDkZqcliuv1eRBO\\nUH7kpLDtG10wug0zmhO019CHPL5XFbDvioKZYbMVJWnWcoBPRDfcWA/MMXNyrOIG\\nGiZwLTY2zNitdFCppyV7e4uf95jOGDGpZFFgXMHG9FwEotMBRP55S6uLSyWmmbtN\\nGCFJ1WHtkjeDJuIJloLe/PEWcaGAVr15VPR4d02TUdAYprIdbnFot2rxSTGKb3fK\\n/OFn5JGhyDrz4w6H50MYYT/TR8eeRU6hDylYZckQI+GJqjzx+W1VrcgJuK413yo8\\nf7FpeDjPfWFKcFtvMRNRzkSG7vU/Dnu1CB1AHXXJtHNGhbWWk6+COgksMExRWE8S\\nkxpE1275AgMBAAECggEAGAsiX1ZffojPCZ95rDIWGe++gKmlSCBZILlzTzk6xEoZ\\nRS4sj170ji5RFO0ayr1gsAZpK1KtV44RgRjxoO9xfJVV3fSXpTReQsB/s0hKQq/T\\nUoSn+F/rWjlREn/dfI25yCUKGvC/NumKCRSYNICM/Yhd5aWLN/0rK7Qu4PD3Ul4c\\nTESj6AQTo9rpbOsFsFawBBaJrxyHP9/4ihH4lImmB3w+8APD8dnglD+Xh2GTJOsI\\nIWZVw+8+tE+WrC/grPOaQoTuog5P6AQsO3+3TBDij9tqQjG0yVi8WkQTZmMbCfbZ\\nmtCoFQ4kEL0IDjrQ0XQwghy9noSWciGQtG0hXmYWHQKBgQD0dNTLX6eEWlz3LB+r\\ng4V6qupGVlr7q3l+FKe5yH1VBt8gLXrfSiL5IKNdhM75nACqCuvb8vjXmHfDYapR\\nIMcoEabJR5FTCcg2PIn1XioAh2HSILgOMLZxx8Xne/IIbmLa3P21gRLyMqSZywhR\\nwKoXsFIk0AwjIhUBRkqNjNXOtwKBgQDvL7t85ZrY69P11iKqmZlkxX+/IYvTq9tH\\nvxInHxRRrUSrJeTT74PbA3+NhLfd6M5rNAwavEFRqjNybyZxcfhNRrqfp3BYv4Mc\\nPF8poPNb6e5u24AC6sikBnkbPD9BmgQk4ea/2TrvF9GqiFVjFV1npOLRgAQQl93c\\nI9yTkFv/zwKBgGVCe97eeZqGf9nXCitWqJTedXq7TKbRKdtDHRME7H2rAgPnMu2J\\nXSFLFsCnQcD9kPze10JdzBwqSPnC2/UNGdIMNcVMgvMdqzRkMVVVMxrS+X88FGG0\\nZe6NrPmtSt2ZNBOq1OE5XSq8NZiLFKAgqZR0ciJTl6N5+69yeXFW9D3TAoGAETch\\nSnsIKybGKcKQ2jCV/s/MQwh6FPEgpkhVWSV+g+Zxs9PVZX+uwNu+mYP86+buvH6R\\nhHcaSHN0on7niHDIi19U3Vri1jBqkmSyAMAJ5AqxU59O1mbprAyfONucPe+E7tan\\nkhVjjYPsXlbTtn76KxSOEsAhCsSzfj3CiYhxZrcCgYAwpn90O82fpdOEUJ5nsilI\\nKcTB6uMWMnWmctpJDCNbVTU5i4JlXwL3hi3t+cdCcZN/0rJSIWOzlOoeah40l51H\\nJPrVt3iaJgPjuI1QGb8rsrO6zL44ooJGXz5Sk1F/M9pgcgJZTwjJWWui7ZDOEOS2\\nUK7sp4bZSGWdMb9F9ILJqg==\\n-----END PRIVATE KEY-----\\n\",\n \"client_email\": \"velero-backup-sa@velero-backup-dc8c8f74.iam.gserviceaccount.com\",\n \"client_id\": \"110772617250427578026\",\n \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n \"token_uri\": \"https://oauth2.googleapis.com/token\",\n \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/velero-backup-sa%40velero-backup-dc8c8f74.iam.gserviceaccount.com\",\n \"universe_domain\": \"googleapis.com\"\n}\n", + "content_base64": null, + "content_base64sha256": "gjWa6Ybyx03eN9NFF61rxtnJA7qU2cVs8DYq88edE2w=", + "content_base64sha512": "SQ6O7L8ylOgmpJI65GXpYW4u4Ken/WmdvKHYdFzSyzvTY5I73F+LWKTqKJqhCjNNAzN6heHtm9J0u6KU056nhQ==", + "content_md5": "7754550fa246ffcc9a01ec63e85191ac", + "content_sha1": "a78f85be2f699453aeb2dec074c940b397108b9b", + "content_sha256": "82359ae986f2c74dde37d34517ad6bc6d9c903ba94d9c56cf0362af3c79d136c", + "content_sha512": "490e8eecbf3294e826a4923ae465e9616e2ee0a7a7fd699dbca1d8745cd2cb3bd363923bdc5f8b58a4ea289aa10a334d03337a85e1ed9bd274bba294d39ea785", + "directory_permission": "0777", + "file_permission": "0777", + "filename": "./../k8s/velero/gdrive_sa.json.secret", + "id": "a78f85be2f699453aeb2dec074c940b397108b9b", + "sensitive_content": null, + "source": null + }, + "sensitive_attributes": [ + [ + { + "type": "get_attr", + "value": "content" + } + ], + [ + { + "type": "get_attr", + "value": "sensitive_content" + } + ] + ], + "identity_schema_version": 0, + "dependencies": [ + "google_project.backup_project", + "google_project_organization_policy.allow_key_creation", + "google_project_service.drive_api", + "google_service_account.velero_backup_sa", + "google_service_account_key.velero_backup_sa_key", + "random_id.project_suffix" + ] + } + ] + }, { "mode": "managed", "type": "ovh_domain_zone_record",