

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Centralizza la distribuzione dei pacchetti software in AWS Organizations utilizzando Terraform
<a name="centralize-software-package-distribution-in-aws-organizations-by-using-terraform"></a>

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

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

Le aziende spesso gestiscono Account AWS più file distribuiti su più file Regioni AWS per creare una forte barriera di isolamento tra i carichi di lavoro. [Per garantire la sicurezza e la conformità, i team di amministrazione installano strumenti basati su agenti come [CrowdStrike](https://www.crowdstrike.com/falcon-platform/), o [TrendMicro](https://www.trendmicro.com/en_sg/business.html)strumenti per la scansione di sicurezza [SentinelOne](https://www.sentinelone.com/platform/), e l'[ CloudWatch agente Amazon, l'agente](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)[Datadog](https://www.datadoghq.com/) o gli agenti per il monitoraggio. AppDynamics ](https://www.appdynamics.com/product/how-it-works/agents-and-controller) Questi team spesso incontrano difficoltà quando vogliono automatizzare centralmente la gestione e la distribuzione dei pacchetti software in questo ampio panorama.

[Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html), una funzionalità di [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html), automatizza il processo di creazione di pacchetti e pubblicazione del software per le istanze Microsoft Windows e Linux gestite sul cloud e sui server locali tramite un'unica interfaccia semplificata. Questo modello dimostra come è possibile utilizzare Terraform per semplificare ulteriormente il processo di gestione dell'installazione del software e per eseguire script su un gran numero di istanze e account membri all'interno con il minimo sforzo. AWS Organizations 

Questa soluzione funziona per le istanze Amazon, Linux e Windows gestite da Systems Manager.

## Prerequisiti e limitazioni
<a name="centralize-software-package-distribution-in-aws-organizations-by-using-terraform-prereqs"></a>
+ Un [pacchetto Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor-working-with-packages-create.html) contenente il software da installare
+ [Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) versione 0.15.0 o successiva
+ Istanze Amazon Elastic Compute Cloud (Amazon EC2) [gestite da Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/managed_instances.html) e dotate di [autorizzazioni di base per accedere ad Amazon Simple Storage Service (Amazon S3) nell'account di destinazione](https://repost.aws/knowledge-center/ec2-instance-access-s3-bucket)
+ Una landing zone per la tua organizzazione configurata utilizzando [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)
+ (Opzionale) [Account Factory for 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>

**Dettagli delle risorse**

Questo modello utilizza [Account Factory for Terraform (AFT)](https://catalog.workshops.aws/control-tower/en-US/customization/aft) per creare tutte le AWS risorse richieste e la pipeline di codice per distribuire le risorse in un account di distribuzione. La pipeline di codice viene eseguita in due repository:
+ **La personalizzazione globale** contiene il codice Terraform che verrà eseguito su tutti gli account registrati con AFT.
+ **Le personalizzazioni dell'account** contengono il codice Terraform che verrà eseguito nell'account di distribuzione.

È inoltre possibile distribuire questa soluzione senza utilizzare AFT, eseguendo i comandi [Terraform](https://developer.hashicorp.com/terraform/intro) nella cartella delle personalizzazioni dell'account.

Il codice Terraform distribuisce le seguenti risorse:
+ AWS Identity and Access Management Ruolo e politiche (IAM)
  + [SystemsManager- AutomationExecutionRole](https://docs.aws.amazon.com/systems-manager/latest/userguide/running-automations-multiple-accounts-regions.html) concede all'utente le autorizzazioni per eseguire automazioni negli account di destinazione.
  + [SystemsManager- AutomationAdministrationRole](https://docs.aws.amazon.com/systems-manager/latest/userguide/running-automations-multiple-accounts-regions.html) concede all'utente le autorizzazioni per eseguire automazioni in più account e unità organizzative (). OUs
+ File compressi e manifest.json per il pacchetto
  + In Systems Manager, un [pacchetto](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor-working-with-packages-create.html) include almeno un file.zip di software o risorse installabili.
  + Il manifest JSON include puntatori ai file di codice del pacchetto.
+ Bucket S3
  + Il pacchetto distribuito condiviso all'interno dell'organizzazione viene archiviato in modo sicuro in un bucket Amazon S3.
+ AWS Systems Manager documenti (documenti SSM)
  + `DistributeSoftwarePackage`contiene la logica per distribuire il pacchetto software a ogni istanza di destinazione negli account dei membri.
  + `AddSoftwarePackageToDistributor`contiene la logica per impacchettare le risorse software installabili e aggiungerle a Automation, una funzionalità di AWS Systems Manager.
+ Associazione di Systems Manager
  + Per distribuire la soluzione viene utilizzata un'associazione Systems Manager.

**Architettura e flusso di lavoro**

![\[Diagramma di architettura per centralizzare la distribuzione dei pacchetti software in AWS Organizations\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/da584449-e12b-4878-a61d-00d8cea3d3d7/images/2718f2c4-f816-4e34-89b8-8182c128e6db.png)


Il diagramma illustra i passaggi seguenti:

1. Per eseguire la soluzione da un account centralizzato, devi caricare i pacchetti o il software insieme alle fasi di distribuzione in un bucket S3.

1. Il pacchetto personalizzato diventa disponibile nella sezione [Documenti](https://ap-southeast-2.console.aws.amazon.com/systems-manager/documents?region=ap-southeast-2) della console Systems Manager, nella scheda **Owned by me**.

1. State Manager, una funzionalità di Systems Manager, crea, pianifica ed esegue un'associazione per il pacchetto all'interno dell'organizzazione. L'associazione specifica che il pacchetto software deve essere installato ed eseguito su un nodo gestito prima di poter essere installato sul nodo di destinazione.

1. L'associazione ordina a Systems Manager di installare il pacchetto sul nodo di destinazione.

1. Per eventuali installazioni o modifiche successive, gli utenti possono eseguire la stessa associazione periodicamente o manualmente da un'unica posizione per eseguire distribuzioni su più account.

1. Negli account dei membri, Automation invia i comandi di distribuzione a Distributor.

1. Il distributore distribuisce pacchetti software tra le istanze.

Questa soluzione utilizza l'account di gestione interno AWS Organizations, ma è anche possibile designare un account (amministratore delegato) per gestirlo per conto dell'organizzazione.

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

**Servizi AWS**
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati. Questo modello utilizza Amazon S3 per centralizzare e archiviare in modo sicuro il pacchetto distribuito.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)ti aiuta a gestire le applicazioni e l'infrastruttura in esecuzione in. Cloud AWS Semplifica la gestione delle applicazioni e delle risorse, riduce i tempi di rilevamento e risoluzione dei problemi operativi e aiuta a gestire le AWS risorse in modo sicuro su larga scala. Questo modello utilizza le seguenti funzionalità di Systems Manager:
  + [Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html) consente di creare pacchetti e pubblicare software su istanze gestite da Systems Manager.
  + [L'automazione](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html) semplifica le attività comuni di manutenzione, implementazione e riparazione per molti servizi. AWS 
  + [Documents](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents.html) esegue azioni sulle istanze gestite da Systems Manager all'interno dell'organizzazione e degli account.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)è un servizio di gestione degli account che consente di consolidare più AWS account in un'organizzazione da creare e gestire centralmente.

**Altri strumenti**
+ [Terraform](https://www.terraform.io/) è uno strumento di infrastruttura come codice (IaC) HashiCorp che ti aiuta a creare e gestire risorse cloud e locali.

**Archivio di codici**

Le istruzioni e il codice per questo modello sono disponibili nell'archivio GitHub [centralizzato per la distribuzione dei pacchetti](https://github.com/aws-samples/aws-organization-centralised-package-distribution).

## Best practice
<a name="centralize-software-package-distribution-in-aws-organizations-by-using-terraform-best-practices"></a>
+ Per assegnare tag a un'associazione, usa il [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) o il. [AWS Strumenti per PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-welcome.html) Aggiunta di tag a un'associazione utilizzando la console Systems Manager non è supportata. Per ulteriori informazioni, vedere [Tagging Systems Manager alle risorse](https://docs.aws.amazon.com/systems-manager/latest/userguide/tagging-resources.html) nella documentazione di Systems Manager.
+ Per eseguire un'associazione utilizzando una nuova versione di un documento condiviso da un altro account, imposta la versione del documento su. `default`
+ Per etichettare solo il nodo di destinazione, usa una chiave tag. Se vuoi indirizzare i tuoi nodi utilizzando più chiavi di tag, usa l'opzione resource group.

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

### Configura i file sorgente e gli account
<a name="configure-source-files-and-accounts"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Clonare il repository. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html) | DevOps ingegnere | 
| Aggiorna le variabili globali. | Aggiorna i seguenti parametri di input nel `global-customization/variables.tf` file. Queste variabili si applicano a tutti gli account creati e gestiti da AFT.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html) | DevOps ingegnere | 
| Aggiorna le variabili dell'account. | Aggiorna i seguenti parametri di input nel `account-customization/variables.tf` file. Queste variabili si applicano solo a conti specifici creati e gestiti da AFT.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html) | DevOps ingegnere | 

### Personalizza parametri e file di distribuzione
<a name="customize-parameters-and-deployment-files"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Aggiorna i parametri di input per l'associazione State Manager. | Aggiorna i seguenti parametri di input nel `account-customization/association.tf` file per definire lo stato che desideri mantenere sulle tue istanze. Puoi utilizzare i valori dei parametri predefiniti se supportano il tuo caso d'uso.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html) | DevOps ingegnere | 
| Prepara i file compressi e il `manifest.json` file per il pacchetto. | Questo modello fornisce esempi di file PowerShell installabili (.msi per Windows e.rpm per Linux) con script di installazione e disinstallazione nella cartella. `account-customization/package`[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html) | DevOps ingegnere | 

### Esegui i comandi Terraform per fornire risorse
<a name="run-terraform-commands-to-provision-resources"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Inizializza la configurazione Terraform. | Per implementare automaticamente la soluzione con AFT, invia il codice a: AWS CodeCommit<pre>$ git add *<br />$ git commit -m "message"<br />$ git push</pre>È inoltre possibile distribuire questa soluzione senza utilizzare AFT eseguendo un comando Terraform dalla cartella. `account-customization` Per inizializzare la directory di lavoro che contiene i file Terraform, esegui:<pre>$ terraform init</pre> | DevOps ingegnere | 
| Visualizza in anteprima le modifiche. | Per visualizzare in anteprima le modifiche che Terraform apporterà all'infrastruttura, esegui il comando:<pre>$ terraform plan</pre>Questo comando valuta la configurazione di Terraform per determinare lo stato desiderato delle risorse che sono state dichiarate. Inoltre, confronta lo stato desiderato con l'infrastruttura effettiva da fornire all'interno dell'area di lavoro. | DevOps ingegnere | 
| Applica modifiche. | Eseguite il comando seguente per implementare le modifiche apportate ai `variables.tf` file:<pre>$ terraform apply</pre> | DevOps ingegnere | 

### Convalida le risorse
<a name="validate-resources"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Convalida la creazione di documenti SSM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html)Dovresti vedere i `AddSoftwarePackageToDistributor` pacchetti `DistributeSoftwarePackage` e. | DevOps ingegnere | 
| Convalida la corretta implementazione delle automazioni. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html) | DevOps ingegnere | 
| Verifica che il pacchetto sia stato distribuito nelle istanze di account membro interessate. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/centralize-software-package-distribution-in-aws-organizations-by-using-terraform.html) | DevOps ingegnere | 

## risoluzione dei problemi
<a name="centralize-software-package-distribution-in-aws-organizations-by-using-terraform-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| L'associazione State Manager è fallita o è bloccata in sospeso. | Consulta le [informazioni sulla risoluzione dei problemi](https://repost.aws/knowledge-center/ssm-state-manager-association-fail) nel AWS Knowledge Center. | 
| Impossibile eseguire un'associazione pianificata. | Le specifiche della pianificazione potrebbero non essere valide. State Manager attualmente non supporta la specificazione dei mesi nelle espressioni cron per le associazioni. Usa le [espressioni cron o rate](https://docs.aws.amazon.com/systems-manager/latest/userguide/reference-cron-and-rate-expressions.html) per confermare la pianificazione. | 

## Risorse correlate
<a name="centralize-software-package-distribution-in-aws-organizations-by-using-terraform-resources"></a>
+ [Distribuzione centralizzata dei pacchetti (repository](https://github.com/aws-samples/aws-organization-centralised-package-distribution)) GitHub 
+ [Account Factory per Terraform (AFT)](https://catalog.workshops.aws/control-tower/en-US/customization/aft)
+ [Casi d'uso e migliori pratiche](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-best-practices.html) (AWS Systems Manager documentazione)