Terraform AWS - Chuda
15734
post-template-default,single,single-post,postid-15734,single-format-standard,bridge-core-3.1.2,qode-page-transition-enabled,ajax_fade,page_not_loaded,,qode-child-theme-ver-1.0.0,qode-theme-ver-30.1,qode-theme-bridge,disabled_footer_top,qode_header_in_grid,wpb-js-composer js-comp-ver-7.6,vc_responsive

Terraform AWS

Terraform AWS

Hola un ejemplo de cómo lanzar una instancia EC2 en AWS usando terraform de HashiCorp.

provider "aws" {
  region = "us-east-1"
  profile= "default"
}

// https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance

// ami-01eccbf80522b562b Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type

resource "aws_instance" "instance-example" {
  ami                    = "ami-example"
  instance_type          = "t3.micro"
  subnet_id = "subnet-example"
  vpc_security_group_ids = ["sg-example"]
  iam_instance_profile = "role-ssm"
  key_name               = "key-example"
  user_data = <<EOF
          #!/bin/bash
          cd /tmp
          sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
          sudo systemctl enable amazon-ssm-agent
          sudo systemctl start amazon-ssm-agent
        EOF

  tags = {
    Name = "instance-example"
    Environment = "Dev"
    Provider = "Provider example"
    Schedule = "True"
    Stop = "MON-FRI-0000"
    Start = "MON-FRI-0100"
    Backup = "MON-FRI-0800"
  }
}

Después de compartirles el código procedo a explicarlo.

provider es el proveedor en este caso AWS.
region la región en donde va a desplegar la instancia EC2.
profile el perfil de AWS CLI que está lanzando la instancia.
resource El recurso que estamos creando en este caso una instancia EC2.
ami el AMI usando para el lanzamiento de la instancia.
instance_type el tipo de instancia en este caso t3.micro.
subnet_id el identificador de la subnet en donde queremos que se lance la instancia.
vpc_security_group_ids el grupo de seguridad que queremos que se adjunte a la instancia (este debe ser de tipo string por eso los (Corchetes [ ]).
iam_instance_profile el perfil o rol (role) IAM que adjuntamos a la instancia.
key_name key pair que se adjunta a la instancia
user_data fragmento de código que se va a ejecutar solamente en el lanzamiento de la instancia sirve para instalar paquetes.
tags etiquetas que tendrá la instancia lanzada.

Para aplicar debemos ejecutar los comando siguiente propios de terraform.

terraform init Inicializa el agente terraform en el directorio en donde se encuentra el archivo .tf.

terraform plan realiza una prueba de lo que se va a ejecutar y nos da un resultado de lo que se va a crear sin crearlo (planifica lo que hemos codificado).

terraform apply aplica los cambios y antes de hacerlo nos pregunta si queremos realizar la acción se debe responder yes en caso de querer ejecutar la acción o aplicarla.

terraform destroy destruye lo creado con el comando apply.

Espero que les sea de ayuda.

Happy Hacking!