Consejos para usar gcloud compute


En esta página se incluyen consejos que pueden ser útiles cuando usas la herramienta de línea de comandos gcloud para gestionar tus recursos de Compute Engine. Para ver una lista completa de todas las marcas y comandos de gcloud compute disponibles, puedes usar la ayuda de comandos integrada (--help), la documentación de referencia publicada o la documentación principal de gcloud.

Antes de empezar

  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

Obtener información sobre los recursos

Puedes obtener información sobre los recursos de Compute Engine de dos formas: con el comando list para devolver una lista de recursos y con el comando describe para devolver detalles sobre un recurso específico.

Obtener recursos con comandos list

Los comandos list se han diseñado para devolver una tabla legible de los datos más relevantes de los recursos solicitados. También puedes filtrar los resultados para obtener una lista más corta con resultados más relevantes.

Filtrado por expresiones regulares de nombres
Puedes usar la sintaxis de RE2 para buscar nombres de recursos (por ejemplo, nombres de instancias o de discos). Consulta el comando gcloud compute instances list
.
Marcas de comandos
--limit

Número máximo de resultados que se devolverán. Esta marca es especialmente útil cuando se usa con la marca --sort-by, tal como se describe en la sección Obtener recursos con comandos de descripción.

--sort-by SORT_BY

Campo por el que ordenar, si procede. Para ordenar los resultados de forma descendente, añade una virgulilla ("~") al principio del valor. Esta marca interactúa con otras marcas que se aplican en este orden: --flatten, --sort-by, --filter y --limit.

Obtener recursos con comandos describe

Los comandos describe se han diseñado para mostrar datos sobre un recurso. Debes indicar el nombre del recurso en el comando describe. Si no recuerdas el nombre del recurso, puedes ejecutar un comando list para obtener una lista de recursos. Por ejemplo, los dos comandos siguientes ilustran una situación en la que puedes enumerar imágenes para obtener el nombre de una imagen y el proyecto asociado, de modo que puedas proporcionar estos datos como entradas a un comando describe:

gcloud compute images list
NAME                                PROJECT        FAMILY     DEPRECATED STATUS
...
centos-7-v20170620                  centos-cloud   centos-7              READY
...
debian-9-stretch-v20170619          debian-cloud   debian-9              READY
...
gcloud compute images describe debian-9-stretch-v20170619 --project debian-cloud

El formato de salida predeterminado de los comandos describe es YAML, pero puedes usar la marca --format para elegir entre los formatos de salida JSON, YAML y texto. El formato JSON puede ser útil si vas a analizar la salida, mientras que el formato de texto coloca cada propiedad en una línea independiente.

gcloud compute regions describe us-central1 --format json
{
  "creationTimestamp": "2013-09-06T10:36:54.847-07:00",
  "description": "us-central1",
  "id": "6837843067389011605",
  "kind": "compute#region",
  "name": "us-central1",
  ...
  "status": "UP",
  "zones": [
    "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a",
    "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-b",
    "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f"
  ]
}

Ejemplos

Ejemplos de comandos de list

Cuando enumeras los recursos, se muestra una tabla fácil de leer con datos de resumen. Por ejemplo, para obtener datos de resumen sobre las instancias de tu proyecto, usa el comando instances list:

gcloud compute instances list
NAME               ZONE          MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
example-instance   asia-east1-b  e2-standard-2 10.240.95.199  107.167.182.44  RUNNING
example-instance2  us-central1-a e2-standard-2 10.240.173.254 23.251.148.121  RUNNING
test-instance      us-central1-a e2-standard-2 10.240.118.207 23.251.153.172  RUNNING

Puedes filtrar los resultados de los comandos list con expresiones regulares incluyendo la marca --filter con un operador key ~ value. Por ejemplo, filtre la lista de instancias para que solo se incluyan las instancias que contengan "test" en el nombre:

gcloud compute instances list --filter="name ~ .*test.*"
NAME           ZONE          MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
test-instance  us-central1-a e2-standard-2 10.240.118.207 23.251.153.172  RUNNING

Para devolver una lista de operaciones de zona que tengan un status de DONE y no tengan un httpStatus de 200, aplica un filtro zone en un comando operations list y, a continuación, grep los resultados:

gcloud compute operations list --filter="zone:(us-central1-a)" | grep DONE | grep -v 200
NAME                                                    HTTP_STATUS TYPE   TARGET                               STATUS
operation-1397752585735-4f73fa25b4b58-f0920fd5-254d709f 400         delete us-central1-a/disks/example-instance DONE
operation-1398357613036-4f7cc80cb41e0-765bcba6-34bbd040 409         insert us-central1-a/instances/i-1          DONE
operation-1398615481237-4f8088aefbe08-cc300dfa-2ce113cf 409         insert us-central1-a/instances/i-2          DONE

