2016-10-10 3 views
3

Привет Я пытаюсь перечислить экземпляры списка в определенной сети и подсети и, похоже, не может получить фильтрацию. Например, у меня есть сеть с именем «prod-net» с подсети с именем «app-central». Когда я запускаю поиск, я просто получаю «В списке 0 элементов».Список экземпляров в подсети

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

Любые предложения?

+0

Кажется, он не может быть отфильтрованы по сети, потому что, если вы не примените фильтр там нет столбца NETWORK. Например, вы можете использовать --filter = ZONE ~ us для фильтрации экземпляров в зонах США. – Dagang

+0

как указано в @Dagang, - флаговый флаг принимает во внимание перечисленные столбцы. Тем не менее, я предлагаю подать запрос функции в этот общедоступный трекер сообщений [1], чтобы эта функция появилась в будущих выпусках. [1]: https://code.google.com/p/google-compute-engine/issues/list – George

ответ

2

Флаг --filter не работает с данными таблицы, а является основным ресурсным ресурсом. Чтобы увидеть этот объект, запустите gcloud compute instances list --format=json.

Что вы ищете в этом случае является:

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

(я переключил : к =, поскольку прежние средства «содержит», а второй означает точное совпадение См gcloud topic filters для больше.).

+0

Мне нужно было сделать список экземпляров 'gcloud compute examples --filter = 'networkInterfaces [0] .network = prod-net «чтобы заставить его работать. –

+0

Интересно, я только что подтвердил, что мой оригинальный ответ все еще работает. Вы используете последнюю версию gcloud (138.0.0)? –

+0

А, ты прав. На моей виртуальной машине Ubuntu 'apt' сообщает мне, что« google-cloud-sdk - это уже самая новая версия (111.0.0-0ubuntu1 ~ 16.04.0) ». При использовании Google Cloud Shell на веб-консоли GCE я нахожусь на версии 138, и ваша команда работает нормально. Благодаря! –

1

Вы действительно можете фильтровать экземпляры GCE по подсети, используя gcloud.

Вам необходимо отфильтровать на networkInterfaces.subnetwork и буквальное значение для сравнения с полным URL-адресом подсети, а не только именем подсети.

"ресурсное URL" для подсети может быть получено:

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

Пример:

$ 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 

В приведенном выше примере, имя подсети sg-zk-1.

Соответствующий URL-адрес ресурса для подсети - это значение selfLink, которое равно https://www.googleapis.com/compute/v1/projects/my-gcp-project/regions/asia-southeast1/subnetworks/sg-zk-1.

Теперь, когда у меня есть subnet_url я могу фильтровать экземпляры, принадлежащие к нему:

$ 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 
Смежные вопросы