En aquest tema, aprendrem com utilitzar Terraform per proveir recursos a Google Cloud Platform (GCP). Explorarem els conceptes bàsics, la configuració necessària i veurem exemples pràctics per crear i gestionar recursos a GCP.
Objectius del Tema
- Comprendre els conceptes bàsics del proveïment de recursos a GCP amb Terraform.
- Configurar Terraform per treballar amb GCP.
- Crear i gestionar recursos bàsics a GCP utilitzant Terraform.
Requisits Previs
- Coneixements bàsics de Terraform.
- Un compte de Google Cloud Platform.
- Instal·lació de l'eina de línia de comandes
gcloud
.
- Configuració Inicial
1.1. Instal·lació de l'eina de línia de comandes gcloud
Si no tens instal·lada l'eina de línia de comandes gcloud
, pots seguir les instruccions oficials de Google per instal·lar-la: Instal·lació de gcloud.
1.2. Autenticació amb GCP
Autentica't amb el teu compte de GCP utilitzant l'eina gcloud
:
1.3. Creació d'un Projecte a GCP
Crea un nou projecte a GCP o utilitza un projecte existent. Pots crear un projecte des de la consola de GCP o utilitzant l'eina gcloud
:
1.4. Configuració de les Credencials
Genera un fitxer de credencials per a Terraform:
gcloud iam service-accounts create terraform --display-name "Terraform admin account" gcloud projects add-iam-policy-binding my-terraform-project --member="serviceAccount:[email protected]" --role="roles/owner" gcloud iam service-accounts keys create ~/terraform-key.json --iam-account [email protected]
- Configuració de Terraform per a GCP
2.1. Fitxer de Proveïdor
Crea un fitxer main.tf
i afegeix la configuració del proveïdor de GCP:
provider "google" { credentials = file("<path-to-your-key-file>/terraform-key.json") project = "my-terraform-project" region = "us-central1" }
2.2. Creació d'una Xarxa VPC
Afegeix la configuració per crear una xarxa VPC:
resource "google_compute_network" "vpc_network" { name = "terraform-network" auto_create_subnetworks = "true" }
2.3. Creació d'una Instància de Compute Engine
Afegeix la configuració per crear una instància de Compute Engine:
resource "google_compute_instance" "vm_instance" { name = "terraform-instance" machine_type = "f1-micro" zone = "us-central1-a" boot_disk { initialize_params { image = "debian-cloud/debian-9" } } network_interface { network = google_compute_network.vpc_network.name access_config { // Ephemeral IP } } }
- Desplegament de la Configuració
3.1. Inicialització de Terraform
Inicialitza el directori de treball de Terraform:
3.2. Planificació de la Infraestructura
Genera un pla d'execució per veure quins recursos es crearan:
3.3. Aplicació de la Configuració
Aplica la configuració per crear els recursos a GCP:
- Exercicis Pràctics
Exercici 1: Crear una Instància de Compute Engine amb una IP Estàtica
- Modifica la configuració de la instància per assignar una IP estàtica.
- Aplica els canvis i verifica que la instància té una IP estàtica.
Exercici 2: Crear un Bucket de Google Cloud Storage
- Afegeix la configuració per crear un bucket de Google Cloud Storage.
- Aplica la configuració i verifica que el bucket s'ha creat correctament.
Solucions
Solució Exercici 1
resource "google_compute_address" "static_ip" { name = "terraform-static-ip" } resource "google_compute_instance" "vm_instance" { name = "terraform-instance" machine_type = "f1-micro" zone = "us-central1-a" boot_disk { initialize_params { image = "debian-cloud/debian-9" } } network_interface { network = google_compute_network.vpc_network.name access_config { nat_ip = google_compute_address.static_ip.address } } }
Solució Exercici 2
resource "google_storage_bucket" "terraform_bucket" { name = "my-terraform-bucket" location = "US" }
Conclusió
En aquest tema, hem après com configurar Terraform per treballar amb GCP i com crear recursos bàsics com xarxes VPC i instàncies de Compute Engine. També hem practicat amb exercicis per reforçar els conceptes apresos. En el següent mòdul, explorarem funcionalitats avançades de Terraform.
Curs de Terraform
Mòdul 1: Introducció a Terraform
- Què és Terraform?
- Instal·lant Terraform
- Conceptes bàsics de Terraform
- Primera configuració de Terraform
Mòdul 2: Llenguatge de configuració de Terraform
Mòdul 3: Gestió de l'estat
Mòdul 4: Mòduls de Terraform
Mòdul 5: Proveïment de recursos
- Conceptes bàsics de proveïment
- Proveïment de recursos AWS
- Proveïment de recursos Azure
- Proveïment de recursos GCP
Mòdul 6: Funcionalitats avançades de Terraform
Mòdul 7: Millors pràctiques de Terraform
- Organització del codi
- Control de versions
- Proves del codi de Terraform
- Millors pràctiques de seguretat
Mòdul 8: Terraform en CI/CD
- Integració de Terraform amb CI/CD
- Automatització de Terraform amb Jenkins
- Ús de Terraform amb GitHub Actions
- Terraform Cloud i Enterprise