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à.
Crea un framework di orchestrazione delle risorse basato su API utilizzando Actions e Terragrunt GitHub
Tamilselvan P, Abhigyan Dandriyal, Sandeep Gawande e Akash Kumar, Amazon Web Services
Riepilogo
Questo modello sfrutta i flussi di lavoro di GitHub Actions per automatizzare l'approvvigionamento delle risorse tramite payload JSON standardizzati, eliminando la necessità di una configurazione manuale. Questa pipeline automatizzata gestisce l'intero ciclo di vita dell'implementazione e può integrarsi perfettamente con vari sistemi di frontend, dai componenti dell'interfaccia utente personalizzati a. ServiceNow La flessibilità della soluzione consente agli utenti di interagire con il sistema tramite le loro interfacce preferite, mantenendo processi standardizzati.
L'architettura configurabile della pipeline può essere adattata per soddisfare diversi requisiti organizzativi. L'implementazione di esempio si concentra sul provisioning di Amazon Virtual Private Cloud (Amazon VPC) e Amazon Simple Storage Service (Amazon S3). Il modello affronta efficacemente le sfide comuni di gestione delle risorse cloud standardizzando le richieste all'interno dell'organizzazione e fornendo punti di integrazione coerenti. Questo approccio semplifica la richiesta e la gestione delle risorse da parte dei team, garantendo al contempo la standardizzazione.
Prerequisiti e limitazioni
Prerequisiti
Un attivo Account AWS
Un GitHub account attivo con accesso al repository configurato
Limitazioni
Le nuove risorse richiedono l'aggiunta manuale di
terragrunt.hclfile alla configurazione del repository.Alcune Servizi AWS non sono disponibili in tutte Regioni AWS. Per la disponibilità regionale, vedi AWS Servizi per regione
. Per endpoint specifici, consulta Endpoints and quotas del servizio e scegli il link relativo al servizio.
Architettura
Il diagramma seguente mostra i componenti e il flusso di lavoro di questo modello.

