Tutorial: Crear una canalización con acciones AWS CloudFormation StackSets de despliegue - AWS CodePipeline

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Tutorial: Crear una canalización con acciones AWS CloudFormation StackSets de despliegue

En este tutorial, utilizará la AWS CodePipeline consola para crear una canalización con acciones de despliegue para crear un conjunto de pilas y crear instancias de pila. Cuando se ejecuta la canalización, la plantilla crea un conjunto de pilas y también crea y actualiza las instancias en las que se implementa el conjunto de pilas.

Hay dos formas de gestionar los permisos de un conjunto apilado: las funciones de IAM autogestionadas y las AWS gestionadas. En este tutorial, se proporcionan ejemplos con permisos autoadministrados.

Para utilizar Stacksets de la forma más eficaz posible CodePipeline, debes tener una idea clara de los conceptos subyacentes AWS CloudFormation StackSets y de cómo funcionan. Consulta StackSets los conceptos en la Guía del AWS CloudFormation usuario.

Requisitos previos

Para las operaciones de conjuntos apilados, se utilizan dos cuentas diferentes: una cuenta de administración y una cuenta de destino. Los conjuntos de pilas se crean en la cuenta de administrador. Se crean pilas individuales que pertenecen a un conjunto de pilas de la cuenta de destino.

Para crear un rol de administrador con su cuenta de administrador
Para crear el rol de servicio en la cuenta de destino

Paso 1: Cargar la plantilla de AWS CloudFormation de muestra y el archivo de parámetros

Cree un bucket de origen para los archivos de parámetros y plantillas del conjunto de pilas. Descargue el archivo de AWS CloudFormation plantilla de ejemplo, configure un archivo de parámetros y, a continuación, comprima los archivos antes de cargarlos en su depósito de código fuente de S3.

nota

Asegúrese de comprimir los archivos de origen antes de subirlos a su bucket de origen de S3, incluso si el único archivo fuente es la plantilla.

Para crear un bucket de origen de S3
  1. Inicie sesión en la consola de Amazon S3 AWS Management Console y ábrala en https://console.aws.amazon.com/s3/.

  2. Elija Crear bucket.

  3. En Nombre del bucket, escriba un nombre para el bucket.

    En Región la región en la que desea crear la canalización. Elija Crear bucket.

  4. Una vez creado el bucket, aparecerá un banner donde se indicará que la operación se ha realizado correctamente. Elija Go to bucket details (Acceder a los detalles del bucket).

  5. En la pestaña Properties (Propiedades), elija Versioning (Control de versiones). Elija Enable versioning (Habilitar control de versiones) y haga clic en Save (Guardar).

Para crear el archivo AWS CloudFormation de plantilla
  1. Descargue el siguiente archivo de plantilla de ejemplo para generar la CloudTrail configuración de los conjuntos de pilas:https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSCloudtrail.yml.

  2. Guarde el archivo como template.yml.

Para crear el archivo parameters.txt
  1. Cree un archivo con los parámetros para la implementación. Los parámetros son valores que desea actualizar en su pila en tiempo de ejecución. El siguiente archivo de ejemplo actualiza los parámetros de la plantilla del conjunto de pilas para permitir la validación del registro y los eventos globales.

    [ { "ParameterKey": "EnableLogFileValidation", "ParameterValue": "true" }, { "ParameterKey": "IncludeGlobalEvents", "ParameterValue": "true" } ]
  2. Guarde el archivo como parameters.txt.

Para crear el archivo accounts.txt
  1. Cree un archivo con las cuentas en las que desee crear las instancias, como se muestra en el siguiente archivo de ejemplo.

    [ "111111222222","333333444444" ]
  2. Guarde el archivo como accounts.txt.

Para crear y cargar los archivos de origen
  1. Combine los archivos .zip en un solo archivo ZIP. Sus archivos deberían aparecer así en el archivo ZIP.

    template.yml parameters.txt accounts.txt
  2. Cargue el archivo ZIP en el bucket de S3. Este archivo es el artefacto de origen creado por el asistente Create Pipeline para su acción de implementación en CodePipeline.

Paso 2: Crear la canalización

En esta sección, debe crear una canalización con las siguientes acciones:

  • Una fase de origen con una acción de origen de S3 en la que el artefacto de origen es el archivo de plantilla y cualquier archivo de origen de respaldo.

  • Una etapa de despliegue con una acción de despliegue del conjunto de AWS CloudFormation pilas que crea el conjunto de pilas.

  • Una etapa de despliegue con una acción de despliegue de instancias AWS CloudFormation apiladas que crea las pilas e instancias dentro de las cuentas de destino.

