Centralización de la distribución de paquetes de software en AWS Organizations mediante Terraform - Recomendaciones de AWS

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.

Centralización de la distribución de paquetes de software en AWS Organizations mediante Terraform

Pradip kumar Pandey, Chintamani Aphale, T.V.R.L.Phani Kumar Dadi, Pratap Kumar Nanda, Aarti Rajput y Mayuri Shinde, Amazon Web Services

Resumen

Las empresas suelen mantener varias Cuentas de AWS distribuidas Regiones de AWS en varias para crear una sólida barrera de aislamiento entre las cargas de trabajo. Para garantizar la seguridad y la conformidad, sus equipos de administración instalan herramientas basadas en agentes CrowdStrike, como, o TrendMicroherramientas para el análisis de seguridad SentinelOne, y el agente de Amazon, el CloudWatch agente de Datadog o AppDynamics los agentes para la supervisión. Estos equipos suelen enfrentarse a desafíos cuando quieren automatizar de forma centralizada la administración y distribución de paquetes de software en este entorno tan amplio.

Distributor, una capacidad de AWS Systems Manager, automatiza el proceso de empaquetado y publicación de software en instancias administradas de Microsoft Windows y Linux en la nube y en los servidores en las instalaciones a través de una única interfaz simplificada. Este patrón demuestra cómo puede utilizar Terraform para simplificar aún más el proceso de administración de la instalación del software y ejecutar scripts en un gran número de instancias y cuentas de miembros con un mínimo esfuerzo. AWS Organizations

Esta solución funciona para instancias de Amazon, Linux y Windows administradas por Systems Manager.

Requisitos previos y limitaciones

Arquitectura

Detalles del recurso

Este patrón usa Account Factory for Terraform (AFT) para crear todos los AWS recursos necesarios y la canalización de código para implementar los recursos en una cuenta de implementación. La canalización de código se ejecuta en dos repositorios:

  • La personalización global contiene el código de Terraform que se aplicará a todas las cuentas registradas en AFT.

  • Las personalizaciones de la cuenta contienen el código de Terraform que se ejecutará en la cuenta de implementación.

También puede implementar esta solución sin usar AFT; para ello, ejecute los comandos de Terraform en la carpeta de personalizaciones de la cuenta.

El código de Terraform implementa los siguientes recursos:

  • AWS Identity and Access Management Función y políticas (IAM)

  • Archivos comprimidos y manifest.json para el paquete

    • En Systems Manager, un paquete incluye al menos un archivo .zip de software o activos instalables.

    • El manifiesto de JSON incluye indicadores a los archivos de código del paquete.

  • Bucket de S3

    • Los paquetes distribuidos que se comparten entre la organización se almacenan de forma segura en un bucket de Amazon S3.

  • AWS Systems Manager documentos (documentos SSM)

    • DistributeSoftwarePackage contiene la lógica para distribuir el paquete de software a todas las instancias de destino de las cuentas de miembros.

    • AddSoftwarePackageToDistributorcontiene la lógica para empaquetar los activos de software instalables y añadirlos a la automatización, una capacidad de. AWS Systems Manager

  • Asociación de de Systems Manager

    • Se utiliza una asociación de Systems Manager para implementar la solución.

Arquitectura y flujo de trabajo

Diagrama de arquitectura para centralizar la distribución de paquetes de software en AWS Organizations

El siguiente diagrama muestra los siguientes pasos:

  1. Para ejecutar la solución desde una cuenta centralizada, debe cargar sus paquetes o software junto con los pasos de implementación en un bucket de S3.

  2. El paquete personalizado estará disponible en la sección Documentos de la consola de Systems Manager, en la pestaña De mi propiedad.

  3. State Manager, una función de Systems Manager, crea, programa y ejecuta una asociación del paquete en toda la organización. La asociación especifica que el paquete de software debe estar instalado y ejecutándose en un nodo administrado para poder instalarse en el nodo de destino.

  4. La asociación indica a Systems Manager que instale el paquete en el nodo de destino.

  5. Para cualquier instalación o cambio posterior, los usuarios pueden ejecutar la misma asociación de forma periódica o manual desde una única ubicación para realizar implementaciones en todas las cuentas.

  6. En las cuentas de miembros, Automation envía los comandos de implementación a Distributor.

  7. Distributor reparte los paquetes de software en todas las instancias.

