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
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.
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
Die Konfiguration prüfen: gcloud config list
Diese Konfiguration ist in Dateien unter $HOME/.config/gcloud/
hinterlegt.
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
gcloud compute instances create nocheintest-b --machine-type f1-micro --zone europe-west1-b
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 mit sudo -s
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
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
gcloud projects get-iam-policy foo-bar-project-1234567890
Zeigt Service-Accounts und User mit ihren Rollen an
(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 ....
Zeigt alle von extern (oder per VPN) erreichbaren IP-Adressen in den angegebenen Regionen (VPN-Endpunkte, VMs und kubernetes-pods … u.ä.):
gcloud compute addresses list --project meintest --filter="region:( europe-west1, europe-west3 )"
siehe auch hcloud - Hetzner cloud CLI (Notizen)
gilt für alle Tipps, Tricks & Spickzettel:
dies sind einfache, teils banale Notizen für meinen persönlichen Gebrauch,
die hier eher zufällig auch öffentlich lesbar sind
(vielleicht hilft es ja jemandem weiter). Verwendung auf eigene Gefahr
Fehler-Hinweise, Dankesschreiben , etc. bitte an: web.21@unixwitch.de
weitere Tools / Spickzettel