Cómo utilizar Cloudformation para crear una instancia EC2
Antes de continuar asumo que conoces el servicio EC2 en AWS y conoces sus componentes básicos. Te recomendaría visitar mi artículo para crear una instancia EC2 utilizando la Consola de AWS y comprender los fundamentos de la instancia EC2. En este artículo, crearemos una instancia EC2 con la última AMI de Linux utilizando Cloudformation, por lo que es necesario conocer los fundamentos de la formación en la nube. Aunque no conozcas Cloudformation y sólo quieras crear una instancia utilizándola, no te preocupes y continúa con el artículo.
En este artículo no cubriremos todas las opciones disponibles en Cloudformation para EC2. Si quieres conocer todas las opciones disponibles en el servicio Cloudformation para EC2, visita la documentación oficial de AWS aquí.
Requisitos previos
- Cuenta de AWS (Créala si no tienes una).
- Conocimientos básicos de Plantillas de Cloudformation.
- Conocimientos básicos de las instancias EC2.
¿Qué vamos a hacer?
- Iniciar sesión en AWS.
- Crear una plantilla.
- Crear una Pila de Cloudformation
- Eliminar la pila Cloudformation
Iniciar sesión en AWS
Haz clic aquí para ir a la página de inicio de sesión de AWS. Introduce tus credenciales de usuario para acceder a tu cuenta de AWS.
Una vez que hayas iniciado sesión con éxito en tu cuenta de AWS, verás la consola de administración principal de AWS como se indica a continuación.
Crea una plantilla
Crea una plantilla, create-ec2-instance.template, en tu máquina local con el siguiente contenido.
También puedes descargar la plantilla desde mi repositorio de Github, el enlace a la plantilla se menciona a continuación.
AWSTemplateFormatVersion: '2010-09-09' Metadata: License: Apache-2.0 Description: 'Create an AWS EC2 instance running the AWS Linux AMI.' Parameters: KeyName: Description: Name of an existing EC2 KeyPair Type: AWS::EC2::KeyPair::KeyName ConstraintDescription: must be the name of an existing EC2 KeyPair. InstanceType: Description: AWS EC2 instance type Type: String Default: t3.small AllowedValues: [t2.nano, t2.micro, t2.small, t2.medium, t2.large, t2.xlarge, t2.2xlarge, t3.nano, t3.micro, t3.small, t3.medium, t3.large, t3.xlarge, t3.2xlarge, m4.large, m4.xlarge, m4.2xlarge, m4.4xlarge, m4.10xlarge, m5.large, m5.xlarge, m5.2xlarge, m5.4xlarge, c5.large, c5.xlarge, c5.2xlarge, c5.4xlarge, c5.9xlarge, g3.8xlarge, r5.large, r5.xlarge, r5.2xlarge, r5.4xlarge, r3.12xlarge, i3.xlarge, i3.2xlarge, i3.4xlarge, i3.8xlarge, d2.xlarge, d2.2xlarge, d2.4xlarge, d2.8xlarge] ConstraintDescription: must be a valid EC2 instance type. SSHLocation: Description: The IP address range allowed to SSH to the EC2 instances Type: String MinLength: 9 MaxLength: 18 Default: 0.0.0.0/0 AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2}) ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x. LatestAmiId: Type: 'AWS::SSM::Parameter::Value' Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2' Resources: EC2Instance: Type: AWS::EC2::Instance Properties: InstanceType: !Ref 'InstanceType' SecurityGroups: [!Ref 'InstanceSecurityGroup'] KeyName: !Ref 'KeyName' ImageId: !Ref 'LatestAmiId' InstanceSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable SSH access on port 22 SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: !Ref 'SSHLocation' Outputs: InstanceId: Description: Id of the newly created AWS EC2 instance Value: !Ref 'EC2Instance' AZ: Description: AZ of the newly created AWS EC2 instance Value: !GetAtt [EC2Instance, AvailabilityZone] PublicDNS: Description: Public DNS Name of the newly created AWS EC2 instance Value: !GetAtt [EC2Instance, PublicDnsName] PublicIP: Description: Public IP address of the newly created AWS EC2 instance Value: !GetAtt [EC2Instance, PublicIp]
Crear una pila de Cloudformation
Para ir al panel de Cloudformation, haz clic en servicios en la parte superior izquierda de la pantalla y busca Cloudformation.
Aquí tienes el panel principal de Cloudformation. Ya tengo una pila creada en mi cuenta en la región seleccionada.
Para crear una nueva pila, haz clic en Crear pila –> Con nuevos recursos (estándar).
Aquí, selecciona «Subir un archivo de plantilla» y elige la plantilla que acabas de crear en tu máquina local en el paso anterior. Para continuar, haz clic en el botón «Siguiente».
Especifica un nombre a la pila, elige el tipo de instancia y la clave existente en tu cuenta. Puedes especificar una IP concreta para que se permita SH en el servidor, si no, mantén 0.0.0.0/0 para permitir el tráfico entrante en el puerto 22. Pulsa el botón «Siguiente» para continuar.
Las etiquetas son opcionales, puedes o no añadir etiquetas en este paso. Haz clic en el botón «Siguiente».
Desplázate al final de la página y haz clic en el botón «Crear pila».
La creación tardará unos minutos, una vez finalizada la creación podrás ver el estado como «CREATE_COMPLETE».
Para verificar si se ha creado la instancia ve al panel de EC2. Para ir al panel de EC2, haz clic en servicios en la parte superior izquierda de la pantalla y busca EC2.
En el panel de EC2, haz clic en «Instancias» en el panel izquierdo.
Aquí puedes ver que se ha creado una nueva instancia. Puedes comprobar y confirmar sus detalles.
Eliminar la pila de Cloudformation
Cuando ya no necesites la instancia, puedes eliminarla borrando la pila de Cloudformation. Al eliminar la pila de Cloudformation se borran los recursos que creó. Para eliminar la pila, pulsa el botón «Eliminar».
Confirma la acción de borrado en la ventana emergente que aparecerá.
Una vez que el borrado se haya realizado correctamente, verás el estado como «BORRAR_COMPLETAR».
Para verificar si la eliminación se ha realizado correctamente ve al panel de control de EC2 y mira el estado de la instancia. En la siguiente captura de pantalla, puedes ver que el estado de la instancia es terminado, verás el mismo estado.
Conclusión
En este artículo hemos visto lo fácil que es crear una instancia EC2 utilizando la pila Cloudformation. Podemos utilizar la misma plantilla para crear varias pilas. También hemos visto que los recursos que se han creado utilizando la pila Cloudformation también se pueden eliminar borrando la propia pila.