2016-10-10 4 views
3

Hallo Ich versuche Listen berechnen Instanzen in einem bestimmten Netzwerk und Subnetz, und kann nicht scheinen, die Filterung richtig zu bekommen. Zum Beispiel habe ich ein Netzwerk namens "prod-net" mit einem Subnetz namens "app-central". Wenn ich die Suche starte, bekomme ich nur "0 Einträge".Instanzen im Subnetzwerk auflisten

~ gcloud compute instances list --filter='network:prod-net' 
Listed 0 items. 

Irgendwelche Vorschläge?

+0

scheint es nicht durch Netzwerk gefiltert werden kann, denn wenn man den Filter nicht anwenden, es gibt keine NETWORK Spalte. Sie können beispielsweise --filter = ZONE ~ us verwenden, um Instanzen in US-Zonen zu filtern. – Dagang

+0

als @Dagang erwähnt, - Filter Flag berücksichtigt die aufgeführten Spalten. Ich würde jedoch vorschlagen, eine Feature-Anforderung in diesem öffentlichen Issue-Tracker [1] zu hinterlegen, um diese Funktion in zukünftigen Versionen verfügbar zu machen. [1]: https://code.google.com/p/google-compute-engine/issues/list – George

Antwort

2

Das Flag --filter wirkt nicht auf die Tabellendaten, sondern auf das zugrunde liegende Rich-Resource-Objekt. Führen Sie gcloud compute instances list --format=json aus, um dieses Objekt anzuzeigen.

Was Sie suchen in diesem Fall:

$ gcloud compute instances list --filter='networkInterfaces.network=prod-net' 

(ich schaltete den :-= weil die ehemaligen Mittel „enthält“ und dieser bedeutet eine exakte Übereinstimmung Siehe gcloud topic filters für mehr.).

+0

Ich musste 'gcloud compute instances list machen --filter = 'networkInterfaces [0] .network = prod-net Um es zum Laufen zu bringen. –

+0

Interessant, ich habe gerade bestätigt, dass meine ursprüngliche Antwort immer noch funktioniert. Sind Sie auf der neuesten Version von gcloud (138.0.0)? –

+0

Ah, du hast Recht. Auf meiner Ubuntu-VM sagt mir "apt", dass "google-cloud-sdk ist bereits die neueste Version (111.0.0-0ubuntu1 ~ 16.04.0)". Wenn Sie die Google Cloud Shell in der GCE-Webkonsole verwenden, bin ich auf Version 138 und Ihr Befehl funktioniert einwandfrei. Vielen Dank! –

1

Sie können tatsächlich GCE-Instanzen nach Subnetz mit gcloud filtern.

Sie müssen nach networkInterfaces.subnetwork filtern, und der Literalwert, mit dem verglichen werden soll, ist die vollständige URL der Subnetzressource, nicht nur der Subnetzname.

gcloud compute networks subnets list <YOUR_SUBNET_NAME> --format=flattened

Beispiel:

Die "Ressource url" für Ihr Subnetz ist erhältlich

$ gcloud compute networks subnets list sg-zk-1 --project my-gcp-project --format=flattened 
--- 
creationTimestamp:  2017-04-20T02:22:17.853-07:00 
gatewayAddress:  10.9.19.33 
id:     6783412628763296550 
ipCidrRange:   10.9.19.32/28 
kind:     compute#subnetwork 
name:     sg-zk-1 
network:    valkyrie 
privateIpGoogleAccess: True 
region:    asia-southeast1 
selfLink:    https://www.googleapis.com/compute/v1/projects/my-gcp-project/regions/asia-southeast1/subnetworks/sg-zk-1 

Im obigen Beispiel wird der Subnetz-Name ist sg-zk-1.

Die entsprechende Ressourcen-URL für das Subnetz ist der Wert selfLink, der https://www.googleapis.com/compute/v1/projects/my-gcp-project/regions/asia-southeast1/subnetworks/sg-zk-1 ist.

Nun, da ich habe die subnet_url ich die Instanzen filtern dazugehöriger:

$ subnet_url="https://www.googleapis.com/compute/v1/projects/my-gcp-project/regions/asia-southeast1/subnetworks/sg-zk-1" 

$ gcloud compute instances list --filter="networkInterfaces.subnetwork=${subnet_url}" 
NAME   ZONE    MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS 
sg-zookeeper-4 asia-southeast1-b n1-standard-2    10.9.19.37    RUNNING 
sg-zookeeper-5 asia-southeast1-b n1-standard-2    10.9.19.38    RUNNING 
sg-zookeeper-1 asia-southeast1-a n1-standard-2    10.9.19.34    RUNNING 
sg-zookeeper-2 asia-southeast1-a n1-standard-2    10.9.19.35    RUNNING 
sg-zookeeper-3 asia-southeast1-a n1-standard-2    10.9.19.36    RUNNING 
Verwandte Themen