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.


