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

  1. Cuenta de AWS (Créala si no tienes una).
  2. Conocimientos básicos de Plantillas de Cloudformation.
  3. Conocimientos básicos de las instancias EC2.

¿Qué vamos a hacer?

  1. Iniciar sesión en AWS.
  2. Crear una plantilla.
  3. Crear una Pila de Cloudformation
  4. 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.

Página de acceso

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.

Consola de administración de AWS

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.

https://github.com/shivalkarrahul/DevOps/blob/master/aws/cloudformation/create-ec2-instance/create-ec2-instance.template

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.

Buscar Cloudformation

Aquí tienes el panel principal de Cloudformation. Ya tengo una pila creada en mi cuenta en la región seleccionada.

Panel de Cloudformation

Para crear una nueva pila, haz clic en Crear pila –> Con nuevos recursos (estándar).

Crear una pila con nuevos recursos

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».

Sube la plantilla

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.

Especifica los detalles de la pila

Las etiquetas son opcionales, puedes o no añadir etiquetas en este paso. Haz clic en el botón «Siguiente».Añade etiquetas si es necesario

Desplázate al final de la página y haz clic en el botón «Crear pila».

Crear pila

La creación tardará unos minutos, una vez finalizada la creación podrás ver el estado como «CREATE_COMPLETE».

Creación de pila completada

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.

Buscar en EC2

En el panel de EC2, haz clic en «Instancias» en el panel izquierdo.

Panel EC2

Aquí puedes ver que se ha creado una nueva instancia. Puedes comprobar y confirmar sus detalles.

Verificar Instancia

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».

Borrar la pila

Confirma la acción de borrado en la ventana emergente que aparecerá.

Confirmar eliminación

Una vez que el borrado se haya realizado correctamente, verás el estado como «BORRAR_COMPLETAR».

Supresión completa

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.

Verificar el estado de la instancia

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.

También te podría gustar...