Esta solución utiliza la cuenta de administración que AWS Organizations contiene, pero también puede designar una cuenta (administrador delegado) para que la gestione en nombre de la organización.

Tools (Herramientas)

Servicios de AWS

  • Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos. Este patrón utiliza Amazon S3 para centralizar y almacenar de forma segura el paquete distribuido.

  • AWS Systems Manager lo ayuda a administrar las aplicaciones y la infraestructura que se ejecutan en la Nube de AWS. Simplifica la administración de aplicaciones y recursos, reduce el tiempo necesario para detectar y resolver problemas operativos y le ayuda a administrar sus AWS recursos de forma segura y a escala. Este patrón utiliza las siguientes capacidades de Systems Manager:

    • Distributor lo ayuda a empaquetar y publicar el software en nodos administrados de Systems Manager.

    • La automatización simplifica las tareas habituales de mantenimiento, implementación y corrección de muchos servicios. AWS

    • Documents realiza acciones en las instancias gestionadas por Systems Manager en toda la organización y las cuentas.

  • AWS Organizationses un servicio de administración de cuentas que le ayuda a consolidar varias AWS cuentas en una organización que puede crear y administrar de forma centralizada.

Otras herramientas

  • Terraform es una herramienta de infraestructura como código (iAC) HashiCorp que le ayuda a crear y administrar recursos locales y en la nube.

Repositorio de código

Las instrucciones y el código de este patrón están disponibles en el repositorio GitHub centralizado de distribución de paquetes.

Prácticas recomendadas

  • Para asignar etiquetas a una asociación, use AWS Command Line Interface (AWS CLI) o Herramientas de AWS para PowerShell. No se admite agregar etiquetas a una asociación mediante la consola de Systems Manager. Para obtener más información, consulte Etiquetado de recursos de Systems Manager en la documentación de Systems Manager.

  • Para ejecutar una asociación con una versión nueva de un documento compartido desde otra cuenta, debe establecer la versión del documento en default.

  • Para etiquetar solo el nodo de destino, utilice una clave de etiqueta. Si quiere dirigir los nodos mediante varias claves de etiqueta, utilice la opción de grupo de recursos.

Epics

TareaDescripciónHabilidades requeridas

Clonar el repositorio.

  1. Clona el repositorio GitHub centralizado de distribución de paquetes:

    git clone https://github.com/aws-samples/aws-organization-centralised-package-distribution
  2. El repositorio de código de Terraform requiere dos carpetas de personalización administradas por AFT. Confirme que la copia local del repositorio contiene esas carpetas:

    $ cd centralised-package-distribution $ ls global-customization account-customization
DevOps ingeniero

Actualice las variables globales.

En el archivo global-customization/variables.tf, actualice los siguientes parámetros de entrada: Estas variables se aplican a todas las cuentas creadas y administradas por AFT.

  • account_id: ID de la cuenta donde se implementará la solución Distributor.

  • aws_region: El Región de AWS lugar donde se desplegará la asociación.

DevOps ingeniero

Actualice las variables de la cuenta.

En el archivo account-customization/variables.tf, actualice los siguientes parámetros de entrada: Estas variables se aplican únicamente a cuentas creadas y administradas específicamente por AFT.

  • package_bucket_name: nombre del bucket de S3 que contiene el archivo de distribución de paquetes.

  • package_name: nombre del archivo de distribución de paquetes.

  • package_version: versión del paquete del instalador.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Actualice los parámetros de entrada de la asociación de State Manager.

