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
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
Un paquete de Distributor que incluye el software que se va a instalar
La versión 0.15.0 o posterior de Terraform
Instancias de Amazon Elastic Compute Cloud (Amazon EC2) administradas por Systems Manager y con permisos básicos para acceder a Amazon Simple Storage Service (Amazon S3
) en la cuenta de destino Una zona de aterrizaje para su organización que se configura mediante AWS Control Tower
(Opcional) Generador de cuentas paraTerraform (AFT)
Arquitectura
Detalles del recurso
Este patrón usa Account Factory for Terraform (AFT)
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
El código de Terraform implementa los siguientes recursos:
AWS Identity and Access Management Función y políticas (IAM)
SystemsManager- AutomationExecutionRole concede al usuario permisos para ejecutar automatizaciones en las cuentas de destino.
SystemsManager- AutomationAdministrationRole concede al usuario permisos para ejecutar automatizaciones en varias cuentas y unidades organizativas ()OUs.
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)
DistributeSoftwarePackagecontiene 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

El siguiente diagrama muestra los siguientes pasos:
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.
El paquete personalizado estará disponible en la sección Documentos
de la consola de Systems Manager, en la pestaña De mi propiedad. 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.
La asociación indica a Systems Manager que instale el paquete en el nodo de destino.
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.
En las cuentas de miembros, Automation envía los comandos de implementación a Distributor.
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
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Clonar el repositorio. |
| DevOps ingeniero |
Actualice las variables globales. | En el archivo
| DevOps ingeniero |
Actualice las variables de la cuenta. | En el archivo
| DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Actualice los parámetros de entrada de la asociación de State Manager. | Actualice los siguientes parámetros de entrada del archivo
| DevOps ingeniero |
Prepare los archivos comprimidos y el archivo | 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.
| DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Inicialice la configuración de Terraform. | Para implementar la solución automáticamente con AFT, inserte el código en AWS CodeCommit:
También puede implementar esta solución sin usar AFT; para ello, ejecute un comando de Terraform de la carpeta
| DevOps ingeniero |
Previsualice los cambios. | Para obtener una vista previa de los cambios que Terraform realizará en la infraestructura, ejecute el comando:
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
| DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Valide la creación de documentos SSM. |
Debería ver los paquetes | DevOps ingeniero |
Valide la implementación correcta de las automatizaciones. |
| DevOps ingeniero |
Compruebe que el paquete se haya implementado en las instancias de cuentas de miembros de destino. |
| DevOps ingeniero |
Resolución de problemas
| Problema | Solució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 |
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
Distribución centralizada de paquetes
(GitHub repositorio) Casos de uso y mejores prácticas (AWS Systems Manager documentación)