Cómo crear una instancia EC2 en AWS con Terraform
Con la llegada de la tecnología de computación en la nube, cada vez más industrias están migrando sus cargas de trabajo a infraestructuras basadas en la nube. Debido a este patrón, los tecnólogos han reconocido la necesidad de un mecanismo para automatizar el proceso de provisión de instancias (y otros recursos de la nube). Terraform es una de esas herramientas de código abierto para facilitar esta progresión.
Contenidos
Lo que cubrimos
Este artículo muestra cómo podemos usar Terraform para crear una instancia EC2 en AWS. Vemos un ejemplo de instalación de un servidor web simple en esta instancia. Primero, hablemos un poco sobre la instalación de Terraform.
Aquí se explica cómo instalar Terraform
Los paquetes oficiales de Terraform para varios sistemas operativos como Windows, Mac y distribuciones basadas en Linux como Ubuntu/Debian, CentOS/RHEL, etc. están disponibles. Además, Terraform también mantiene archivos binarios precompilados y también se puede compilar desde la fuente. Puede consultar los diferentes procedimientos de instalación en el sitio web de Terraform. Ejecute el siguiente comando para verificar su instalación de Terraform:
Creación de una instancia de AWS EC2 con Terraform
Después de instalar Terraform en su sistema, proceda a crear una instancia EC2 en AWS. Hay algunos archivos para administrar de manera efectiva una implementación de Terraform. Aunque podemos crear un solo archivo y declarar todo eso, este enfoque hace que todo el escenario sea torpe. Entonces, primero creemos un directorio de trabajo como se muestra a continuación:
Paso 1. Comience con una carpeta que contenga todos los archivos de configuración. Cree y mueva la carpeta de la siguiente manera:
1 | $ mkdir linuxhint-terraform && cd linuxhint-terraform |
Paso 2. Vamos a crear nuestro primer archivo de configuración, variables.tf, que contiene información sobre nuestra región de AWS y el tipo de instancia que queremos usar, como se muestra a continuación: Ahora pegue el siguiente texto en él y guarde el archivo que se muestra a continuación:
12345678910 | variable «aws_region» { description = «La región de AWS en la que implementar la instancia EC2». predeterminado = «us-east-1» }variable «instance_type» { descripción = «tipo de instancia para ec2» predeterminado = «t2.micro»} |
Paso 3. De manera predeterminada, cuando Terraform crea una nueva instancia, el grupo de seguridad predeterminado asociado con la instancia denegará todo el tráfico. Entonces crearemos un nuevo archivo «secgrp.tf» para crear un grupo de seguridad «web-sg» que permitirá el tráfico «SSH» y «HTTP» entrante y todo el tráfico saliente como se muestra a continuación: Agregar Ahora ingrese el siguiente código Como se muestra abajo:
1234567891011121314151617181920212223 | Recurso «aws_security_group» «web-sg» { nombre = entrada «new-secgrp» { from_port = 80 to_port = 80 protocolo = «tcp» cidr_blocks = [«0.0.0.0/0»] } ingreso { from_port = 22 to_port = 22 protocolo = «tcp» cidr_blocks = [«0.0.0.0/0»] } salida { from_port = 0 to_port = 0 protocolo = «-1» cidr_blocks = [«0.0.0.0/0»] }} |
paso 4 Cree un archivo «main.tf» que defina la infraestructura que desea, como se muestra a continuación: Ahora pegue la siguiente configuración en él:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566678 | terraform { proveedores_requeridos { aws = { fuente = «hashicorp/aws» versión = «~> 3.27» } } versión_requerida = «>= 0.14.9»}proveedor «aws» { región = var.aws_region shared_credentials_file = «/home/User_Name /.aws/credentials» profile = «profile1»}resource «aws_instance» «webserver» { ami = «ami-09d56f8956ab235b3» tipo_instancia = var.instance_type key_name = «EC2-keyPair-Name» vpc_security_group_ids = [aws_security_group.web-sg.id]Associate_public_ip_address = true root_block_device { volume_type = «gp2» volume_size = «30» delete_on_termination = false} user_data = <
Este es nuestro sitio de prueba impulsado por Terraform.» > etiquetas index.htmlEOF = { Name = «ExampleEC2Instance » }}output «IPAddress» { value = «${aws_instance.webserver.public_ip}»} |
En el código anterior, no olvide cambiar el «Nombre de usuario» por el nombre del usuario de su sistema y el «EC2-keyPair-Name» por el nombre del par de claves en su caso. Veamos algo sobre los parámetros usados en los archivos de arriba:
aws_instance: Esto crea un recurso de instancia EC2. Las instancias se pueden crear, modificar y destruir.
IAM: especifique el ID de AMI para usar con la instancia EC2
tipo de instancia: Esta opción se usa para declarar el tipo de instancia a usar
Nombre clave: especifica el nombre del par de claves que se usará con la instancia EC2
vpc_security_group_ids: un argumento para agregar una lista de ID de grupos de seguridad
dirección_ip_pública_asociada: especifique si desea asociar una IP pública con una instancia dentro de una VPC
datos del usuario: Se usa para pasar comandos/datos a una instancia en el inicio. Ahora inicialice Terraform ejecutando el siguiente comando: Ahora aplique los cambios con el siguiente comando:
revisión del procedimiento
Ahora verifiquemos que se haya creado la instancia EC2 deseada. Vaya a la consola de EC2 y busque las instancias en ejecución como se muestra en la siguiente imagen:
Dado que nuestra instancia se ha creado con éxito, ahora veamos si el sitio web que proporcionamos funciona correctamente o no. Copie el nombre DNS o la dirección IP pública de la instancia e ingréselo en un navegador web como se muestra a continuación:
¡Bien hecho! Nuestro servidor web está funcionando bien.
Limpiar los recursos
Cuando haya probado su infraestructura o cuando no la necesite, limpie los recursos ejecutando el siguiente comando:
Conclusión
En esta guía, aprendimos cómo crear una instancia EC2 en AWS usando Terraform. También mostramos cómo implementar un servidor web AWS simple usando Terraform.