

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Centralisez la distribution des packages logiciels dans AWS Organizations à l'aide de Terraform
<a name="centralize-software-package-distribution-in-aws-organizations-by-using-terraform"></a>

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

## Résumé
<a name="centralize-software-package-distribution-in-aws-organizations-by-using-terraform-summary"></a>

Les entreprises en maintiennent souvent plusieurs Comptes AWS réparties sur plusieurs Régions AWS afin de créer une barrière d'isolation solide entre les charges de travail. [Pour garantir la sécurité et la conformité, leurs équipes d'administration installent des outils basés sur des agents tels que [CrowdStrike[SentinelOne](https://www.sentinelone.com/platform/)](https://www.crowdstrike.com/falcon-platform/), ou des [TrendMicro](https://www.trendmicro.com/en_sg/business.html)outils d'analyse de sécurité, ainsi que l'[ CloudWatch agent Amazon, l'agent](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)[Datadog ou AppDynamics des agents](https://www.datadoghq.com/) de surveillance.](https://www.appdynamics.com/product/how-it-works/agents-and-controller) Ces équipes sont souvent confrontées à des défis lorsqu'elles souhaitent automatiser de manière centralisée la gestion et la distribution des progiciels dans ce vaste environnement.

[Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html), une fonctionnalité de [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html), automatise le processus d'empaquetage et de publication de logiciels sur des instances Microsoft Windows et Linux gérées sur le cloud et sur des serveurs locaux via une interface simplifiée unique. Ce modèle montre comment vous pouvez utiliser Terraform pour simplifier davantage le processus de gestion de l'installation des logiciels et pour exécuter des scripts sur un grand nombre d'instances et de comptes membres AWS Organizations avec un minimum d'effort.

Cette solution fonctionne pour les instances Amazon, Linux et Windows gérées par Systems Manager.

## Conditions préalables et limitations
<a name="centralize-software-package-distribution-in-aws-organizations-by-using-terraform-prereqs"></a>
+ Un [package de distribution](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor-working-with-packages-create.html) contenant le logiciel à installer
+ [Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) version 0.15.0 ou ultérieure
+ Instances Amazon Elastic Compute Cloud (Amazon EC2) [gérées par Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/managed_instances.html) et dotées d'[autorisations de base pour accéder à Amazon Simple Storage Service (Amazon S3](https://repost.aws/knowledge-center/ec2-instance-access-s3-bucket)) sur le compte cible
+ Une zone de landing zone pour votre organisation, configurée à l'aide de [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)
+ (Facultatif) [Account Factory pour Terraform (AFT)](https://catalog.workshops.aws/control-tower/en-US/customization/aft)

## Architecture
<a name="centralize-software-package-distribution-in-aws-organizations-by-using-terraform-architecture"></a>

**Détails de ressource**

Ce modèle utilise [Account Factory for Terraform (AFT)](https://catalog.workshops.aws/control-tower/en-US/customization/aft) pour créer toutes les AWS ressources requises et le pipeline de code pour déployer les ressources dans un compte de déploiement. Le pipeline de code s'exécute dans deux référentiels :
+ **La personnalisation globale** contient le code Terraform qui s'appliquera à tous les comptes enregistrés auprès d'AFT.
+ **Les personnalisations de compte** contiennent du code Terraform qui s'exécutera dans le compte de déploiement.

Vous pouvez également déployer cette solution sans utiliser AFT, en exécutant les commandes [Terraform](https://developer.hashicorp.com/terraform/intro) dans le dossier de personnalisation du compte.

Le code Terraform déploie les ressources suivantes :
+ Gestion des identités et des accès AWS rôle et politiques (IAM)
  + [SystemsManager- AutomationExecutionRole](https://docs.aws.amazon.com/systems-manager/latest/userguide/running-automations-multiple-accounts-regions.html) accorde à l'utilisateur l'autorisation d'exécuter des automatisations dans les comptes cibles.
  + [SystemsManager- AutomationAdministrationRole](https://docs.aws.amazon.com/systems-manager/latest/userguide/running-automations-multiple-accounts-regions.html) accorde à l'utilisateur l'autorisation d'exécuter des automatisations dans plusieurs comptes et unités organisationnelles (OUs).
+ Fichiers compressés et manifest.json pour le package
  + Dans Systems Manager, un [package](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor-working-with-packages-create.html) inclut au moins un fichier .zip de logiciels ou de ressources installables.
  + Le manifeste JSON inclut des pointeurs vers les fichiers de code de votre package.
+ compartiment S3
  + Le package distribué partagé au sein de l'organisation est stocké de manière sécurisée dans un compartiment Amazon S3.
+ AWS Systems Manager documents (documents SSM)
  + `DistributeSoftwarePackage`contient la logique permettant de distribuer le package logiciel à chaque instance cible des comptes membres.
  + `AddSoftwarePackageToDistributor`contient la logique permettant de regrouper les actifs logiciels installables et de les ajouter à Automation, une fonctionnalité de AWS Systems Manager.
+ Association Systems Manager 
  + Une association Systems Manager est utilisée pour déployer la solution.

**Architecture et flux de travail**

![\[Schéma d'architecture pour centraliser la distribution des packages logiciels dans AWS Organizations\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/da584449-e12b-4878-a61d-00d8cea3d3d7/images/2718f2c4-f816-4e34-89b8-8182c128e6db.png)


Le diagramme suivant illustre les étapes suivantes :

1. Pour exécuter la solution à partir d'un compte centralisé, vous téléchargez vos packages ou logiciels ainsi que les étapes de déploiement dans un compartiment S3.

1. Votre package personnalisé est disponible dans la section [Documents](https://ap-southeast-2.console.aws.amazon.com/systems-manager/documents?region=ap-southeast-2) de la console Systems Manager, dans l'onglet **Owned by me**.

1. State Manager, une fonctionnalité de Systems Manager, crée, planifie et exécute une association pour le package au sein de l'organisation. L'association indique que le package logiciel doit être installé et exécuté sur un nœud géré avant de pouvoir être installé sur le nœud cible.

1. L'association demande à Systems Manager d'installer le package sur le nœud cible.

1. Pour toute installation ou modification ultérieure, les utilisateurs peuvent exécuter la même association périodiquement ou manuellement à partir d'un seul emplacement afin d'effectuer des déploiements sur plusieurs comptes.

1. Dans les comptes membres, Automation envoie des commandes de déploiement au distributeur.

1. Le distributeur distribue des progiciels entre les instances.

Cette solution utilise le compte de gestion AWS Organizations intégré, mais vous pouvez également désigner un compte (administrateur délégué) pour le gérer au nom de l'organisation.

## Outils
<a name="centralize-software-package-distribution-in-aws-organizations-by-using-terraform-tools"></a>

**Services AWS**
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données. Ce modèle utilise Amazon S3 pour centraliser et stocker en toute sécurité le package distribué.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)vous aide à gérer vos applications et votre infrastructure exécutées dans le AWS Cloud. Il simplifie la gestion des applications et des ressources, réduit le délai de détection et de résolution des problèmes opérationnels et vous aide à gérer vos AWS ressources en toute sécurité à grande échelle. Ce modèle utilise les fonctionnalités suivantes de Systems Manager :
  + [Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html) vous aide à empaqueter et à publier des logiciels sur des instances gérées par Systems Manager.
  + [L'automatisation](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html) simplifie les tâches courantes de maintenance, de déploiement et de correction pour de nombreux AWS services.
  + [Documents](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents.html) exécute des actions sur vos instances gérées par Systems Manager au sein de votre organisation et de vos comptes.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)est un service de gestion de comptes qui vous aide à consolider plusieurs AWS comptes au sein d'une organisation que vous créez et gérez de manière centralisée.

**Autres outils**
+ [Terraform](https://www.terraform.io/) est un outil d'infrastructure en tant que code (IaC) HashiCorp qui vous aide à créer et à gérer des ressources sur site et dans le cloud.

**Référentiel de code**

Les instructions et le code de ce modèle sont disponibles dans le référentiel de [distribution de packages GitHub centralisé](https://github.com/aws-samples/aws-organization-centralised-package-distribution).

## Bonnes pratiques
<a name="centralize-software-package-distribution-in-aws-organizations-by-using-terraform-best-practices"></a>
+ Pour attribuer des balises à une association, utilisez le [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ou le [Outils AWS pour PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-welcome.html). L'ajout de balises à une association à l'aide de la console Systems Manager n'est pas pris en charge. Pour plus d'informations, consultez les [ressources de Tagging Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/tagging-resources.html) dans la documentation de Systems Manager.
+ Pour exécuter une association en utilisant une nouvelle version d'un document partagé depuis un autre compte, définissez la version du document sur`default`.
+ Pour étiqueter uniquement le nœud cible, utilisez une seule clé de balise. Si vous souhaitez cibler vos nœuds à l'aide de plusieurs clés de balise, utilisez l'option de groupe de ressources.

## Épopées
<a name="centralize-software-package-distribution-in-aws-organizations-by-using-terraform-epics"></a>

### Configuration des fichiers source et des comptes
<a name="configure-source-files-and-accounts"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html) | DevOps ingénieur | 
| Mettez à jour les variables globales. | Mettez à jour les paramètres d'entrée suivants dans le `global-customization/variables.tf` fichier. Ces variables s'appliquent à tous les comptes créés et gérés par AFT.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html) | DevOps ingénieur | 
| Mettez à jour les variables du compte. | Mettez à jour les paramètres d'entrée suivants dans le `account-customization/variables.tf` fichier. Ces variables s'appliquent uniquement à des comptes spécifiques créés et gérés par l'AFT.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html) | DevOps ingénieur | 

### Personnalisation des paramètres et des fichiers de déploiement
<a name="customize-parameters-and-deployment-files"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Mettez à jour les paramètres d'entrée pour l'association State Manager. | Mettez à jour les paramètres d'entrée suivants dans le `account-customization/association.tf` fichier pour définir l'état que vous souhaitez conserver sur vos instances. Vous pouvez utiliser les valeurs des paramètres par défaut si elles correspondent à votre cas d'utilisation.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html) | DevOps ingénieur | 
| Préparez les fichiers compressés et le `manifest.json` fichier du package. | Ce modèle fournit des exemples de fichiers PowerShell installables (.msi pour Windows et .rpm pour Linux) avec des scripts d'installation et de désinstallation dans le dossier. `account-customization/package`[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html) | DevOps ingénieur | 

### Exécutez des commandes Terraform pour provisionner des ressources
<a name="run-terraform-commands-to-provision-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Initialisez la configuration Terraform. | Pour déployer la solution automatiquement avec AFT, envoyez le code à AWS CodeCommit :<pre>$ git add *<br />$ git commit -m "message"<br />$ git push</pre>Vous pouvez également déployer cette solution sans utiliser AFT en exécutant une commande Terraform depuis le `account-customization` dossier. Pour initialiser le répertoire de travail contenant les fichiers Terraform, exécutez :<pre>$ terraform init</pre> | DevOps ingénieur | 
| Prévisualisez les modifications. | Pour prévisualiser les modifications que Terraform apportera à l'infrastructure, exécutez la commande :<pre>$ terraform plan</pre>Cette commande évalue la configuration Terraform pour déterminer l'état souhaité des ressources déclarées. Il compare également l'état souhaité avec l'infrastructure réelle à fournir dans l'espace de travail. | DevOps ingénieur | 
| Appliquez les modifications. | Exécutez la commande suivante pour implémenter les modifications que vous avez apportées aux `variables.tf` fichiers :<pre>$ terraform apply</pre> | DevOps ingénieur | 

### Valider les ressources
<a name="validate-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Validez la création de documents SSM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html)Vous devriez voir les `AddSoftwarePackageToDistributor` packages `DistributeSoftwarePackage` et. | DevOps ingénieur | 
| Validez le déploiement réussi des automatisations. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html) | DevOps ingénieur | 
| Vérifiez que le package a été déployé sur les instances de compte de membre ciblées. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html) | DevOps ingénieur | 

## Résolution des problèmes
<a name="centralize-software-package-distribution-in-aws-organizations-by-using-terraform-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| L'association State Manager a échoué ou est bloquée en attente. | Consultez les [informations de dépannage](https://repost.aws/knowledge-center/ssm-state-manager-association-fail) dans le centre de AWS connaissances. | 
| Une association planifiée n'a pas pu être exécutée. | Les spécifications de votre calendrier ne sont peut-être pas valides. State Manager ne prend actuellement pas en charge la spécification de mois dans les expressions cron pour les associations. Utilisez des [expressions cron ou rate](https://docs.aws.amazon.com/systems-manager/latest/userguide/reference-cron-and-rate-expressions.html) pour confirmer le planning. | 

## Ressources connexes
<a name="centralize-software-package-distribution-in-aws-organizations-by-using-terraform-resources"></a>
+ [Distribution de packages centralisée](https://github.com/aws-samples/aws-organization-centralised-package-distribution) (GitHub référentiel)
+ [Account Factory pour Terraform (AFT)](https://catalog.workshops.aws/control-tower/en-US/customization/aft)
+ [Cas d'utilisation et meilleures pratiques](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-best-practices.html) (AWS Systems Manager documentation)