En aquest tema, aprendrem com utilitzar Terraform per proveir recursos a Amazon Web Services (AWS). AWS és una de les plataformes de núvol més populars i Terraform facilita la gestió de la seva infraestructura com a codi (IaC). Explorarem els conceptes bàsics, veurem exemples pràctics i realitzarem exercicis per consolidar els coneixements.
Objectius del Tema
- Comprendre com configurar Terraform per treballar amb AWS.
- Aprendre a definir i gestionar recursos AWS amb Terraform.
- Realitzar exercicis pràctics per crear i gestionar recursos AWS.
Requisits Previs
- Coneixements bàsics de Terraform.
- Un compte d'AWS actiu.
- AWS CLI instal·lat i configurat.
Configuració Inicial
- Configurar AWS CLI
Abans de començar, assegura't que tens l'AWS CLI instal·lat i configurat. Pots seguir les instruccions oficials d'AWS per a la instal·lació i configuració.
- Crear un fitxer de configuració de Terraform
Crea un directori per al teu projecte i un fitxer main.tf
dins d'aquest directori.
Definició de Proveïdor AWS
El primer pas és definir el proveïdor AWS en el fitxer main.tf
.
Aquest bloc indica a Terraform que utilitzarà AWS com a proveïdor i especifica la regió on es crearan els recursos.
Creació d'un Recurs AWS: EC2 Instance
- Definir un recurs EC2
Afegim un bloc de recurs per crear una instància EC2.
resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" # AMI d'Amazon Linux 2 instance_type = "t2.micro" tags = { Name = "ExampleInstance" } }
- Explicació del codi
resource "aws_instance" "example"
: Defineix un recurs d'instància EC2 amb el nom "example".ami
: Identificador de la imatge d'Amazon Machine (AMI) que s'utilitzarà per crear la instància.instance_type
: Tipus d'instància (en aquest cas,t2.micro
).tags
: Etiquetes per identificar la instància.
- Inicialitzar i aplicar la configuració
Inicialitza el directori de treball de Terraform.
Aplica la configuració per crear la instància EC2.
Confirma l'aplicació escrivint yes
quan se't demani.
Exercici Pràctic
Objectiu
Crear una instància EC2 amb un grup de seguretat que permeti el trànsit HTTP i SSH.
Passos
- Definir el grup de seguretat
resource "aws_security_group" "example" { name_prefix = "example-" ingress { from_port = 22 to_port = 22 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } ingress { from_port = 80 to_port = 80 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } egress { from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } }
- Associar el grup de seguretat a la instància EC2
resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" security_groups = [aws_security_group.example.name] tags = { Name = "ExampleInstance" } }
- Aplicar la configuració
Solució
provider "aws" { region = "us-west-2" } resource "aws_security_group" "example" { name_prefix = "example-" ingress { from_port = 22 to_port = 22 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } ingress { from_port = 80 to_port = 80 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } egress { from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } } resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" security_groups = [aws_security_group.example.name] tags = { Name = "ExampleInstance" } }
Resum
En aquest tema, hem après a configurar Terraform per treballar amb AWS i a crear una instància EC2 amb un grup de seguretat. Hem vist com definir recursos i aplicar configuracions utilitzant Terraform. A més, hem realitzat un exercici pràctic per consolidar els coneixements adquirits. En el proper tema, explorarem com proveir recursos a Azure amb 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