Il diagramma dell'architettura mostra le seguenti azioni:
L'utente invia un payload JSON a GitHub Actions, attivando la pipeline di automazione.
La pipeline GitHub Actions recupera il codice delle risorse richiesto dai repository Terragrunt e Terraform, in base alle specifiche del payload.
La pipeline assume il ruolo (IAM) appropriato utilizzando l'ID specificato. AWS Identity and Access Management Account AWS Quindi, la pipeline distribuisce le risorse sulla destinazione Account AWS e gestisce lo stato di Terraform utilizzando il bucket Amazon S3 specifico dell'account e la tabella Amazon DynamoDB.
Ciascuno Account AWS contiene ruoli IAM per un accesso sicuro, un bucket Amazon S3 per lo storage dello stato Terraform e una tabella DynamoDB per il blocco dello stato. Questo design consente la distribuzione controllata e automatizzata delle risorse su tutto il territorio. Account AWS Il processo di distribuzione mantiene la corretta gestione dello stato e il controllo degli accessi tramite bucket Amazon S3 dedicati e ruoli IAM in ogni account.
Strumenti
Servizi AWS
Amazon DynamoDB è un servizio di database NoSQL interamente gestito che offre prestazioni elevate, prevedibili e scalabili.
AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
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.
Amazon Virtual Private Cloud (Amazon VPC) ti aiuta a lanciare AWS risorse in una rete virtuale che hai definito. Questa rete virtuale è simile a una comune rete da gestire all'interno del proprio data center, ma con i vantaggi dell'infrastruttura scalabile di AWS.
Altri strumenti
GitHub Actions
è una piattaforma di integrazione e distribuzione continua (CI/CD) strettamente integrata con i repository. GitHub Puoi utilizzare GitHub Actions per automatizzare la pipeline di compilazione, test e distribuzione. Terraform
è uno strumento di infrastruttura come codice (IaC) HashiCorp che ti aiuta a creare e gestire risorse cloud e locali. Terragrunt è uno strumento di orchestrazione che estende
sia le funzionalità di Terraform che quelle di Terraform. OpenTofu Gestisce il modo in cui vengono applicati i modelli di infrastruttura generici, semplificando la scalabilità e la manutenzione di grandi infrastrutture.
Archivio di codice
Il codice per questo modello è disponibile nel repository GitHub sample-aws-orchestration-pipeline-terraform
Best practice
Archivia AWS le credenziali e i dati sensibili utilizzando i segreti del GitHub repository per un accesso sicuro.
Configura il provider OpenID Connect (OIDC) for GitHub Actions per assumere il ruolo IAM, evitando credenziali statiche.
Segui il principio del privilegio minimo e concedi le autorizzazioni minime necessarie per eseguire un'attività. Per ulteriori informazioni, consulta le best practice relative alla concessione dei privilegi minimi e alla sicurezza nella documentazione IAM.
Epiche
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Inizializza il GitHub repository. | Per inizializzare il GitHub repository, utilizzare i seguenti passaggi:
| DevOps ingegnere |
Configura i ruoli e le autorizzazioni IAM. | Per configurare i ruoli e le autorizzazioni IAM, utilizza i seguenti passaggi:
| DevOps ingegnere |
Imposta GitHub segreti e variabili. | Per istruzioni su come impostare i segreti e le variabili del repository nel GitHub repository, consulta Creazione di variabili di configurazione per un repository nella documentazione
| DevOps ingegnere |
Crea la struttura del repository. | Per creare la struttura del repository, attenersi alla seguente procedura:
| DevOps ingegnere |
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Esegui la pipeline usando curl. | Per eseguire la pipeline utilizzando curl
Per ulteriori informazioni sul processo di esecuzione della pipeline, vedere Informazioni aggiuntive. | DevOps ingegnere |
Convalida i risultati dell'esecuzione della pipeline | Per convalidare i risultati, utilizzate i seguenti passaggi:
Puoi anche verificare in modo incrociato le risorse create utilizzando il | DevOps ingegnere |
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Invia una richiesta di pulizia. | Per eliminare le risorse che non sono più necessarie, procedi nel seguente modo:
| DevOps ingegnere |
Risorse correlate
AWS Blog
Servizio AWS documentazione
GitHub resources
Informazioni aggiuntive
Processo di esecuzione della pipeline
Di seguito sono riportati i passaggi dell'esecuzione della pipeline:
Convalida il formato del payload JSON: assicura che la configurazione JSON in entrata sia strutturata correttamente e contenga tutti i parametri richiesti
Presuppone il ruolo IAM specificato: autentica e assume il ruolo IAM richiesto per le operazioni AWS
Scarica il codice Terraform e Terragrunt richiesto: recupera la versione specificata del codice risorsa e delle dipendenze
Esegue la distribuzione delle risorse: applica la configurazione per distribuire o aggiornare le risorse nell'ambiente di destinazione AWS
Payload di esempio utilizzato per la creazione di VPC
Di seguito è riportato un esempio di codice per la creazione di bucket di stato del backend Terraform:
state_bucket_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate"
lock_table_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate-lock"
Di seguito è riportato un esempio di payload per la creazione di un VPC con Amazon VPC, vpc_cidr in cui definisce le specifiche del blocco CIDR per il VPC. Il bucket di stato Terraform è mappato su una variabile definita nei file. terraform Il ref parametro contiene il nome del ramo del codice da eseguire.
{ "ref": "main", "inputs": { "RequestParameters": { "RequestId": "1111111", "RequestType": "create", "ResourceType": "vpc", "AccountId": "1234567890", "AccountAlias": "account-alias", "RegionId": "us-west-2", "ApplicationName": "myapp", "DivisionName": "division-name", "EnvironmentId": "dev", "Suffix": "poc" }, "ResourceParameters": [ { "VPC": { "vpc_cidr": "10.0.0.0/16" } } ] } }
RequestParametersvengono utilizzati per tenere traccia dello stato della richiesta nella sezione pipeline e tfstate vengono creati sulla base di queste informazioni. I seguenti parametri contengono metadati e informazioni di controllo:
RequestId— Identificatore univoco per la richiestaRequestType— Tipo di operazione (creazione, aggiornamento o eliminazione)ResourceType— Tipo di risorsa da fornireAccountId— Obiettivo Account AWS di implementazioneAccountAlias— Nome descrittivo per Account AWSRegionId— Regione AWS per la distribuzione delle risorseApplicationName— Nome dell'applicazioneDivisionName— Divisione organizzativaEnvironmentId— Ambiente (ad esempio, dev e prod)Suffix— Identificatore aggiuntivo per le risorse
ResourceParameterscontengono una configurazione specifica della risorsa che si associa alle variabili definite nei file Terraform. Tutte le variabili personalizzate che devono essere passate ai moduli Terraform devono essere incluse in. ResourceParameters Il parametro vpc_cidr è obbligatorio per Amazon VPC.