Actualice los siguientes parámetros de entrada del archivo account-customization/association.tf para definir el estado que desea mantener en las instancias. Puede utilizar los valores de parámetros predeterminados si admiten su caso de uso.

  • targetAccounts: la unidad organizativa (OU) de IDs AWS Organizations que representa las cuentas con las instancias de destino para su distribución. OU IDs comienza con «tú».

  • targetRegions: El Regiones de AWS (por ejemplo, «us-east-1″ o «ap-southeast-2") donde se ejecutan las instancias de destino.

  • action: especifique si desea instalar o desinstalar el paquete.

  • installationType: uno de los siguientes tipos de instalación:

    • uninstall: el paquete está desinstalado.

    • reinstall: la aplicación se desconecta hasta que se complete el proceso de reinstalación.

    • In-place update: la aplicación está disponible mientras se añaden archivos nuevos o actualizados a la instalación.

  • name: el nombre del paquete que se va a instalar o desinstalar.

  • version: la versión del paquete que se va a instalar o desinstalar. Si no hay instalada ninguna versión del paquete, el sistema devuelve un error.

  • bucketName: el nombre del bucket de S3 en el que se implementó el paquete. Este bucket debe estar formado únicamente por los paquetes y el archivo de manifiesto.

  • bucketPrefix: el prefijo de S3 donde se almacenan los activos del paquete.

  • AutomationAssumeRole: nombre de recurso de Amazon (ARN) de SystemsManager-AutomationAdministrationRole.

DevOps ingeniero

Prepare los archivos comprimidos y el archivo manifest.json para el paquete.

Este patrón proporciona ejemplos de archivos PowerShell instalables (.msi para Windows y .rpm para Linux) con scripts de instalación y desinstalación en la carpeta. account-customization/package

  1. Sustituya los archivos PowerShell instalables por sus propios archivos o proporcione el archivo instalable, los scripts de instalación y desinstalación y el archivo de manifiesto para crear un paquete en la carpeta de su cuenta. account-customization

  2. Personalice el archivo manifest.json predeterminado que Terraform genera en la carpeta account-customization según sus necesidades.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Inicialice la configuración de Terraform.

Para implementar la solución automáticamente con AFT, inserte el código en AWS CodeCommit:

$ git add * $ git commit -m "message" $ git push

También puede implementar esta solución sin usar AFT; para ello, ejecute un comando de Terraform de la carpeta account-customization. Para inicializar el directorio de trabajo que contiene los archivos Terraform, ejecute:

$ terraform init
DevOps ingeniero

Previsualice los cambios.

Para obtener una vista previa de los cambios que Terraform realizará en la infraestructura, ejecute el comando:

$ terraform plan

Este comando evalúa la configuración de Terraform para determinar el estado deseado de los recursos que se han declarado. También compara el estado deseado con la infraestructura real que se va a aprovisionar en el espacio de trabajo.

DevOps ingeniero

Aplique los cambios.

Ejecute el siguiente comando para implementar los cambios que realizó en los archivos variables.tf:

$ terraform apply
DevOps ingeniero
TareaDescripciónHabilidades requeridas

Valide la creación de documentos SSM.

  1. En el panel de navegación izquierdo de la consola de Systems Manager, elija Documentos.

  2. Elija la pestaña De mi propiedad.

Debería ver los paquetes DistributeSoftwarePackage y AddSoftwarePackageToDistributor.

DevOps ingeniero

Valide la implementación correcta de las automatizaciones.

  1. En el panel de navegación izquierdo de la consola de Systems Manager, elija Automation.

  2. En la lista de ejecuciones de Automation, debería ver las implementaciones más recientes DistributeSoftwarePackage y AddSoftwarePackageToDistributor.

  3. Elija el ID de ejecución para comprobar que se han completado correctamente.

DevOps ingeniero

Compruebe que el paquete se haya implementado en las instancias de cuentas de miembros de destino.

  1. En el panel de navegación de la consola de Systems Manager, elija Ejecutar comando.

  2. En el historial de comandos, verá cada invocación y su estado.

  3. Elija cualquier ID de comando para ver el historial de implementación de cada instancia de destino.

  4. Elija el ID de instancia y consulte la sección de resultados para ver la distribución.

DevOps ingeniero

Resolución de problemas

ProblemaSolución

La asociación de State Manager ha devuelto un error o se encuentra en estado pendiente.

Consulte la información de solución de problemas en el Centro de AWS conocimiento.

No se pudo ejecutar una asociación programada.

Es posible que la especificación de su programación no sea válida. Actualmente, State Manager no permite especificar meses en expresiones cron para asociaciones. Utilice expresiones de frecuencia o cron para confirmar la programación.

Recursos relacionados