GNU/Linux >> Tutoriales Linux >  >> Linux

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

AWS CloudFormation es un servicio que permite a los administradores de sistemas configurar y administrar una colección completa de recursos de AWS, incluidas 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 implementar las aplicaciones que se ejecutan sobre ella.

AWS Cloudformation le permite configurar su infraestructura como código. Básicamente es una infraestructura como un motor de 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 recursos de AWS. Podemos usar AWS CLI, AWS SDK como boto3 o el servicio AWS CloudFormation para crear plantillas.

CloudFormation proporciona muchas ventajas como:

  • Fácil de usar:CloudFormation utiliza un formato de plantilla que le permite describir todos los atributos y relaciones de sus recursos de AWS en un solo lugar.
  • Agilidad de comercialización:CloudFormation le permite crear e implementar sus recursos de AWS como código.
  • Alto nivel de automatización:CloudFormation transforma código de alto nivel en un conjunto de plantillas simples que se pueden usar para crear o actualizar recursos de AWS.

Si está buscando automatizar sus implementaciones de cargas de trabajo en AWS, usar CloudFormation es una de las mejores formas de hacerlo.

En este artículo, le mostraremos una breve introducción a CloudFormation y utilizaremos CloudFormation para automatizar sus recursos de AWS. Esta guía utiliza recursos de S3 para demostrarlo. Después de este tutorial, podrá crear, actualizar y eliminar varios recursos de AWS mediante CloudFormation. También puede obtener información sobre cómo comenzar a crear su propia plantilla de CloudFormation.

Requisitos

Para 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 predeterminada. La misma versión también debe configurarse 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.

Creando tu primera pila

Ahora que tiene listos los requisitos previos, comencemos configurando y creando su primera pila.

1. Abra su navegador favorito. Vaya a este repositorio de GitHub y descargue tres archivos en su unidad de disco duro local.

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

2. Ahora, navegue a su Consola de AWS ---> Formación de nubes .

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

