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 *