Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:sysadmin:tools:gcloud

gcloud - Google Cloud Spickzettel

Installation (Google Cloud SDK)

Zuerst die Google Cloud SDK nach Anleitung installieren: https://cloud.google.com/sdk/

(Download, tgz Auspacken, ./install)

Hinweis: Die Installation erfolgt in das Verzeichnis, von dem man das Installationsscript ./install aufruft, (bei mir alles in /opt/google-cloud-sdk).

Hier für die bash beschrieben, gibts aber auch für zsh: Für den Komfort werden noch zwei Ergänzungen in .profile oder .bashrc empfohlen (wenn man das ganze mit dem selben Benutzer installiert, mit dem man später arbeitet, wird das aber schon vom install erledigt):

source /opt/google-cloud-sdk/completion.bash.inc   # gcloud shell command completion
source /opt/google-cloud-sdk/path.bash.inc         # $PATH Ergänzung

Authentifizierung (mit Benutzer)

Nach der Installation Authentifizieren: gcloud auth login

(es öffnet sich ein Browser-Fenster, in dem man sich mit seinem Google Account anmelden muss)

Die Credentials werden dann in $HOME/.config/gcloud/credentials gespeichert.

Authentifizierung (mit Service-Account + Credentials File)

Für Scripts empfiehlt es sich, einen speziellen Service-Account anzulegen und dafür eine "Credentials Datei" herunterzuladen und die zu verwenden.

so bindet man das in Python ein:

import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "./meine-credentials-fuer-dieses-projekt.json"

und so bei einem Shell-Script:

export GOOGLE_APPLICATION_CREDENTIALS=./meine-credentials-fuer-dieses-projekt.json

Konfiguration zeigen

Die Konfiguration prüfen: gcloud config list

Diese Konfiguration ist in Dateien unter $HOME/.config/gcloud/ hinterlegt.

An einem Projekt arbeiten

zu einem Project wechseln, z.B. "meintest": gcloud config set project meintest

Welche Virtuellen Maschinen gibt es: gcloud compute instances list

das sollte so (ähnlich) aussehen:

NAME        ZONE           MACHINE_TYPE PREEMPTIBLE INTERNAL_IP    EXTERNAL_IP    STATUS
meintest-b  europe-west1-b f1-micro                 10.249.224.134 114.153.60.192  RUNNING
meintest-c  europe-west1-c f1-micro                 10.249.224.135 126.144.16.89   RUNNING

Compute Engine - virtuelle Maschinen

Neue Virtuelle Maschine erstellen

gcloud compute instances create nocheintest-b --machine-type f1-micro --zone europe-west1-b

Login mit SSH

das erste Mal auf einer virtuellen Maschine einloggen;

gcloud compute ssh meintest-b --zone europe-west1-b

HINWEIS: Auf der Instanz wird der User angelegt, per Default wird als Name $USER verwendet (der User, mit dem man lokal eingeloggt ist).

Wenn man das nicht will, $USER kurz mal ändern oder den gewünschten Benutzernamen angeben:

gcloud compute ssh meinuser@meintest-b --zone europe-west1-b

Beim ersten mal einloggen, wird ein ssh-key generiert ( $HOME/.ssh/google_compute_engine )

Diesen key kann man mit ssh-add $HOME/.ssh/google_compute_engine in den ssh-Agent laden und sich ab da einfacher einloggen mit:

ssh meinuser@IP-Adresse

root werden

root werden mit sudo -s

Metadaten von der Compute Engine aus herausfinden

innerhalb der VM rausfinden, wie sie in der Cloud benannt ist, in welcher Zone sie sich befindet und mehr …

Der FQDN (Fully Qualified Domain Name, allerdings von intern aus gesehen)

$ FQDN=$( curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/hostname 2>/dev/null )
$ echo $FQDN
meintest-c.c.meintest.internal

oder kürzer nur der Name:

$ HOST=$( curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/name 2>/dev/null )
$ echo $HOST
meintest-c

die Zone

$ ZONEPATH=$( curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/zone 2>/dev/null;echo )
$ echo $ZONEPATH
projects/1234567890123/zones/europe-west1-c

Machine Type

$ curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/machine-type 2>/dev/null;echo
projects/1234567890123/machineTypes/f1-micro

Mehr dazu: https://cloud.google.com/compute/docs/storing-retrieving-metadata

Projektübersicht & IAM

Projekte? Welche Projekte?

Auf der Google Cloud Console sieht man (meistens?) nur die Projekte, die man schon mal "angesehen" hat.

Mit der Kommandozeile kann man sich alle Projekte anzeigen lassen, die man sehen dürfte. Mit dieser Information kann man dann auf der Google Cloud Console dann auch bisher unsichtbaren Projekten mit "copy-paste" betreten …

$ gcloud projects list

PROJECT_ID                  NAME                PROJECT_NUMBER
foo-bar-project-1234567890  foo-bar Project     1245892040987
toast-as-a-service-245      Toast as a Service  798000808307
these-are-no-real-projects  All Fake Projects   243139786784
example-45678901234         An Example          68546852904
example2-987654321          Another EXAMPLE     9528529035994

Policies für ein Projekt anzeigen

gcloud projects get-iam-policy foo-bar-project-1234567890

Zeigt Service-Accounts und User mit ihren Rollen an

Wer hat welche Rolle in meiner Organisation?

(man kann Projekte auch ohne Organisation betreiben, dann geht folgendes natürlich nicht)

In welchen Organisationen bin ich dabei? Und wie sind die IDs dieser Organisationen?

gcloud organizations list

DISPLAY_NAME            ID  DIRECTORY_CUSTOMER_ID
example.org   556415725628              XXXXXXXXX

Zeig mir die Rollen, die in dieser Organisation vergeben sind

gcloud organizations get-iam-policy 556415725628

bindings:
- members:
  - user:peter.zahlt@example.org
  - user:anna.beispiel@example.org
  - user:thomas.thomas@example.org
  role: roles/billing.admin
....
de/sysadmin/tools/gcloud.txt · Zuletzt geändert: 2020-02-07 15:26 von hella

Seiten-Werkzeuge

Mastodon Twitter