Terraform by Hashicorp es una infraestructura y una herramienta de código que se puede utilizar para administrar los diversos servicios de AWS. Es similar al servicio de información de AWS con más características y beneficios. Con Terraform, podemos planificar los cambios que se aplicarán antes de que se apliquen realmente.
Que cubrimos?
En esta guía, utilizaremos las características de Terraform para crear grupos de seguridad. En este SG, permitiremos solo el tráfico HTTP y el tráfico SSH, por ejemplo,. Luego adjuntaremos este grupo de seguridad a una instancia de AWS que ejecuta un servidor web y luego verificaremos si el SGS adjunto funciona como se esperaba.
Que requerimos?
Para realizar esta guía, debe tener una cuenta de AWS y acceso a las credenciales de AWS en su sistema local desde donde está ejecutando el Terraform. También debe tener el Terraform instalado en su sistema. Puede consultar la Guía oficial de Terraform para aprender sobre cómo instalar el Terraform.
Bits sobre grupos de seguridad
Los grupos de seguridad son una parte muy importante del servicio EC2. Lo que hacen es simplemente controlar el tráfico que entran y sale de los recursos con los que están asociados. Por ejemplo, después de crear una instancia y adjuntarle un grupo de seguridad, la regla entrante decide qué tipo de tráfico puede llegar a la instancia. Del mismo modo, una regla de salida decide qué tipo de tráfico se permite que salga de la instancia.
Hay un grupo de seguridad predeterminado que viene con cada VPC recién creado (Virtual Private Cloud). Luego podemos crear más nuevos SG (abreviatura de grupos de seguridad), pero estos SG solo se pueden adjuntar con los recursos que pertenecen a esta VPC.
Uno puede adjuntar uno o múltiples grupos de seguridad al momento de iniciar una instancia. Se pueden adjuntar múltiples reglas a un grupo de seguridad que también se puede modificar más tarde.
Creando un grupo de seguridad
En esta sección, crearemos un grupo de seguridad que solo permita el tráfico saliente "HTTP" (sin grandios), yo.mi. tráfico que sale de la instancia y permita todo el tráfico entrante (ingreso) I.mi. tráfico que llega a la instancia.
Nota: Cuando se crea un nuevo grupo de seguridad en un VPC, tiene una regla de salida de "permitir todo" de forma predeterminada. Cuando se crea un nuevo grupo de seguridad en un VPC, esta regla predeterminada es eliminada por el Terraform, pero puede configurar esta regla nuevamente si es necesario.
Ahora, creamos un directorio de trabajo para nuestro proyecto Terraform que mantendrá todos nuestros archivos posteriores. Abra un editor de texto y cree el siguiente archivo:
$ nano secgrp.TF
Coloque el siguiente código dentro de este archivo y guárdelo:
recurso "AWS_SECURITY_GROUP" "Demo-SG"
nombre = "Sec-Grp"
Descripción = "Permitir el tráfico HTTP y SSH a través de Terraform"
ingreso
from_port = 80
to_port = 80
Protocol = "TCP"
CIDR_BLOCKS = ["0.0.0.0/0 "]
ingreso
from_port = 22
to_port = 22
Protocol = "TCP"
CIDR_BLOCKS = ["0.0.0.0/0 "]
salida
from_port = 0
to_port = 0
Protocolo = "-1"
CIDR_BLOCKS = ["0.0.0.0/0 "]
Los dos bloques de entrada definidos anteriormente permiten los protocolos HTTP y SSH desde cualquier lugar IPv4.
La salida permite todo el tráfico de salida.
Descripción de algunos de los argumentos utilizados anteriormente:
salida: El bloque que contiene la configuración para las reglas de salida.
ingreso: El bloque que contiene la configuración para las reglas de ingreso.
descripción: Describe el título del grupo de seguridad. Es opcional y el valor predeterminado es "administrado por Terraform".
from_port: Denota el número de puerto de inicio.
hacia el puerto: Denota el puerto final.
protocolo: La especificación del protocolo. Si este valor de campo es "-1", los valores from_port y to_port deben ser "0".
Implementar el grupo de seguridad
Ahora que creamos un grupo de seguridad, verificaremos si realmente está funcionando. Para esto, creamos una instancia de EC2 e instalamos un servidor web simple con el mensaje "Tutoriales de Terraform de Linuxhint". Abra un editor de texto y cree un archivo "Webserver.tf ".
$ Nano Webserver.TF
Ahora, pon el siguiente código dentro de él:
Proveedor "AWS"
región = "US-East-1"
access_key = "Your-Access-Key"
secret_key = "tu secreto-key"
Recurso "AWS_Instance" "WebServer"
ami = "AMI-09D56F8956AB235B3"
instance_type = "T2.micro"
key_name = "Your-Kepair-Name"
vpc_security_group_ids = [aws_security_group.sg de demostración.identificación]
asociado_public_ip_address = true
root_block_device
volumen_type = "GP2"
volumen_size = "8"
delete_on_mination = verdadero
user_data = "$ archivo (" Data de usuario.sh ")"
etiquetas =
Nombre = "EjemploC2WebServer"
Reemplace la 'Your-Kepair-Name', 'Your Secret-Key', 'Your-Access-Key' con los valores en su caso. Después de esto, cree un archivo "userData.SH ”para el código de implementación del servidor web.
$ nano userData.mierda
Pegar el siguiente contenido en él:
#!/bin/bash
actualización de sudo apt-get
sudo apt -get actualización -y
sudo apt -get install apache2 -y
sudo systemctl reiniciar apache2
sudo chmod 777 -r/var/www/html/
CD/var/www/html/
sudo eco "Tutoriales de Terraform Linuxhint.
"> índice.html
Ejecutando el servidor web
Ahora es el momento de inicializar el directorio Terraform usando el siguiente comando:
$ Terraform init
Además, es bueno verificar la sintaxis de nuestros archivos de proyecto ejecutando el siguiente comando:
$ Terraform Validate
Ahora, construimos la infraestructura utilizando el comando "Aplicar Terraform":
$ Terraform se aplica
Opcionalmente, podemos obtener una vista previa de los cambios utilizando el comando "Plan Terraform". Cuando el comando Aplicar esté terminado, verifique su consola EC2 para verificar la instancia de EC2 y su grupo de seguridad.
Para verificar el estado del servidor web, abra un navegador web y pegue el nombre DNS de la instancia.
Del mismo modo, intente el SSH en la instancia para ver si podemos iniciar sesión con nuestra clave privada.
Conclusión
En esta guía, hemos visto el proceso de crear un grupo de seguridad. También lo adjuntamos a una instancia de EC2 para ver si funciona como se esperaba. Tanto el protocolo SSH como HTTP funcionan correctamente.