En aquest projecte, aprendrem a desplegar una infraestructura multi-núvol utilitzant Terraform. Aquest projecte ens permetrà comprendre com gestionar recursos en diferents proveïdors de núvol (AWS, Azure i GCP) de manera coordinada i eficient.

Objectius del Projecte

  1. Configurar proveïdors múltiples: Aprendre a configurar Terraform per treballar amb diversos proveïdors de núvol.
  2. Desplegar recursos en AWS, Azure i GCP: Crear i gestionar recursos en cadascun dels proveïdors.
  3. Gestionar la infraestructura de manera centralitzada: Utilitzar Terraform per coordinar i gestionar la infraestructura multi-núvol des d'un sol lloc.
  4. Automatitzar el desplegament: Implementar automatitzacions per simplificar el procés de desplegament.

Requisits Previs

  • Coneixements bàsics de Terraform.
  • Comptes actius en AWS, Azure i GCP.
  • Instal·lació de Terraform en el teu sistema.

Passos del Projecte

  1. Configuració dels Proveïdors

1.1. Configuració del Proveïdor AWS

provider "aws" {
  region = "us-west-2"
  access_key = "YOUR_AWS_ACCESS_KEY"
  secret_key = "YOUR_AWS_SECRET_KEY"
}
  • Explicació: Aquest bloc configura el proveïdor AWS amb les credencials necessàries i la regió on es desplegaran els recursos.

1.2. Configuració del Proveïdor Azure

provider "azurerm" {
  features {}
  subscription_id = "YOUR_AZURE_SUBSCRIPTION_ID"
  client_id       = "YOUR_AZURE_CLIENT_ID"
  client_secret   = "YOUR_AZURE_CLIENT_SECRET"
  tenant_id       = "YOUR_AZURE_TENANT_ID"
}
  • Explicació: Aquest bloc configura el proveïdor Azure amb les credencials necessàries.

1.3. Configuració del Proveïdor GCP

provider "google" {
  credentials = file("path/to/your/credentials.json")
  project     = "YOUR_GCP_PROJECT_ID"
  region      = "us-central1"
}
  • Explicació: Aquest bloc configura el proveïdor GCP amb les credencials necessàries i la regió on es desplegaran els recursos.

  1. Creació de Recursos

2.1. Creació d'una Instància EC2 a AWS

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"

  tags = {
    Name = "TerraformExample"
  }
}
  • Explicació: Aquest bloc crea una instància EC2 a AWS utilitzant una AMI específica i un tipus d'instància.

2.2. Creació d'un Grup de Recursos a Azure

resource "azurerm_resource_group" "example" {
  name     = "example-resources"
  location = "West US"
}
  • Explicació: Aquest bloc crea un grup de recursos a Azure.

2.3. Creació d'una Instància de Màquina Virtual a GCP

resource "google_compute_instance" "example" {
  name         = "terraform-instance"
  machine_type = "f1-micro"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }

  network_interface {
    network = "default"
    access_config {}
  }
}
  • Explicació: Aquest bloc crea una instància de màquina virtual a GCP utilitzant una imatge de Debian.

  1. Desplegament de la Infraestructura

3.1. Inicialitzar el Directori de Treball

terraform init
  • Explicació: Aquest comandament inicialitza el directori de treball de Terraform, descarregant els plugins necessaris per als proveïdors configurats.

3.2. Planificar el Desplegament

terraform plan
  • Explicació: Aquest comandament genera un pla d'execució que mostra les accions que Terraform realitzarà per desplegar la infraestructura.

3.3. Aplicar el Pla de Desplegament

terraform apply
  • Explicació: Aquest comandament aplica el pla d'execució, creant i configurant els recursos especificats.

  1. Automatització del Desplegament

4.1. Script de Desplegament

#!/bin/bash

# Inicialitzar Terraform
terraform init

# Planificar el desplegament
terraform plan -out=tfplan

# Aplicar el pla de desplegament
terraform apply "tfplan"
  • Explicació: Aquest script automatitza el procés d'inicialització, planificació i aplicació del desplegament de Terraform.

  1. Exercicis Pràctics

Exercici 1: Afegir un Bucket S3 a AWS

  • Descripció: Afegeix un bucket S3 a la configuració de Terraform per AWS.
  • Solució:
resource "aws_s3_bucket" "example" {
  bucket = "my-unique-bucket-name"
  acl    = "private"
}

Exercici 2: Afegir una Base de Dades SQL a Azure

  • Descripció: Afegeix una base de dades SQL a la configuració de Terraform per Azure.
  • Solució:
resource "azurerm_sql_database" "example" {
  name                = "example-db"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  server_name         = azurerm_sql_server.example.name
  edition             = "Basic"
}

Exercici 3: Afegir un Bucket de Google Cloud Storage a GCP

  • Descripció: Afegeix un bucket de Google Cloud Storage a la configuració de Terraform per GCP.
  • Solució:
resource "google_storage_bucket" "example" {
  name     = "my-unique-bucket-name"
  location = "US"
}

  1. Resum

En aquest projecte, hem après a configurar Terraform per treballar amb múltiples proveïdors de núvol (AWS, Azure i GCP) i a desplegar recursos en cadascun d'ells. Hem vist com gestionar la infraestructura de manera centralitzada i com automatitzar el procés de desplegament. A més, hem realitzat exercicis pràctics per reforçar els conceptes apresos.

Aquest projecte ens prepara per gestionar infraestructures complexes en entorns multi-núvol, aprofitant les capacitats de Terraform per simplificar i automatitzar el desplegament de recursos.

© Copyright 2024. Tots els drets reservats