Cómo automatizar sus recursos de AWS con plantillas de CloudFormation

descargar tres archivos

AWS CloudFormation es un servicio que permite a los administradores de sistemas configurar y administrar una colección completa de recursos de AWS -incluyendo sus configuraciones, dependencias e interrelaciones entre ellos- en una sola declaración. También pueden realizar cambios en la infraestructura existente sin detener o volver a desplegar las aplicaciones que se ejecutan sobre ella.

AWS Cloudformation permite configurar la infraestructura como código. Se trata básicamente de un motor de infraestructura como código que funciona en la nube y ayuda a los usuarios a aprovisionar y administrar recursos informáticos, de almacenamiento y otros. Una plantilla de CloudFormation es un archivo JSON con directivas sobre cómo crear o actualizar los recursos de AWS. Podemos utilizar AWS CLI, AWS SDKs como boto3, o el servicio AWS CloudFormation para crear plantillas.

CloudFormation proporciona muchas ventajas como:

  • Facilidad de uso: CloudFormation utiliza un formato de plantilla que le permite describir todos los atributos y relaciones de su recurso AWS en un solo lugar.
  • Agilidad de salida al mercado: CloudFormation le permite construir e implementar sus recursos de AWS como código.
  • Alto nivel de automatización: CloudFormation transforma el código de alto nivel en un conjunto de plantillas sencillas que pueden utilizarse para crear o actualizar los recursos de AWS.

Si desea automatizar sus implementaciones de cargas de trabajo en AWS, el uso de CloudFormation es una de las mejores maneras de hacerlo.

En este artículo, le mostraremos una suave introducción a CloudFormation y utilizaremos CloudFormation para automatizar sus recursos de AWS. Esta guía utiliza recursos S3 para demostrarlo. Después de este tutorial, serás capaz de crear, actualizar y eliminar una serie de recursos de AWS utilizando CloudFormation. También puede aprender cómo empezar a crear su propia plantilla de CloudFormation.

Requisitos previos

Para poder seguir este tutorial, necesita los siguientes requisitos previos:

  • AWS CLI instalado en su máquina local en la versión 1.6.1 o superior y configurado con una región por defecto. La misma versión también debe estar configurada para Python 2.6 o 3+.
  • Una comprensión básica de los servicios de AWS y algo de experiencia en la consola de AWS.

Creación de su primera pila

Ahora que tienes los prerrequisitos listos, vamos a empezar por configurar y crear tu primera pila.

1. Abra su navegador favorito. 2. Navega a este GitHub repositorio y descargue tres archivos en su disco duro local.

  • createstack.json
  • updatestack1.json
  • updatestack2.json

descargar tres archivos

2. Ahora, navega a tu Consola AWS —> CloudFormation.

navega a tu CloudFormation.

3. Verá la siguiente pantalla. Haga clic en Crear pila —> Con nuevos recursos.

creación de una pila

4. Verá la siguiente pantalla. Haga clic en La plantilla está lista —> Subir un archivo de plantilla —> Elija el archivo —-> Elija su createstack.json archivo que descargaste antes—> Siguiente.

Cuando crea una nueva pila, debe proporcionar una plantilla para su pila. Puede hacerlo de tres maneras:

  • La plantilla está lista: elija esta opción si ya tiene la plantilla a mano. Si no es así, pase a la siguiente opción.
  • Utilizar una plantilla de muestra: utilice esta opción para tener una ventaja a la hora de crear su plantilla. La guía del usuario de AWS ofrece varios ejemplos de plantillas de CloudFormation.
  • Creación de una plantilla en Designer: AWS CloudFormation Designer es la forma más novedosa de crear su pila. Utiliza una interfaz de arrastrar y soltar, similar a otras herramientas populares como Sharepoint, para ayudarle a crear su plantilla.

Esta demostración utiliza la primera opción, «La plantilla está lista», ya que usted ya tiene las plantillas a mano (los archivos que descargó en su disco).

creando una pila

