In diesem Blog möchte ich ein Problem schildern, auf das wir bei einem Kunden bei der Arbeit mit Google Cloud und Terraform gestoßen sind. Wir haben entdeckt, dass das Google SDK zwei verschiedene aktive Logins hat. Das ist auf den ersten Blick nicht ganz klar.
Benutzer ist nicht berechtigt
Um mit dem Problem zu beginnen, das wir hatten. Wir arbeiten mit einem Team von Mitarbeitern an einem Terraform-Projekt, um unsere Google Cloud-Umgebung bereitstellen zu können. Ein Kollege hat eine schöne Terraform-Konfiguration erstellt, die ich testen und mit der ich spielen wollte.
Bevor ich anfange, Dinge zur Konfiguration hinzuzufügen, wollte ich überprüfen, ob die Konfigurationsdatei noch die Google Cloud-Infrastruktur widerspiegelt:
$ terraform plan
Dies führte zu dem folgenden Fehler:
Aktualisieren des Terraform-Status im Speicher vor dem Planen... Der aktualisierte Status wird für die Berechnung dieses Plans verwendet, aber er wird nicht beharrte auf lokal oder Remote-Status-Speicherung. google_project.proj: Aktualisieren des Status... (ID: projekt-x-1) Fehler beim Aktualisieren des Status: 1 Fehler(s) aufgetreten: * google_project.proj: 1 Fehler(s) aufgetreten: * google_project.proj: google_project.proj: Fehler beim Lesen des Projekts "Projekt-x-1": googleapi: Fehler 403: Benutzer ist nicht autorisiert., verboten
Verdammt, mal sehen, ob ich den Fehler mit den gcloud SDK-Befehlen reproduzieren kann.
$ gcloud Projekte Liste PROJECT_ID NAME PROJECT_NUMBER projekt-x-1 Projekt x 123456789012
$ gcloud Projekte beschreiben Projekt-x-1 createTime: '2017-08-04T12:43:01.088Z' lifecycleState: ACTIVE Name: Projekt x Elternteil: id: '12345677889' Typ: Organisation projectId: projekt-x-1 ProjektNummer: '123456789012'
Das ist seltsam: Ich kann das Projekt mit dem gcloud SDK sehen, aber nicht mit terraform.
Nach einer Weile fand ein Kollege dies in der Google Cloud-Konsole:
Das ist seltsam, denn ich möchte mein GoDataDriven-Konto nicht für die Kundendaten verwenden.
Überprüfen wir meine Authentifizierung:
$ gcloud auth list Berechtigte Konten AKTIVES KONTO *Um das aktive Konto festzulegen, führen Sie aus: $ gcloud config set account </span>ACCOUNT<span class="sb">
Das scheint korrekt zu sein. Aber lassen Sie uns die Abmeldung und die erneute Anmeldung überprüfen.
$ gcloud auth revoke Widerrufene Berechtigungsnachweise: -$ gcloud auth login Ihr Browser wurde zum Besuch geöffnet: https://accounts.google.com/o/oauth2/auth?redirect_uri=http%3A%2F%2Flocalhost%3A8085%2F&prompt=select_account... WARNUNG: gcloud auth loginschreibt nicht mehr die Standard-Anmeldeinformationen der Anwendung. Wenn Sie ADC verwenden müssen, siehe: gcloud auth application-default --help Sie sind jetzt eingeloggt als []. Ihr aktuelles Projekt ist [None]. Sie können diese Einstellung ändern, indem Sie Folgendes ausführen: $ gcloud config set project PROJECT_ID
Moment mal, was ist das WARNING??
Jetzt kommt der Affe aus dem Ärmel
Es scheint zwei verschiedene Authentifizierungssitzungen zu geben, die normal gcloud auth und gcloud auth application-default.
Die gcloud-Befehlszeile verwendet die erste, terraform die zweite.
Nachdem ich die Standardsitzung für die Anwendung widerrufen und mich erneut mit dem richtigen Konto angemeldet hatte, war der Himmel wieder blau.
$ gcloud auth application-default revoke Sie sind dabei, die Zugangsdaten zu widerrufen, die in: [/Users/rvanweverwi jk/.config/gcloud/application_default_credentials.json] Möchten Sie fortfahren (J/N)? y Berechtigungsnachweis widerrufen.
$ gcloud auth application-default login Ihr Browser wurde für einen Besuch geöffnet: https://accounts.google.com/o/oauth2/auth?redirect_uri=http%3A%2F%2Flocalhost%3A8085%2F&prompt=select_account... Anmeldeinformationen in Datei gespeichert: [/Users/rvanweverwijk .config/gcloud/application_default_credentials.json] Diese Anmeldedaten werden von jeder Bibliothek verwendet, die Standard Credentials der Anwendung.
Unsere Ideen
Weitere Blogs
Contact