Para crear una canalización con una acción CloudFormationStackSet
  1. Inicia sesión en la CodePipeline consola AWS Management Console y ábrela en http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. En la página Bienvenido, Introducción o en la página Canalizaciones, elija Crear canalización.

  3. En Step 1: Choose pipeline settings (Paso 1: Elegir configuración de canalización), en Pipeline name (Nombre de canalización), escriba MyStackSetsPipeline.

  4. En Tipo de canalización, elija V1 para los fines de este tutorial. También puede elegir V2; sin embargo, tenga en cuenta que los tipos de canalización difieren en cuanto a características y precio. Para obtener más información, consulte Tipos de canalización.

  5. En Función de servicio, elija Nueva función de servicio CodePipeline para poder crear una función de servicio en IAM.

  6. En Almacén de artefactos, deje los valores predeterminados.

    nota

    Este no es el bucket de origen para su código fuente. Este es el almacén de artefactos de la canalización. Cada canalización debe tener su propio almacén de artefactos independiente, como un bucket de S3. Al crear o editar una canalización, debes tener una cubeta de artefactos en la región de la canalización y una cubeta de artefactos por cada AWS región en la que ejecutes una acción.

    Para obtener más información, consulte Artefactos de entrada y salida y CodePipeline referencia de estructura de tubería.

    Elija Siguiente.

  7. En la página Step 2: Add source stage (Paso 2: Añadir etapa de código fuente), en Source provider (Proveedor de código fuente), elija Amazon S3.

  8. En Bucket, introduzca el bucket de origen de S3 creado para este tutorial, por ejemplo BucketName. En S3 object key (Clave de objeto de S3), escriba la ruta del archivo y el nombre de archivo de su archivo ZIP, como MyFiles.zip.

  9. Elija Siguiente.

  10. En Step 3: Add build stage (Paso 3: Añadir etapa de compilación), elija Skip build stage (Omitir etapa de compilación) y, a continuación, acepte el mensaje de advertencia eligiendo Skip (Omitir) una vez más.

    Elija Siguiente.

  11. En Step 4: Add deploy stage (Paso 4: Añadir una etapa de implementación):

    1. En Proveedor de implementación, elija Conjunto de pilas de AWS CloudFormation ).

    2. En Nombre de conjunto de pilas, escriba un nombre para el conjunto de pilas. Este es el nombre del conjunto de pilas que crea la plantilla.

      nota

      Anote el nombre del conjunto de pilas. Lo usarás cuando añadas la segunda acción de StackSets despliegue a tu canalización.

    3. En Ruta de plantilla, introduzca el nombre del artefacto y la ruta del archivo donde subió el archivo de plantilla. Por ejemplo, introduzca lo siguiente utilizando el el nombre del artefacto de origen por defecto SourceArtifact.

      SourceArtifact::template.yml
    4. En Destinos de implementación, introduzca el nombre del artefacto y la ruta del archivo donde subió el archivo de cuentas. Por ejemplo, introduzca lo siguiente utilizando el el nombre del artefacto de origen por defecto SourceArtifact.

      SourceArtifact::accounts.txt
    5. En Destino de despliegue Regiones de AWS, introduce una región para el despliegue de tu instancia de pila inicial, por ejemplous-east-1.

    6. Expanda Opciones de implementación. En Parámetros, introduzca el nombre del artefacto y la ruta del archivo donde cargó el archivo de parámetros. Por ejemplo, introduzca lo siguiente utilizando el el nombre del artefacto de origen por defecto SourceArtifact.

      SourceArtifact::parameters.txt

      Para introducir los parámetros como una entrada literal en lugar de como una ruta de archivo, introduzca lo siguiente:

      ParameterKey=EnableLogFileValidation,ParameterValue=true ParameterKey=IncludeGlobalEvents,ParameterValue=true
    7. En Capacidades, elija CAPABILITY_IAM y CAPABILITY_NAMED_IAM.

    8. En Modelo de permiso, elija SELF_MANAGED.

    9. En Porcentaje de tolerancia a errores, introduzca 20.

    10. En Porcentaje máximo simultáneo, introduzca 25.

    11. Elija Siguiente.

    12. Seleccione Create pipeline. Aparece su canalización.

    13. Permita que su canalización se ejecute.

Paso 3: Ver la implementación inicial

Vea los recursos y el estado de su implementación inicial. Tras comprobar que la implementación ha creado correctamente el conjunto de pilas, puede añadir la segunda acción a la fase Deploy /Implementación).