Puede abrir el createstack.json en su editor para echarle un vistazo. Verá las siguientes líneas en el archivo createstack.json archivo.

  • «Recursos»: { es la sección que crea AWS CloudFormation. Es una agrupación de todos los recursos físicos que vas a crear.
  • «catpics»: es el recurso lógico, siendo su tipo un S3 Bucket.
  • «Type»: «AWS::S3::Bucket» es el recurso físico que creará AWS CloudFormation.

abra el archivo createstack.json en su editor

5. En la siguiente pantalla, proporcione un nombre para su pila (htf) y haga clic en Siguiente. Cada pila requiere un nombre único dentro de la región de AWS para poder diferenciarlas. Aquí no se pueden utilizar caracteres especiales, sólo letras, números y guiones bajos (sin espacios). AWS genera automáticamente un ID de pila único para facilitar su identificación.Anuncio

crear una pila

6. En la siguiente pantalla, mantenga los valores predeterminados y haga clic en Siguiente.

crear una pila

7. En la siguiente pantalla, mantenga los valores predeterminados y haga clic en Crear pila.

creación de una pila

En este punto, AWS CloudFormation carga la plantilla y crea la pila para usted. CloudFormation recorre todas y cada una de las secciones de la plantilla y crea un recurso físico correspondiente para ella. En algunos casos, AWS CloudFormation hará varias comprobaciones en su plantilla para asegurarse de que todo está en su sitio. Si encuentra algo incorrecto, recibirá un mensaje de error que describe cuál es el problema y cómo solucionarlo.

El proceso de creación tarda unos 4-5 minutos en crearse. Puedes ver lo que está pasando mirando el estado de la pila en tu panel de CloudFormation, como se muestra a continuación. Puedes ver el catpics recursos lógicos en la parte izquierda, y en cada uno de estos recursos, puedes ver los recursos físicos que AWS CloudFormation está creando para ellos (CREATE_IN_PROGRESS).

creación de una pila

Puedes navegar a la pestaña de recursos para ver los recursos físicos que se están creando para esta pila. En este caso, se trata de un cubo S3 llamado catpics con ID de recursos físicos de htf-catpics-1roqn54xwm3de, como se muestra a continuación.

creando una pila

8. Ahora, navega a tu panel de control de S3. En su tablero S3, puede ver los objetos que se están creando en el cubo. En este caso, el nombre de la pila para el cubo de S3 es htf-catpics-1roqn54xwm3ofcomo puede ver a continuación.

navegue a su tablero S3

Puedes ver que el nombre del cubo sigue este patrón: tu nombre de pila(htf)-su nombre de pila lógica(catpics)-una cadena aleatoria(1roqn54xwm3de). Este patrón es muy importante que lo conozcas. Cuando no especifica los ID de sus recursos físicos en la plantilla, AWS CloudFormation utiliza este patrón para crear el nombre de sus recursos. El poder de esto es que ahora puedes usar la misma plantilla para crear múltiples pilas; ¡AWS CloudFormation se encargará automáticamente de nombrarlas de forma única para ti!

Para un servicio como S3, un nombre único es muy importante; el nombre del cubo debe ser globalmente único para que usted pueda almacenar datos en él. Los nombres de sus cubos no pueden ser los mismos. No podrá introducir objetos en el cubo si intenta nombrarlo con el mismo nombre.

Es importante entender por qué esto es importante. Porque con CloudFormation, se recomienda no nombrar explícitamente el ID del recurso físico en su plantilla. En su lugar, deje que AWS CloudFormation cree uno automáticamente por usted. Esto significa que puede reutilizar su plantilla para crear varias pilas con diferentes recursos sin preocuparse por los conflictos de nombres. Puede utilizar su plantilla una vez, diez veces o cien, y CloudFormation se encargará de los cambios de nombre en consecuencia.

Actualizando su pila

Ahora que has creado tu primera pila utilizando AWS CloudFormation, vamos a examinar cómo actualizar la pila. Cómo actualizar una pila es un concepto muy importante para entender, tanto para el uso de producción o para su examen. Probablemente se te pedirá en el examen que cambies algo en tu plantilla, o quizás necesites actualizar algo en tu pila.

En esta sección, vas a hacer algunos cambios en la plantilla, y usarás esas plantillas actualizadas para actualizar tu pila y evaluar qué cambios se hacen en tus recursos.

Generalmente, cuando se actualizan las pilas en CloudFormation. Usted tomará la plantilla que utilizó para crear una pila y añadirá nuevos recursos, actualizará los recursos existentes o eliminará los recursos existentes.

1. Abra el archivo updatestack1.json que descargó anteriormente en su editor, verá los siguientes bloques de código. Vamos a comparar esta plantilla con la plantilla createstack.json que usaste antes. Puedes ver que añadiremos un recurso lógico adicional llamado dogpics. Y lo que es más importante, no se han realizado cambios en ningún recurso lógico existente, que es el catpics. Los recursos catpics no han sido modificados ni eliminados. Sólo añadiré un recurso lógico adicional, que es dogpics.

Abra el archivo updatestack1.json

2. Navegue a su tablero de CloudFormation. Seleccione su pila(htf) y haga clic en Actualizar.

Actualización de la pila

3. En la siguiente pantalla, seleccione Sustituir la plantilla actual —> Subir un archivo de plantilla —> Seleccione el archivo —> Seleccione su archivo updatestack1.json —> Siguiente.

Actualización de la pila

4. En la siguiente pantalla, haga clic en Siguiente —> Siguiente —> Actualización pila, como se muestra a continuación. Puedes ver que CloudFormation te muestra los cambios que se harán. En este caso, hemos añadido un ID lógico llamado dogpics. CloudFormation también nos muestra la acción que se realizará(Añadir), y el Tipo de recurso lógico (AWS::S3::Bucket). El Sustitución La columna está en blanco.

Actualización de la pila

Al igual que cuando se crea una pila, se pueden ver los eventos de actualización desde la página de la pila. Todas las actualizaciones se están haciendo desde CloudFormation. En este caso, se le pasa un ID de recurso lógico adicional, que es dogpics.

Actualización de la pila

Una vez completado el proceso de actualización, se puede ver a continuación que tenemos tanto el catpics y el dogpics recursos en nuestra pila.

Actualización de la pila

Navega a tu tablero de S3, y puedes ver que un cubo adicional de dogpics llamado htf-dogpics-4qesklu84ugq fue creado. Se puede ver que el nombramiento del cubo usando el mismo patrón sigue el nombre de la pila-nombre lógico de la pila-cadena aleatoria.

Actualizando su pila

En este punto, sólo agregamos nuevos recursos lógicos a nuestros recursos, lo cual es bastante simple y de bajo riesgo. Ahora le mostraremos cómo eliminar recursos de su pila.

Eliminaremos el recurso dogpics de nuestra pila. Esto es más arriesgado que añadir porque eliminar recursos podría romper tu pila. Como todavía estamos aprendiendo, vamos a practicar esto borrando nuestro recurso dogpics para ver qué pasa

5. Navegue a su tablero de CloudFormation. Seleccione su htf pila, haga clic en Actualizar —> Sustituir la plantilla actual —> Elija archivo —> esta vez seleccionaremos de nuevo el archivo createstack.json —> Siguiente —> Siguiente —> Siguiente.

Actualización de la pila

6. En la siguiente pantalla, haga clic en Actualizar pila. Bajo la Vista previa del conjunto de cambios, puede ver el Acción columna ahora es: Eliminar. En este caso, CloudFormation elimina el dogpics y los recursos físicos correspondientes(htf-dogpics-4qesklu84ugq).

Actualización de la pila

Navegue a su tablero S3, puede ver que el cubo dogpics ahora ha desaparecido de su tablero S3.

Actualizando su pila

Usted podrá el DELETE_COMPLETE en su evento Stack.

Actualización de su pila

Eliminar recursos lógicos es un poco arriesgado porque puede borrar cosas, pero ese riesgo sólo está asociado a los recursos lógicos que has eliminado de la plantilla (los recursos dogpics). Hasta ahora, no hemos hecho ningún cambio en ninguno de los otros recursos lógicos existentes, como los recursos catpics. Así que los recursos físicos catpics no pueden ser afectados por ninguna actualización de la pila. Existe otra opción para actualizar la pila. Utilizando esta opción, podríamos cambiar la configuración de un recurso lógico existente.

7. Abra el archivo updatestack2.json que descargó anteriormente en su editor, verá el siguiente bloque de código.

El archivo updatestack2.json es muy similar a la plantilla createstack.json que usaste antes, excepto por dos diferencias importantes. Volvemos a añadir el segundo recurso lógico, dogpics. Pero también hemos hecho un cambio en catpics.

Hemos añadido una sección adicional de la configuración, que se llama Propiedades, donde podemos definir propiedades adicionales para un determinado recurso lógico. En este caso, vamos a crear un bucket de S3. Establecemos explícitamente el nombre del bucket del recurso físico como catsareawesomehowtoforge.

Actualización de la pila

8. Acceda a su panel de control de CloudFormation. Seleccione su htf pila, haga clic en Actualizar —> Sustituir la plantilla actual —> Elija archivo —> esta vez seleccionaremos el archivo updatestack2.json —> Siguiente —> Siguiente —> Siguiente.

Actualización de la pila

9. En la siguiente pantalla, haga clic en Actualizar pila. Obsérvese el Vista previa del conjunto de cambios puede ver el efecto de esta actualización.

El primer cambio parece familiar. Vamos a añadir un recurso lógico adicional para dogpics, que será un cubo S3. Pero también vemos un Modificar acción. Y modificar es en realidad la cosa más arriesgada que podrías hacer a una pila de CloudFormation.

La razón es que los recursos existentes, que están en su lugar y potencialmente en uso por otros entornos, podrían ser cambiados por la actualización de la pila. Así que la modificación de los recursos lógicos existentes son potencialmente más arriesgados de usar.

Hay 3 posibilidades de que un recurso físico se vea afectado cuando se actualiza una pila de esta manera. La primera posibilidad es que un recurso se actualice sin ninguna interrupción del servicio.

La segunda posibilidad es que el recurso se actualice y el servicio se interrumpa por algún nivel de interrupción. Por ejemplo, cuando usted actualiza su pila para cambiar el tamaño de su instancia EC2. Cuando haga esto, tendrá que reiniciar su instancia EC2 manualmente. Se lanzará una nueva AMI y es posible que experimente algún tiempo de inactividad. Pero una vez lanzada la nueva AMI, su servicio estará disponible inmediatamente.

La última posibilidad es que la actualización borre todo su recurso físico existente y lo sustituya por uno nuevo(Sustitución). Esta es la posibilidad más arriesgada al actualizar su pila de CloudFormation. Debe prestar mucha atención cuando haga esto. Cuando este tipo de reemplazo sucede, usted el Reemplazo La columna es Verdadero, como se muestra en la siguiente captura de pantalla.

Actualizando su pila

En su tablero de CloudFormation Stacks, puede ver que dice «La actualización solicitada requiere la creación de un nuevo recurso físico; por lo tanto, se está creando uno». Así que CloudFormation elimina el recurso existente y crea uno nuevo.

Actualizando su pila

Navegue a su tablero S3, verá que el cubo de catpics ya no está, y uno nuevo, catsareawesomehowtoforgeha sido creado. Tenga en cuenta que proporcionamos explícitamente el nombre físico (catsareawesome-howtoforge) para un recurso dentro de una plantilla de CloudFormation, no aplica ningún carácter aleatorio al nombre del recurso.

Actualizando su pila

El problema con esto es que si usamos esta plantilla para crear otra pila de CloudFormation, fallaría porque intentaría crear otro bucket con exactamente el mismo nombre. Y no se puede tener 2 buckets con el mismo nombre en ninguna cuenta de AWS. Obtendrás el siguiente error cuando intentes crear otro bucket con exactamente el mismo nombre.

Eliminación de sus pilas de CloudFormation

Ahora que hemos cambiado la plantilla y actualizado nuestra pila, debemos asegurarnos de eliminar la pila una vez que hayamos terminado de trabajar en ella. Si no eliminamos la pila que no usamos, permanecerá en nuestro panel de pila de CloudFormation indefinidamente. Tendríamos que entrar manualmente y eliminarla.

Desde su tablero de CloudFormation, seleccione su pila, luego seleccione Borrar. Cuando CloudFormation elimina la pila, también elimina todos los recursos dentro de esa pila. No hay manera de eliminar sólo un recurso, como el cubo de S3 o la instancia de EC2. Esta acción se realiza por diseño.

Eliminación de sus pilas de CloudFormation

Conclusión

En esta guía, hemos visto cómo se crean y cambian las pilas de CloudFormation. Hemos visto algunas de las formas de cambiar las plantillas y cómo actualizar las pilas existentes. Luego vimos algunas de las posibilidades que están asociadas con la actualización de las pilas. Y por último, vimos cómo eliminar las pilas de CloudFormation después de haber terminado de trabajar en ellas.

Por favor, deja un comentario abajo si tienes alguna pregunta o sugerencia. ¡Gracias por leer!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *