Como configurar las command line interface para AWS/GCP

Hola, luego de la ultima publicación que hice por acá, les traigo un sencillo tutorial de como configurar los distintos command line interface que ofrecen Amazon Web Services y Google Cloud Platform. Es necesario contar con cuentas activas en AWS y/o GCP, los dos ofrecen créditos y free tier, que en muchos casos dan un acercamiento para usar estas dos IAAS.

AWS

El command line de Amazon Web Services se llama aws-cli y esta escrito en Python, para instalarlo y configurarlo se deben seguir los siguientes pasos, es necesario contar con Python PIP instalado:

pip install awscli

Lo anterior, descargara e instalar el command line interface. Para proceder con la configuración debemos tener creado un usuario de AWS (Esto lo pueden hacer en la sección de AMI) y ese usuario tiene que tener creadas las respectivas Access Key / Secret Key. Por lo que en la linea de comandos ejecutamos:

aws configure

Al ejecutarlo nos solicitara los siguientes datos:

AWS Access Key ID [None]: NNNNXXXXXNN
AWS Secret Access Key [None]: LxxNm5xxxrv0Mxxxx
Default region name [None]: us-east-1
Default output format [None]:

Lo solicitado, lo tienen que configurar con los datos generados de su usuario en AWS. Para comprobar que tenemos acceso correcto usando la command line interface, ejecutamos:

aws ec2 describe-instances

Si tenemos Instancias EC2 creadas, nos mostrara la salida con esos datos. Adicional, si cuentan con dos o mas cuentas de AWS, podemos utilizar perfiles, para ello, editamos los archivos que se encuentran en la ruta ~/.aws , los archivos a crear y editar son config y credentials.

El archivo config debe contener lo siguiente:

[profile personal1]
region = us-east-1
output = json

[profile personal2]
region = us-east-2
output = text

El archivo credentials, tiene que contener las Access Key y Secret Key de los usuarios asociados a los perfiles:

[personal1]
aws_access_key_id = NNNNXXXXXNN111
aws_secret_access_key = xxxnnn111

[personal2]
aws_access_key_id = NNNNXXXXXNN222
aws_secret_access_key = xxxnnn222

Al tener esos dos archivos, podemos consultar con cada una de las cuentas que tengamos asociadas, por ejemplo para personal1 deberemos pasarle el parametro profile a la consulta que se le realice a AWS:

aws ec2 describe-instances --profile personal1

Para dejar una cuenta como por defecto, tanto para config como el archivo credentials es necesario establecer las etiquetas default, por ejemplo:

config:
[profile default]
region = us-east-1
output = json

credentials
[default]
aws_access_key_id = NNNNXXXXXNN222
aws_secret_access_key = xxxnnn111

GCP

Google Cloud Platform cuenta con un SDK que incluye la herramienta gcloud, para instalarla en Linux, tendremos que seguir los siguientes pasos, primero, descargamos el SDK, los desempaquetamos y los instalamos:

wget -c https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-204.0.0-linux-x86_64.tar.gz
tar xvzf google-cloud-sdk-204.0.0-linux-x86_64.tar.gz
cd google-cloud-sdk
./install.sh

Luego de solicitarnos algunos requerimientos, inicializamos el SDK, posterior nos solicitara una serie de requesitos que debemos indicarle, por ejemplo, el proyecto con el que queremos asociar la configuración inicial:

gcloud init

You must log in to continue. Would you like to log in (Y/n)?  Y

Pick cloud project to use:
 [1] dlmonagaslabsdev
 [2] dlmonagaslabs2018
 [3] dlmonagaslabsprod
 [4] Create a new project
Please enter numeric choice or text value (must exactly match list item):

Lo anterior, nos dejara configurada nuestra cuenta de GCP. Para comprobar el correcto funcionamiento, ejecutamos:

gcloud components list

Nos listara los componentes que tenemos habilitados. Ahora bien, en muchos casos va a ser necesario autenticarnos nuevamente, incluso si queremos auntenticarnos con otra cuenta, ejecutaremos:

gcloud auth login

Si necesitamos cambiar de proyecto, primero listamos y luego seteamos, ejecutamos:

gcloud projects list --limit=5
gcloud config set project PROJECT_ID

La variable PROJECT_ID la deben reemplazar con uno de sus proyectos. Si necesitamos tener multiples configuraciones tal cual como lo hicimos anteriormente con la configuraciones para AWS, procedemos a configurarla para GCP, primero listaremos las configuraciones que tenemos ya establecidas, ejecutaremos:

gcloud config configurations list
NAME     IS_ACTIVE  ACCOUNT            PROJECT        DEFAULT_ZONE  DEFAULT_REGION
default  True       [email protected] dlmonagaslabs

Lo que nos muestra en el output es la configuración por default que tenemos seteada con la cuenta de Gmail y su respectivo proyecto. Para crear una nueva configuración llamada profile1 , ejecutaremos:

gcloud config configurations create profile1 --no-activate

Si volvemos  a listar las configuraciones que tenemos configuradas, nos mostrara algo como lo siguiente:

gcloud config configurations list
NAME      IS_ACTIVE  ACCOUNT            PROJECT        DEFAULT_ZONE  DEFAULT_REGION
default   True      [email protected]  dlmonagaslabs
profile1  False

Ahora necesitamos asociarle una cuenta y proyecto a esa configuración, pero primero activamos la configuración recien creada y procedemos a setear la cuenta:

gcloud config configurations activate profile1
gcloud config set account "[email protected]"

Y luego, listamos los proyectos y configuramos la que vamos a usar:

gcloud projects list --limit=5
gcloud config set project dlmonagaslabs2

Si volvemos a listar las configuraciones, nos muestra:

NAME      IS_ACTIVE  ACCOUNT            PROJECT        DEFAULT_ZONE  DEFAULT_REGION
default   False     [email protected]  dlmonagaslabs
profile1  True      [email protected]  dlmonagaslabs2

Otra forma de conocer cual configuracion y proyecto se encuentra activo es, ejecutando:

gcloud config list

[core]
account = [email protected]
disable_usage_reporting = True
project = dlmonagaslabs2
Your active configuration is: [profile1]

Para eliminar una configuración de nuestro SDK, ejecutamos:

gcloud config configurations delete default


En mi caso, he eliminado la configuración por default. Como dato adicional, pueden encontrar esas configuraciones en la ruta ~/.config/gcloud/configurations de su $HOME, así como tambien el archivo active_config que es el encargado de manejar la configuración y se encuentra en ~/.config/gcloud/

Si deseamos configurar las zonas y regiones que vamos a estar utilizando, ejecutaremos:

gcloud config set compute/zone us-east1

Para configurar la region a usar, tambien ejecutaremos:

gcloud config set compute/region us-east1-b

Hasta acá, este corto y sencillo tutorial de las command line interface para Amazon Web Services y Google Cloud Platform. Me despido! Cualquier duda, recuerda dejarla en la caja de comentarios.