Para ver los recursos
  1. Abre la CodePipeline consola en https://console.aws.amazon.com/codepipeline/.

  2. En Canalizaciones, elija la canalización y luego Ver. El diagrama muestra las etapas de código fuente e implementación de la canalización.

  3. Elige la AWS CloudFormation acción de la CloudFormationStackSetacción de tu proceso. La plantilla, los recursos y los eventos de tu conjunto de pilas se muestran en la AWS CloudFormation consola.

  4. En el panel de navegación izquierdo, selecciona StackSets. En la lista, elija el nuevo conjunto de pilas.

  5. Elija la pestaña Instancias de la pila. Verifique que se haya creado una instancia de pila para cada cuenta que haya proporcionado en la región us-east-1. Compruebe que el estado de cada instancia de pila sea CURRENT.

Paso 4: Añadir una CloudFormationStackInstances acción

Crea una siguiente acción en tu proceso que permita AWS CloudFormation StackSets crear las instancias de la pila restantes.

Para crear una acción siguiente en su canalización
  1. Abre la CodePipeline consola en https://console.aws.amazon.com/codepipeline/.

    En Canalizaciones, elija la canalización y luego Ver. El diagrama muestra las etapas de código fuente e implementación de la canalización.

  2. Elija esta opción para editar la canalización. La canalización se muestra en modo de edición.

  3. En la etapa Implementar, elija Editar.

  4. En la acción de implementación de Conjunto de pilas de AWS CloudFormation CloudFormation, seleccione Añadir grupo de acciones.

  5. En la página Editar acción, añada los detalles de la acción:

    1. En Nombre de la acción, escriba un nombre para la acción.

    2. En Proveedor de acciones, elija Instancias de pila de AWS CloudFormation ).

    3. En Artefactos de entrada, elija SourceArtifact.

    4. En Nombre de conjunto de pilas, introduzca el nombre para el conjunto de pilas. Este es el nombre del conjunto de pilas proporcionado en la primera acción.

    5. En Destinos de implementación, introduzca el nombre del artefacto y la ruta del archivo donde subió el archivo de cuentas. Por ejemplo, introduzca lo siguiente utilizando el el nombre del artefacto de origen por defecto SourceArtifact.

      SourceArtifact::accounts.txt
    6. En Destino de despliegue Regiones de AWS, introduce las regiones en las que se desplegarán las instancias de pila restantes, eu-central-1 como us-east-2 las siguientes:

      us-east2, eu-central-1
    7. En Porcentaje de tolerancia a errores, introduzca 20.

    8. En Porcentaje máximo simultáneo, introduzca 25.

    9. Seleccione Guardar.

    10. Publica un cambio manualmente. La canalización actualizada se muestra con dos acciones en la etapa de implementación.

Paso 5: Ver los recursos del conjunto de pilas para su implementación

Puede ver los recursos y el estado de su implementación del conjunto de pilas.

Para ver los recursos
  1. Abra la CodePipeline consola en https://console.aws.amazon.com/codepipeline/.

  2. En Canalizaciones, elija la canalización y luego Ver. El diagrama muestra las etapas de código fuente e implementación de la canalización.

  3. Elige la AWS CloudFormation acción de la AWS CloudFormation Stack Instancesacción de tu proceso. La plantilla, los recursos y los eventos de tu conjunto de pilas se muestran en la AWS CloudFormation consola.

  4. En el panel de navegación izquierdo, selecciona StackSets. En la lista, elija el conjunto de pilas.

  5. Elija la pestaña Instancias de la pila. Compruebe que todas las instancias de pila restantes de cada cuenta que haya proporcionado se hayan creado o actualizado en las regiones esperadas. Compruebe que el estado de cada instancia de pila sea CURRENT.

Paso 6: Actualizar el conjunto de pilas

Actualice su conjunto de pilas e impleméntela en las instancias. En este ejemplo, también cambia los objetivos de implementación que desea designar para la actualización. Las instancias que no forman parte de la actualización pasan a un estado desactualizado.

  1. Abre la CodePipeline consola en https://console.aws.amazon.com/codepipeline/.

  2. En Canalizaciones, elija la canalización y luego Editar. En la etapa Implementar, elija Editar.

  3. Elija editar la acción Conjunto de pila de AWS CloudFormation ) en su canalización. En Descripción, sobrescriba la descripción existente por una nueva descripción para el conjunto de pilas.

  4. Elija editar la acción Instancias de pila de AWS CloudFormation ) en su canalización. En Deployment target Regiones de AWS, elimina el us-east-2 valor que se introdujo al crear la acción.

  5. Guarde los cambios. Elija Publicar modificación para ejecutar su canalización.

  6. Abra su acción en AWS CloudFormation. Selecciona la pestaña de StackSet información. En la StackSet descripción, compruebe que se muestra la nueva descripción.

  7. Elija la pestaña Instancias de la pila. En Estado, verifique que el estado de las instancias de la pila en us-east-2 sea OUTDATED.