![](https://madsblog.net/wp-content/uploads/2024/03/Presentation1-edited.png)
Ejecutaremos este procedimiento utilizando Cloud Shell o Gcloud SDK.
Variable $PROJECT_ID
Vamos a setear la variable $PROJECT_ID con el nombre de nuestro proyecto de GCP:
export PROJECT_ID="tu-project-id"
echo $PROJECT_ID
Ejecutamos el comando en Cloud Shell y podremos verificar le contenido de la variable.
![](https://madsblog.net/wp-content/uploads/2024/03/image.png)
Luego ejecutaremos el siguiente comando para crear la SA.
gcloud iam service-accounts create terraform --display-name="Terraform"
Luego ejecutaremos el comando gcloud projects add-iam-policy binding para dar los permisos necesarios:
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:terraform@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/editor"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:terraform@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/compute.networkAdmin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:terraform@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/resourcemanager.projectIamAdmin"
Script completo:
gcloud iam service-accounts create terraform --display-name="Terraform" && gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:terraform@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/editor" && gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:terraform@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/compute.networkAdmin" && gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:terraform@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/resourcemanager.projectIamAdmin"
Al ejecutarlo veremos los permisos generados.
![](https://madsblog.net/wp-content/uploads/2024/03/image-1-1024x288.png)
En este caso asignamos los roles de Editor y Compute Network Admin. En un caso de uso en producción debemos utilizar el principio de Least Privialged.
![](https://madsblog.net/wp-content/uploads/2024/03/image-2-1024x520.png)
Activar Resource Manager API
Para poder utiilzar terraform en GCP, debemos asegurarnos que la API “Cloud Resource Manager” esté habilitada. Esto debemos realizarlo manualmente.
- Ingresamos al buscador de la Consola de GCP y buscamos la API.
![](https://madsblog.net/wp-content/uploads/2024/03/image-4.png)
- Habilitamos la API.
![](https://madsblog.net/wp-content/uploads/2024/03/image-5-1024x522.png)
- Verificamos que este activada.
![](https://madsblog.net/wp-content/uploads/2024/03/image-6-1024x490.png)
Obtener credenciales para conectar Terraform
Para que Terraform pueda conectarse con nuestra cuenta de GCP debemos generar un archivo de credenciales. En este caso utilizaremos uno en formato JSON.
- Ir a “IAM & Admin” en nuestra consola e ingresamos a la cuenta que acabamos de crear.
![](https://madsblog.net/wp-content/uploads/2024/03/image-7-1024x517.png)
- Vamos a la tab “Keys” y agregamos una nueva Key.
![](https://madsblog.net/wp-content/uploads/2024/03/image-8-1024x522.png)
- Seleccionamos “Create new key”.
![](https://madsblog.net/wp-content/uploads/2024/03/image-9.png)
- Seleccionamos formato JSON y click en Enable.
![](https://madsblog.net/wp-content/uploads/2024/03/image-10.png)
- Esto descargará un archivo .json con las credenciales de nuestra Service Account.
IMPORTANTE
Debemos asegurarnos de manipular este archivo de manera segura. Este archivo contiene las credenciales de acceso a nuestra Service Account. Debemos guardarlo en un Repositorio de Secretos
- Al finalizar se descargará el archivo json con el acceso a nuestra Service Account.
![](https://madsblog.net/wp-content/uploads/2024/03/image-11-1024x519.png)
Configurar variable de entorno GOOGLE_APPLICATION_CREDENTIALS
Ahora debemos ejecutar el siguiente comando en nuestro entorno de ejecución de Terraform.
En este caso utilizaremos un entorno con state local en vscode para el ambiente de laboratorio.
- Primero debemos asegurarnos de tener disponible de manera seguro nuestro archivo de credenciales.
- Luego, debemos ejecutar el siguiente comando en PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="multicloudstech3-88dccdcecd98.json"
- Al ejecutar el comando, se habilitará en Terraform la posibilidad de utilizar estas credenciales para realizar el login en GCP.
![](https://madsblog.net/wp-content/uploads/2024/03/image-12-1024x745.png)
Antes de realizar un commit del codigo, debemos asegurarnos de incluir nuestros archivos de credenciales en el archivo Gitignore.
![](https://madsblog.net/wp-content/uploads/2024/03/image-13-1024x745.png)
Leave a Reply