Centralizza la distribuzione dei pacchetti software nelle AWS Organizzazioni utilizzando Terraform - Prontuario AWS

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 nelle AWS Organizzazioni utilizzando Terraform

Creato da Pradip kumar Pandey (AWS), Aarti Rajput (), Chintamani Aphale (), T.V.R.L.Phani Kumar Dadi (AWS), Mayuri Shinde (AWS) e Pratap Kumar Nanda () AWS AWS AWS

Ambiente: produzione

Tecnologie: gestione e governance; infrastruttura

AWSservizi: AWS Organizations; AWS Systems Manager

Riepilogo

Le aziende spesso Account AWS gestiscono più file distribuiti su più Regioni AWS file 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, o TrendMicrostrumenti per la scansione di sicurezza SentinelOne, e l' CloudWatch agente Amazon, l'agenteDatadog o gli agenti per il monitoraggio. AppDynamics Questi team spesso incontrano difficoltà quando vogliono automatizzare centralmente la gestione e la distribuzione dei pacchetti software in questo ampio panorama.

Distributor, una funzionalità di AWS Systems Manager, 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

Architettura

Dettagli delle risorse

Questo modello utilizza Account Factory for Terraform (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.

Puoi anche distribuire questa soluzione senza utilizzarlaAFT, eseguendo i comandi Terraform nella cartella delle personalizzazioni dell'account.

Il codice Terraform distribuisce le seguenti risorse:

  • AWS Identity and Access Management (IAM) ruolo e politiche

  • File compressi e manifest.json per il pacchetto

    • In Systems Manager, un pacchetto include almeno un file.zip di software o risorse installabili.

    • Il JSON manifesto 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

    • DistributeSoftwarePackagecontiene la logica per distribuire il pacchetto software a ogni istanza di destinazione negli account dei membri.

    • AddSoftwarePackageToDistributorcontiene 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 nelle Organizzazioni AWS

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.

  2. Il pacchetto personalizzato diventa disponibile nella sezione Documenti della console Systems Manager, nella scheda Owned by me.

  3. 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.

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

  5. 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.

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

  7. 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.

Strumenti

AWSservizi

  • Amazon Simple Storage Service (Amazon S3) è 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 Managerti 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 consente di creare pacchetti e pubblicare software su istanze gestite da Systems Manager.

    • L'automazione semplifica le attività comuni di manutenzione, implementazione e riparazione per molti servizi. AWS

    • Documents esegue azioni sulle istanze gestite da Systems Manager all'interno dell'organizzazione e degli account.

  • AWS Organizationsè un servizio di gestione degli account che consente di consolidare più AWS account in un'organizzazione da creare e gestire centralmente.

Altri strumenti

  • Terraform è 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.

Best practice

  • Per assegnare tag a un'associazione, usa il AWS Command Line Interface (AWS CLI) o il. AWS Tools for PowerShell Aggiunta di tag a un'associazione utilizzando la console Systems Manager non è supportata. Per ulteriori informazioni, vedere Tagging Systems Manager alle risorse 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

AttivitàDescrizioneCompetenze richieste

Clonare il repository.

  1. Clona l'archivio GitHub centralizzato per la distribuzione dei pacchetti:

    git clone https://github.com/aws-samples/aws-organization-centralised-package-distribution
  2. Il repository di codice Terraform richiede due cartelle di personalizzazione gestite da. AFT Conferma che la tua copia locale del repository contenga queste cartelle:

    $ cd centralised-package-distribution $ ls global-customization account-customization
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 daAFT.

  • account_id: L'ID dell'account in cui verrà implementata la soluzione Distributor.

  • aws_region: Il Regione AWS luogo in cui verrà distribuita l'associazione.

DevOps ingegnere

Aggiorna le variabili dell'account.

Aggiorna i seguenti parametri di input nel account-customization/variables.tf file. Queste variabili si applicano solo agli account specifici creati e gestiti daAFT.

  • package_bucket_name: il nome del bucket S3 che contiene il file di distribuzione del pacchetto.

  • package_name: il nome del file di distribuzione del pacchetto.

  • package_version: la versione del pacchetto del programma di installazione.

DevOps ingegnere
AttivitàDescrizioneCompetenze 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.

  • targetAccounts: l'unità organizzativa (OU) IDs all'interno di AWS Organizations che rappresenta gli account con le istanze di destinazione per la distribuzione. L'OU IDs inizia con «ou».

  • targetRegions: Il Regioni AWS (ad esempio, «us-east-1″ o» ap-southeast-2») dove sono in esecuzione le istanze di destinazione.

  • action: Specificare se installare o disinstallare il pacchetto.

  • installationType: Uno dei seguenti tipi di installazione:

    • uninstall: il pacchetto è stato disinstallato.

    • reinstall: l'applicazione viene messa offline fino al completamento del processo di reinstallazione.

    • In-place update: l'applicazione è disponibile mentre vengono aggiunti file nuovi o aggiornati all'installazione.

  • name: nome del pacchetto da installare o disinstallare.

  • version: la versione del pacchetto da installare o disinstallare. Se non è installata alcuna versione del pacchetto, il sistema restituisce un errore.

  • bucketName: il nome del bucket S3 in cui è stato distribuito il pacchetto. Questo bucket deve essere composto solo dai pacchetti e dal file manifest.

  • bucketPrefix: il prefisso S3 in cui sono archiviate le risorse del pacchetto.

  • AutomationAssumeRole: Il nome della risorsa Amazon (ARN) diSystemsManager-AutomationAdministrationRole.

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

  1. Sostituisci i file PowerShell installabili con i tuoi file oppure fornisci il file installabile, gli script di installazione e disinstallazione e il file manifest per creare un pacchetto nella cartella del tuo account. account-customization

  2. Personalizza il manifest.json file predefinito che Terraform genera nella account-customization cartella in base alle tue esigenze.

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Inizializza la configurazione Terraform.

Per implementare automaticamente la soluzione conAFT, invia il codice a: AWS CodeCommit

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

Puoi anche distribuire questa soluzione senza utilizzarla AFT eseguendo un comando Terraform dalla cartella. account-customization Per inizializzare la directory di lavoro che contiene i file Terraform, esegui:

$ terraform init
DevOps ingegnere

Visualizza in anteprima le modifiche.

Per visualizzare in anteprima le modifiche che Terraform apporterà all'infrastruttura, esegui il comando:

$ terraform plan

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:

$ terraform apply
DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Convalida la creazione di SSM documenti.

  1. Nella console Systems Manager, nel riquadro di navigazione a sinistra, scegli Documenti.

  2. Scegliere la scheda Owned by me (Di mia proprieta).

Dovresti vedere i AddSoftwarePackageToDistributor pacchetti DistributeSoftwarePackage e.

DevOps ingegnere

Convalida la corretta implementazione delle automazioni.

  1. Nella console Systems Manager, nel riquadro di navigazione a sinistra, scegli Automazione.

  2. Nell'elenco delle esecuzioni di automazione, dovresti vedere le AddSoftwarePackageToDistributor implementazioni DistributeSoftwarePackage e le distribuzioni più recenti.

  3. Scegli Execution ID per verificare che siano state completate correttamente.

DevOps ingegnere

Verifica che il pacchetto sia stato distribuito nelle istanze di account membro interessate.

  1. Nella console Systems Manager, nel riquadro di navigazione, scegli Esegui comando.

  2. Nella cronologia dei comandi, vedrai ogni invocazione e il relativo stato.

  3. Scegli un ID di comando per visualizzare la cronologia di distribuzione per ogni istanza di destinazione.

  4. Scegli l'ID dell'istanza e controlla la sezione Output per la distribuzione.

DevOps ingegnere

Risoluzione dei problemi

ProblemaSoluzione

L'associazione State Manager è fallita o è bloccata in sospeso.

Consulta le informazioni sulla risoluzione dei problemi 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 per confermare la pianificazione.

Risorse correlate