Instalación y Uso de Google Cloud SDK en Linux

Google Cloud SDK proporciona las herramientas de línea de comandos necesarias para gestionar recursos de Google Cloud Platform (GCP) desde tu servidor Linux. Con gcloud, gsutil y bq disponibles en tu VPS, puedes automatizar la gestión de instancias Compute Engine, buckets de Cloud Storage, proyectos y mucho más. Esta guía cubre la instalación completa, autenticación y los comandos más útiles del día a día.

Requisitos Previos

  • Servidor Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+)
  • Python 3.8 o superior instalado
  • Acceso root o sudo
  • Cuenta de Google Cloud activa con un proyecto creado
  • Conexión a internet

Instalación de Google Cloud SDK

Método recomendado: repositorio de paquetes

Ubuntu/Debian

# Añadir la clave GPG de Google Cloud
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg

# Añadir el repositorio
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | \
  sudo tee /etc/apt/sources.list.d/google-cloud-sdk.list

# Actualizar e instalar
sudo apt-get update
sudo apt-get install -y google-cloud-cli

CentOS/Rocky Linux

# Crear el archivo de repositorio
sudo tee /etc/yum.repos.d/google-cloud-sdk.repo << 'EOF'
[google-cloud-cli]
name=Google Cloud CLI
baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el8-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

# Instalar el SDK
sudo dnf install -y google-cloud-cli

Método alternativo: script de instalación

# Descargar e instalar usando el script oficial
curl https://sdk.cloud.google.com | bash

# Recargar el shell para actualizar el PATH
exec -l $SHELL

# Inicializar el SDK
gcloud init

Verificar la instalación

# Comprobar versión instalada
gcloud version

# Listar los componentes instalados
gcloud components list

Autenticación

Autenticación interactiva (con navegador)

# Iniciar la autenticación (abre un enlace para autenticar)
gcloud auth login

# Autenticación para herramientas de terceros (Terraform, etc.)
gcloud auth application-default login

Autenticación sin navegador (para servidores remotos)

# Generar un enlace para autenticar desde otro dispositivo
gcloud auth login --no-launch-browser

Verificar la autenticación

# Ver la cuenta activa
gcloud auth list

# Ver el token de acceso actual
gcloud auth print-access-token

Gestión de Proyectos

# Listar todos los proyectos disponibles
gcloud projects list

# Establecer el proyecto activo
gcloud config set project mi-proyecto-id

# Ver la configuración actual
gcloud config list

# Crear una nueva configuración para otro proyecto
gcloud config configurations create proyecto-secundario
gcloud config set project otro-proyecto-id

# Cambiar entre configuraciones
gcloud config configurations activate default
gcloud config configurations activate proyecto-secundario

Compute Engine

# Listar todas las instancias VM
gcloud compute instances list

# Crear una instancia nueva
gcloud compute instances create mi-servidor \
  --zone=us-central1-a \
  --machine-type=e2-medium \
  --image-family=ubuntu-2204-lts \
  --image-project=ubuntu-os-cloud \
  --boot-disk-size=20GB

# Conectarse por SSH a una instancia
gcloud compute ssh mi-servidor --zone=us-central1-a

# Iniciar una instancia detenida
gcloud compute instances start mi-servidor --zone=us-central1-a

# Detener una instancia
gcloud compute instances stop mi-servidor --zone=us-central1-a

# Eliminar una instancia
gcloud compute instances delete mi-servidor --zone=us-central1-a

# Listar los tipos de máquina disponibles en una zona
gcloud compute machine-types list --zones=us-central1-a --filter="name:e2*"

# Ver los discos disponibles
gcloud compute disks list

Cloud Storage con gsutil

# Listar todos los buckets del proyecto
gsutil ls

# Crear un bucket nuevo
gsutil mb -l europe-west1 gs://mi-bucket-unico/

# Listar el contenido de un bucket
gsutil ls gs://mi-bucket-unico/

# Subir un archivo
gsutil cp archivo.txt gs://mi-bucket-unico/

# Subir un directorio completo de forma recursiva
gsutil cp -r /var/backups/ gs://mi-bucket-unico/backups/

# Sincronizar un directorio (solo sube cambios)
gsutil rsync -r /var/www/ gs://mi-bucket-unico/web/

# Descargar un archivo
gsutil cp gs://mi-bucket-unico/archivo.txt ./

# Hacer un archivo públicamente accesible
gsutil acl ch -u AllUsers:R gs://mi-bucket-unico/archivo.txt

# Ver el tamaño de un bucket
gsutil du -sh gs://mi-bucket-unico/

Gestión de IAM

# Ver las políticas IAM del proyecto
gcloud projects get-iam-policy mi-proyecto-id

# Añadir un rol a un usuario
gcloud projects add-iam-policy-binding mi-proyecto-id \
  --member="user:[email protected]" \
  --role="roles/compute.viewer"

# Listar los roles disponibles
gcloud iam roles list --filter="name:roles/compute*"

# Ver los permisos de un rol
gcloud iam roles describe roles/compute.instanceAdmin

Automatización con Cuentas de Servicio

Para scripts y automatización en servidores, usa cuentas de servicio en lugar de credenciales de usuario.

# Crear una cuenta de servicio
gcloud iam service-accounts create mi-bot \
  --display-name="Bot de automatización"

# Asignar un rol a la cuenta de servicio
gcloud projects add-iam-policy-binding mi-proyecto-id \
  --member="serviceAccount:[email protected]" \
  --role="roles/storage.objectAdmin"

# Generar y descargar la clave JSON
gcloud iam service-accounts keys create clave.json \
  [email protected]

# Autenticar usando la cuenta de servicio
gcloud auth activate-service-account \
  --key-file=clave.json

# Configurar la variable de entorno para Application Default Credentials
export GOOGLE_APPLICATION_CREDENTIALS=/ruta/clave.json

Solución de Problemas

Error: gcloud: command not found

# Recargar el perfil del shell
source ~/.bashrc
# O para zsh
source ~/.zshrc

# Verificar que el binario existe
ls /usr/bin/gcloud

Error: Your current active account does not have any valid credentials

# Renovar la autenticación
gcloud auth login
# O para ADC
gcloud auth application-default login

Error: PERMISSION_DENIED

Verifica que la cuenta tiene los roles necesarios en el proyecto:

gcloud projects get-iam-policy mi-proyecto-id \
  --flatten="bindings[].members" \
  --filter="bindings.members:[email protected]"

Actualizar el SDK

# Actualizar todos los componentes instalados
gcloud components update

# Instalar componentes adicionales
gcloud components install kubectl

Conclusión

Google Cloud SDK es la puerta de entrada a toda la infraestructura de GCP desde la línea de comandos. Con gcloud, gsutil y las cuentas de servicio correctamente configuradas en tu servidor Linux, puedes automatizar despliegues, gestionar almacenamiento y administrar toda tu infraestructura en Google Cloud de forma eficiente y segura.