4. Verá la siguiente pantalla. Haga clic en La plantilla está lista ---> Subir un archivo de plantilla ---> Elegir archivo ----> Elija su createstack.json archivo que descargó anteriormente---> 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 su plantilla en la mano. Si no, vaya a la siguiente opción.
  • Usar una plantilla de muestra :use esta opción para comenzar a crear su plantilla. La guía del usuario de AWS proporciona varios ejemplos de plantillas de CloudFormation.
  • Ccrear una plantilla en Designer :AWS CloudFormation Designer es la forma más nueva de crear su pila. Utiliza una interfaz de arrastrar y soltar, similar a otras herramientas populares como Sharepoint, para ayudarlo a crear su plantilla.

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

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

  • "Recursos":{ es la sección que crea AWS CloudFormation. Es una agrupación de todos los recursos físicos que 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.

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 que pueda diferenciarlas. No puede usar ningún carácter especial aquí, solo letras, números y guiones bajos (sin espacios). AWS genera automáticamente un ID de pila único para facilitar la identificación.

6. En la siguiente pantalla, mantén el valor predeterminado y haz clic en Siguiente.

7. En la siguiente pantalla, mantén el valor predeterminado y haz clic en Crear pila .

En este punto, AWS CloudFormation carga la plantilla y crea la pila por usted. CloudFormation revisa todas y cada una de las secciones de la plantilla y crea un recurso físico correspondiente para ella. En algunos casos, AWS CloudFormation realizará varias comprobaciones en su plantilla para asegurarse de que todo esté en su lugar. 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 toma alrededor de 4-5 minutos para crearlo. Puede ver lo que sucede mirando el estado de la pila en su tablero de CloudFormation, como se muestra a continuación. Puedes ver las catpics recursos lógicos en el lado izquierdo, y en cada uno de estos recursos, puede ver los recursos físicos que AWS CloudFormation está creando para ellos (CREATE_IN_PROGRESS ).

Puede navegar a la pestaña de recursos para ver los recursos físicos que se crean para esta pila. En este caso, es un S3 Bucket llamado catpics con ID de recursos físicos  de htf-catpics-1roqn54xwm3of, como se muestra a continuación.

8. Ahora, navegue a su panel de S3. En su tablero S3, puede ver los objetos que se crean en el depósito. En este caso, el nombre de la pila para el depósito de S3 es htf-catpics-1roqn54xwm3of. , como puede ver a continuación.

Puede ver que el nombre del depósito sigue este patrón:su nombre de pila (htf )-su nombre de pila lógica (catpics )-una cadena aleatoria (1roqn54xwm3of ). Este patrón es muy importante que lo sepas. 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 puede usar la misma plantilla para crear varias pilas; ¡AWS CloudFormation se encargará automáticamente de nombrarlos de forma exclusiva para usted!

Para un servicio como S3, un nombre único es muy importante; el nombre del depósito debe ser globalmente único para que pueda almacenar datos en él. Los nombres de sus cubos no pueden ser iguales. No podrá empujar objetos al 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 la ID del recurso físico en su plantilla. En su lugar, deje que AWS CloudFormation cree uno automáticamente para usted. Esto significa que puede reutilizar su plantilla para crear varias pilas con diferentes recursos sin preocuparse por los conflictos de nombres. Puede usar su plantilla una vez, diez veces o cien, y CloudFormation manejará los cambios de nombre en consecuencia.

Actualización de su pila

Ahora que ha creado su primera pila con AWS CloudFormation, examinemos cómo actualizar la pila. Cómo actualizar una pila es un concepto muy importante de comprender, tanto para el uso de producción como para su examen. Probablemente se le pedirá en el examen que cambie algo en su plantilla, o tal vez necesite actualizar algo en su pila.

En esta sección, realizará algunos cambios en la plantilla y utilizará esas plantillas actualizadas para actualizar su pila y evaluar qué cambios se realizan en sus recursos.

Generalmente, al actualizar pilas en CloudFormation. Tomará la plantilla que usó para crear una pila y agregará nuevos recursos, actualizará los recursos existentes o eliminará los recursos existentes.

1. Abra updatestack1.json archivo que descargó anteriormente en su editor, verá los siguientes bloques de código. Comparemos esta plantilla con createstack.json plantilla que usó anteriormente. Puede ver que agregaremos un recurso lógico adicional llamado dogpics . Más importante aún, no se han realizado cambios en ningún recurso lógico existente, que son los catpics existentes. . Los recursos de catpics no se han cambiado ni eliminado. Solo agregaré un recurso lógico adicional, que es dogpics .

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

3. En la siguiente pantalla, seleccione Reemplazar plantilla actual ---> Subir un archivo de plantilla ---> Elija Archivo ---> Seleccione su updatestack1.json archivo ---> Siguiente .

4. En la siguiente pantalla, haga clic en Siguiente ---> Siguiente ---> Actualizar apilar, Como se muestra abajo. Puede ver que CloudFormation le muestra los cambios que se realizarán. En este caso, agregamos una identificación lógica llamada dogpics. CloudFormation también nos muestra la acción que se realizará (Agregar ) y el tipo de recurso lógico (AWS::S3::Bucket). El Reemplazo la columna está en blanco.

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

Una vez que se completa el proceso de actualización, puede ver a continuación que tenemos ambos catpics y los perros recursos en nuestra pila.

Navegue a su panel de S3 y podrá ver que hay un depósito adicional de dogpics llamado htf-dogpics-4qesklu84ugq fue creado. Puede ver que el nombre del depósito que usa el mismo patrón sigue el nombre de la pila-nombre de la pila lógica-cadena aleatoria.

En este punto, solo 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 agregar porque eliminar recursos podría romper su pila. Ya que todavía estamos aprendiendo, practiquemos esto eliminando nuestro recurso dogpics para ver qué sucede

5. Navegue a su panel de control de CloudFormation. Seleccione su htf pila, haga clic en Actualizar ---> Reemplazar plantilla actual ---> Elegir archivo ---> esta vez seleccionaremos el creatack.json archivo de nuevo ---> Siguiente ---> Siguiente ---> Siguiente.

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

Navegue a su tablero de S3, puede ver que el depósito de dogpics ya no está en su tablero de S3.

Harás el DELETE_COMPLETE evento en su evento Stack.

Eliminar recursos lógicos es un poco arriesgado porque puede eliminar cosas, pero ese riesgo solo está asociado con los recursos lógicos que eliminó de la plantilla (los recursos dogpics). Hasta ahora, no hemos realizado ningún cambio en ninguno de los otros recursos lógicos existentes, como los recursos catpics. Por lo tanto, los recursos físicos de catpics no pueden verse afectados por ninguna actualización de la pila. Hay otra opción para actualizar su pila. Usando esta opción, podríamos cambiar la configuración de un recurso lógico existente.

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

El archivo updatestack2.json se parece mucho a la plantilla createstack.json que usó anteriormente, excepto por dos diferencias principales. Volvemos a añadir el segundo recurso lógico, dogpics. Pero también hemos hecho un cambio en las imágenes de gato.

Agregamos una sección adicional de la configuración, que se llama Propiedades, donde podemos definir propiedades adicionales para un recurso lógico determinado. En este caso, crearemos un depósito S3. Establecemos explícitamente el nombre del depósito del recurso físico como catsareawesome -cómoforjar .

8. Navegue a su tablero de CloudFormation. Selecciona tu htf pila, haga clic en Actualizar ---> Reemplazar plantilla actual ---> Seleccionar archivo ---> esta vez seleccionaremos el  updatestack2.json archivo ---> Siguiente ---> Siguiente ---> Siguiente.

9. En la siguiente pantalla, haz clic en Actualizar pila . Observe la Vista previa del conjunto de cambios panel, puede cuál será el efecto de esta actualización.

El primer cambio parece familiar. Vamos a agregar un recurso lógico adicional para dogpics , que será un depósito S3. Pero también vemos un Modificar acción. Y modificar es en realidad lo más arriesgado que podría hacerle a una pila de CloudFormation.

La razón de esto es que los recursos existentes, que están en su lugar y potencialmente en uso por otros entornos, podrían cambiarse con la actualización de la pila. Por lo tanto, modificar los recursos lógicos existentes es potencialmente más riesgoso de usar.

Hay 3 posibilidades de que un recurso físico se vea afectado cuando 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 actualiza su pila para cambiar el tamaño de su instancia EC2. Cuando haga esto, deberá reiniciar su instancia EC2 manualmente. Se lanzará una nueva AMI y es posible que experimente algún tiempo de inactividad. Pero una vez que se lance la nueva AMI, su servicio estará disponible de inmediato.

La última posibilidad es que la actualización elimine todo el recurso físico existente y lo reemplace por uno nuevo (Reemplazo ). Esta es la posibilidad más arriesgada al actualizar su pila de CloudFormation. Realmente deberías prestar atención cuando hagas esto. Cuando ocurra este tipo de reemplazo, será el Reemplazo la columna es Verdadero , como se muestra en la siguiente captura de pantalla.

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 crea uno". Entonces CloudFormation elimina el recurso existente y crea uno nuevo.

Navegue a su panel de S3, verá que el depósito de imágenes de gatos ya no está, y uno nuevo, catsareawesome -cómoforjar , Ha 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 caracteres aleatorios al nombre del recurso.

El problema con eso es que si usamos esta plantilla para crear otra pila de CloudFormation, fallaría porque intentaría crear otro depósito con exactamente el mismo nombre. Y no puede tener 2 cubos con el mismo nombre en ninguna cuenta de AWS. Recibirá el siguiente error cuando intente crear otro depósito con exactamente el mismo nombre.

Eliminación de sus pilas de CloudFormation

Ahora que cambiamos la plantilla y actualizamos nuestra pila, debemos asegurarnos de eliminar la pila una vez que hayamos terminado de trabajar en ella. Si no eliminamos las pilas no utilizadas, permanecerán en nuestro panel de CloudFormation Stack indefinidamente. Tendríamos que entrar manualmente allí y eliminarlo.

Desde su panel de CloudFormation, seleccione su pila, luego seleccione Eliminar . Cuando CloudFormation elimina la pila, también elimina todos los recursos dentro de esa pila. No hay forma de eliminar solo un recurso, como el depósito S3 o la instancia EC2. Esta acción se realiza por diseño.

Conclusión

En esta guía, analizamos cómo se crean y modifican las pilas de CloudFormation. Analizamos algunas de las formas de cambiar las plantillas y cómo actualizar las pilas existentes. Luego analizamos algunas de las posibilidades asociadas con la actualización de pilas. Y, por último, analizamos cómo eliminar las pilas de CloudFormation una vez que haya terminado de trabajar en ellas.

Por favor, deje un comentario a continuación si tiene alguna pregunta o sugerencia. ¡Gracias por leer!


Linux
  1. Cómo navegar por su escritorio GNOME Linux con solo un teclado

  2. Cómo ampliar la funcionalidad de su escritorio Linux con PlexyDesk

  3. Cómo comparar su sistema (CPU, File IO, MySQL) con Sysbench

  4. Cómo integrar Jenkins con CloudFormation y Step Functions

  5. Cómo proteger su servidor Ubuntu con CSF Firewall

Cómo implementar el clúster de Kubernetes en AWS con Amazon EKS

Cómo automatizar tareas con trabajos cron en Linux

Cómo monitorear sus servidores Linux con Checkmk

Cómo:asegurar su servidor Ubuntu o Debian con IPTables

Cómo bloquear su servidor CentOS con IPTables

Cómo asignar IP estática a su dominio (con el ejemplo de GoDaddy)