Para obtener una lista de los discos de us-central1-a, ordenados de forma descendente por nombre (--sort-by ~NAME), usa el comando disks list:

gcloud compute disks list --sort-by ~NAME --filter="zone:(us-central1-a)"

En algunos casos, puede que quieras que el enlace URI completo dirija al recurso, como en las solicitudes en las que transfieres la salida de un comando list a otro comando o aplicación que toma una lista de enlaces de recursos. Para mostrar enlaces de recursos de URI completos, usa la marca --uri con un comando list.

gcloud compute instances list --uri --filter="name~'^example-.*'"
https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance1
https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance2

Para usar la salida del comando list anterior en un comando que elimina instancias, usa lo siguiente:

gcloud compute instances delete $(gcloud compute instances list --uri --filter="name~'^example-.*'")

Ejemplos de comandos de describe

Para obtener detalles sobre una sola instancia, especifícala, incluida la zona. Por ejemplo, para obtener información sobre la instancia llamada "example-instance" en la zona "asia-east1-b", puedes usar el comando instances describe:

gcloud compute instances describe example-instance --zone asia-east1-b

De forma predeterminada, se devuelve una salida YAML. Para cambiar el formato de salida a JSON o texto (una propiedad por línea), usa la marca --format. Por ejemplo, para devolver la salida de texto de la misma instancia, usa lo siguiente:

gcloud compute instances describe example-instance --zone asia-east1-b --format text
---
canIpForward:                                False
creationTimestamp:                           2014-04-19T06:43:04.087-07:00
disks[0].autoDelete:                         False
disks[0].boot:                               True
disks[0].deviceName:                         example-instance
...

Para obtener información sobre una operación específica, usa el comando operations list para encontrar el URI completo de la operación:

gcloud compute operations list --filter="zone:(us-central1-a)"
NAME                                                    TYPE   TARGET                                      HTTP_STATUS STATUS
operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0 delete us-central1-a/instances/example-instance    200         DONE
operation-1406155180632-4fee4040a67c1-bf581ed8-ab5af2b8 delete us-central1-a/instances/example-instance-2  200         DONE
...

A continuación, usa el URI en un comando operations describe:

gcloud compute operations describe \
operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0 --zone us-central1-a
endTime: '2014-07-23T15:40:02.463-07:00'
id: '31755455923038965'
insertTime: '2014-07-23T15:39:25.910-07:00'
kind: compute#operation
name: operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0
operationType: delete
progress: 100
...

El siguiente comando obtiene los ajustes de la instancia en formato JSON (--format json).

gcloud compute instances describe example-instance \
    --zone us-central1-a
    --format json
{
   ...
   "name": "example-instance",
   "networkInterfaces": [
    {
      "accessConfigs": [
        {
          "kind": "compute#accessConfig",
          "name": "external-nat",
          "natIP": "107.167.187.66",
          "type": "ONE_TO_ONE_NAT"
        }
      ],
      "name": "nic0",
      "network": "https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default",
      "networkIP": "10.240.111.51"
    }
   ],
   ...
   "status": "RUNNING"
   ...
}

Comprobar con qué usuario tienes autorización

Usa el siguiente comando para saber con qué cuenta tienes autorización:

gcloud auth list

Revocar un token de actualización

Para revocar las credenciales de una cuenta en la máquina en la que estés usando la CLI de Google Cloud, usa el siguiente comando:

gcloud auth revoke

De esta forma, tendrás que volver a autenticarte con gcloud init.

También puedes revocar el permiso de la CLI de gcloud para acceder a tus recursos. Por ejemplo, puedes hacerlo si se ha vulnerado la seguridad de tus tokens de actualización. Para revocar el permiso de la CLI de gcloud, sigue estos pasos:

  1. Inicia sesión en la página de tu cuenta de Google.
  2. Haz clic en Seguridad y, a continuación, en Ver todo en la sección Permisos de la cuenta.
  3. Selecciona SDK de Google Cloud y haz clic en Revocar acceso.

Reiniciar una instancia

Para restablecer una instancia llamada "example-instance" en la zona "us-central1-a", usa el comando instances reset:

gcloud compute instances reset example-instance --zone us-central1-a

Para obtener información sobre las implicaciones de un restablecimiento, consulta la documentación sobre cómo restablecer una instancia.