En este tema, aprenderemos cómo usar Terraform para aprovisionar recursos en Amazon Web Services (AWS). Este módulo está diseñado para guiarte a través de los conceptos básicos y avanzados del aprovisionamiento de recursos en AWS utilizando Terraform.

Objetivos del Tema

  • Entender cómo configurar el proveedor de AWS en Terraform.
  • Aprender a crear y gestionar recursos básicos de AWS como instancias EC2, S3 buckets y VPCs.
  • Implementar ejemplos prácticos de configuración de recursos AWS.
  • Realizar ejercicios prácticos para reforzar los conceptos aprendidos.

  1. Configuración del Proveedor de AWS

¿Qué es un Proveedor en Terraform?

Un proveedor en Terraform es un plugin que permite a Terraform interactuar con APIs de servicios externos. En este caso, el proveedor de AWS permite a Terraform gestionar recursos en AWS.

Configuración Básica del Proveedor de AWS

Para comenzar a usar AWS con Terraform, primero necesitas configurar el proveedor de AWS. Aquí tienes un ejemplo básico de cómo hacerlo:

provider "aws" {
  region = "us-west-2"
  access_key = "your_access_key"
  secret_key = "your_secret_key"
}

Explicación del Código

  • provider "aws": Define el proveedor de AWS.
  • region: Especifica la región de AWS donde se crearán los recursos.
  • access_key y secret_key: Son las credenciales de acceso a tu cuenta de AWS. Nota: No es recomendable hardcodear las credenciales en el código. Utiliza variables de entorno o un archivo de configuración para mayor seguridad.

Uso de Variables de Entorno

Para una configuración más segura, puedes usar variables de entorno para tus credenciales:

provider "aws" {
  region = "us-west-2"
}

Y luego, exporta las variables de entorno en tu terminal:

export AWS_ACCESS_KEY_ID="your_access_key"
export AWS_SECRET_ACCESS_KEY="your_secret_key"

  1. Creación de Recursos Básicos en AWS

Ejemplo 1: Crear una Instancia EC2

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0" # Amazon Linux 2 AMI
  instance_type = "t2.micro"

  tags = {
    Name = "ExampleInstance"
  }
}

Explicación del Código

  • resource "aws_instance" "example": Define un recurso de tipo aws_instance con el nombre example.
  • ami: Especifica la Amazon Machine Image (AMI) que se usará para la instancia.
  • instance_type: Define el tipo de instancia (en este caso, t2.micro).
  • tags: Añade etiquetas a la instancia para facilitar su identificación.

Ejemplo 2: Crear un S3 Bucket

resource "aws_s3_bucket" "example" {
  bucket = "my-unique-bucket-name"
  acl    = "private"
}

Explicación del Código

  • resource "aws_s3_bucket" "example": Define un recurso de tipo aws_s3_bucket con el nombre example.
  • bucket: Especifica el nombre del bucket.
  • acl: Define el control de acceso (en este caso, private).

  1. Ejercicio Práctico

Ejercicio 1: Crear una VPC y Subnet

Objetivo: Crear una VPC con una subred pública en AWS.

Paso 1: Definir la VPC

resource "aws_vpc" "example" {
  cidr_block = "10.0.0.0/16"

  tags = {
    Name = "ExampleVPC"
  }
}

Paso 2: Definir la Subnet

resource "aws_subnet" "example" {
  vpc_id     = aws_vpc.example.id
  cidr_block = "10.0.1.0/24"

  tags = {
    Name = "ExampleSubnet"
  }
}

Explicación del Código

  • aws_vpc.example.id: Referencia el ID de la VPC creada en el paso anterior.
  • cidr_block: Define el rango de direcciones IP para la subred.

Solución del Ejercicio

provider "aws" {
  region = "us-west-2"
}

resource "aws_vpc" "example" {
  cidr_block = "10.0.0.0/16"

  tags = {
    Name = "ExampleVPC"
  }
}

resource "aws_subnet" "example" {
  vpc_id     = aws_vpc.example.id
  cidr_block = "10.0.1.0/24"

  tags = {
    Name = "ExampleSubnet"
  }
}

  1. Resumen

En este tema, hemos aprendido cómo configurar el proveedor de AWS en Terraform y cómo crear recursos básicos como instancias EC2 y S3 buckets. También hemos realizado un ejercicio práctico para crear una VPC y una subred. Estos conceptos son fundamentales para gestionar infraestructuras en AWS utilizando Terraform.

En el próximo tema, exploraremos cómo aprovisionar recursos en Azure utilizando Terraform. ¡Sigue practicando y nos vemos en el siguiente módulo!

© Copyright 2024. Todos los derechos reservados