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 richieste pull automatizzate per l' AWS infrastruttura gestita da Terraform utilizzando Actions GitHub
Matt Padgett, Ashish Bhatt, Ashwin Divakaran, Sandip Gangapadhyay e Prafful Gupta, Amazon Web Services
Riepilogo
Questo modello presenta un'utilità di automazione progettata per eliminare il lavoro manuale e ripetitivo necessario nella gestione delle modifiche su più repository Terraform. Molte organizzazioni utilizzano i repository Terraform per gestire la propria infrastruttura come codice (IaC), spesso con centinaia di repository separati che rappresentano ambienti, servizi o team diversi. La gestione di questi repository su larga scala rappresenta una sfida operativa significativa. Le attività di routine come l'aggiornamento di un parametro, l'aggiornamento delle versioni dei moduli o l'applicazione di modifiche alla configurazione spesso richiedono la creazione e la gestione delle richieste pull (PRs) su molti repository più volte al giorno.
Anche per modifiche semplici, questo processo ripetitivo e manuale richiede molto tempo ed è soggetto a errori. Gli ingegneri devono applicare costantemente la stessa modifica a tutti gli archivi mirati e creare titoli e descrizioni PR significativi. Inoltre, spesso devono interagire con strumenti esterni come Jira per recuperare o includere riferimenti per il monitoraggio dei problemi. Queste attività, sebbene necessarie, sono un sollevamento indifferenziato di carichi pesanti che richiedono tempo prezioso di progettazione e riducono l'efficienza complessiva. La mancanza di automazione in questo flusso di lavoro crea attriti, rallenta l'erogazione e aumenta il carico cognitivo sui team incaricati di mantenere infrastrutture Terraform su larga scala.
Panoramica della soluzione
Per affrontare questa sfida, questo modello offre un'utilità interamente basata sulla configurazione, che consente agli utenti di definire le modifiche desiderate in un file di configurazione strutturato. Questo file specifica i repository, i moduli, i parametri e i valori di destinazione utilizzando uno schema chiaramente definito.
Una volta configurata, l'utilità esegue i seguenti passaggi automatici:
Legge la configurazione definita dall'utente per determinare l'ambito e la natura delle modifiche
Crea un nuovo ramo in ogni repository di destinazione con gli aggiornamenti richiesti applicati
Genera un PR per ogni modifica, garantendo la coerenza tra tutti gli archivi
Invia notifiche Slack (opzionale) per avvisare le parti interessate con link diretti al file creato PRs
Automatizzando queste attività ripetitive, l'utilità riduce in modo significativo il tempo, l'impegno e i rischi associati alla gestione degli aggiornamenti dell'infrastruttura su larga scala. Consente ai team di concentrarsi su attività ingegneristiche di maggior valore, garantendo al contempo che le modifiche vengano applicate in modo coerente e possano essere tracciate in tutti gli archivi.
Prerequisiti e limitazioni
Prerequisiti
Un attivo. Account AWS
Python versione 3.8 o successiva.
Un token di accesso GitHub personale (PAT). Per ulteriori informazioni, consulta Creazione di un token di accesso personale (classico)
nella GitHub documentazione. Il GitHub PAT può accedere ai repository di destinazione in modo che l'utilità possa eseguire operazioni come la creazione di rami e richieste pull. Per ulteriori informazioni, consultate l'archivio del GitHub codice
di questo pattern.
Limitazioni
La complessità della configurazione rappresenta la sfida principale. L'efficacia dell'automazione è limitata dalle funzionalità del relativo file di configurazione. Sebbene il sistema gestisca le modifiche standard in modo efficiente, le modifiche complesse dell'infrastruttura potrebbero richiedere un intervento manuale e alcuni casi limite non rientrano nell'ambito della gestione automatizzata.
La sicurezza e l'accesso presentano considerazioni importanti, in particolare nella gestione dei token di GitHub accesso e dei limiti di velocità delle API. Le organizzazioni devono bilanciare attentamente la necessità di automazione con l'archiviazione e la gestione sicure delle credenziali, garantendo controlli di accesso adeguati e mantenendo l'efficienza operativa.
I vincoli di convalida rappresentano un'altra limitazione importante perché il sistema automatizzato ha una capacità limitata di convalidare la logica aziendale e i requisiti specifici dell'ambiente. Le dipendenze complesse e le interazioni tra servizi spesso richiedono la supervisione umana, poiché la convalida automatizzata non è in grado di cogliere appieno tutte le sfumature contestuali e le regole aziendali.
Quando si affrontano modifiche all'infrastruttura su larga scala emergono problemi di scalabilità e prestazioni. Il sistema deve funzionare entro i limiti delle GitHub API e gestire contemporaneamente numerosi repository. Le operazioni che richiedono un uso intensivo di risorse su un'infrastruttura estesa possono creare colli di bottiglia prestazionali che richiedono una gestione attenta.
I limiti di integrazione limitano la flessibilità del sistema perché è progettato principalmente per funzionare con strumenti specifici come e Slack. GitHub Le organizzazioni che utilizzano strumenti diversi potrebbero aver bisogno di soluzioni personalizzate e le opzioni di personalizzazione del flusso di lavoro di questo modello sono limitate ai punti di integrazione supportati.
Architecture
Il diagramma seguente mostra il flusso di lavoro e i componenti di questa soluzione.

Il flusso di lavoro consiste nei seguenti passaggi:
Lo sviluppatore attiva GitHub Actions specificando il repository Terraform.
L'utilità di automazione legge le configurazioni definite.
L'utilità di automazione richiama anche il repository Terraform fornito.
L'utilità di automazione crea un nuovo ramo e aggiorna i modelli Terraform localmente.
L'utilità di automazione invia il nuovo ramo al repository e crea un nuovo PR.
L'utilità di automazione utilizza le notifiche Slack che includono link PR per avvisare gli sviluppatori e abilita i modelli Terraform per la distribuzione. Cloud AWS
Tools (Strumenti)
GitHub
è una piattaforma per sviluppatori che gli sviluppatori possono utilizzare per creare, archiviare, gestire e condividere il proprio codice. 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. HashiCorp Terraform
è uno strumento di infrastruttura come codice (IaC) che ti aiuta a creare e gestire risorse cloud e locali. Slack
, un'offerta di Salesforce, è una piattaforma conversazionale basata sull'intelligenza artificiale che fornisce collaborazione tramite chat e video, automatizza i processi senza codice e supporta la condivisione delle informazioni.
Archivio di codice
Il codice per questo modello è disponibile nell'archivio GitHub Automated Terraform Infrastructure Update Workflow using GitHub Actions
Best practice
Una gestione efficace delle modifiche è fondamentale per un'implementazione di successo. Le organizzazioni dovrebbero adottare una strategia di implementazione graduale per cambiamenti su larga scala. Mantieni convenzioni di denominazione delle filiali e descrizioni delle pubbliche relazioni coerenti e assicurati una documentazione completa di tutte le modifiche.
I controlli di sicurezza devono essere implementati in modo rigoroso, concentrandosi sui principi di accesso con privilegi minimi e sulla gestione sicura delle credenziali. Abilita le regole di protezione delle filiali per prevenire modifiche non autorizzate. Effettua controlli di sicurezza regolari per mantenere l'integrità del sistema.
Un protocollo di test robusto dovrebbe includere
terraform planl'esecuzione automatizzata in pipeline di integrazione continua e distribuzione continua (CI/CD). Il protocollo dovrebbe includere anche controlli di convalida prima del commit e ambienti di revisione dedicati per le modifiche critiche. Questo approccio di test a più livelli aiuta a catturare tempestivamente i problemi e garantisce la stabilità dell'infrastruttura.La strategia di monitoraggio deve comprendere meccanismi di allarme completi, tracciamento dettagliato delle success/failure metriche e meccanismi di riprova automatizzati in caso di operazioni non riuscite. Questa strategia aiuta a garantire la visibilità operativa e consente una risposta rapida a qualsiasi problema che si presenti.
Gli standard di configurazione dovrebbero enfatizzare il controllo delle versioni per tutte le configurazioni, mantenendo la modularità per la riusabilità e la scalabilità. Una documentazione chiara dello schema e degli esempi aiuta i team a comprendere e utilizzare il sistema di automazione in modo efficace.
Epiche
| Operazione | Description | Competenze richieste |
|---|---|---|
Configura il repository. | Per configurare il repository, esegui i seguenti comandi:
| AWS DevOps |
Installare le dipendenze. | Per installare e verificare le dipendenze di Python, esegui i seguenti comandi:
| AWS DevOps |
Configura il GitHub token. | Per configurare il GitHub token e quindi verificarne il funzionamento, esegui i seguenti comandi:
| AWS DevOps |
| Operazione | Description | Competenze richieste |
|---|---|---|
Configura il | Per definire i repository di destinazione e le modifiche desiderate, modificate il file
| AWS DevOps |
| Operazione | Description | Competenze richieste |
|---|---|---|
Effettua i test prima del volo. | Verifica sempre la tua configurazione prima di eseguirla nei repository di produzione. Utilizza il seguente comando:
| AWS DevOps |
Verifica l'accesso al repository. | Per verificare che il GitHub token possa accedere al repository, esegui il seguente comando:
| AWS DevOps |
| Operazione | Description | Competenze richieste |
|---|---|---|
Esegui l'utilità di automazione utilizzando l'interfaccia utente GitHub Actions. | Per eseguire l'utilità di automazione utilizzando l'interfaccia utente GitHub Actions, procedi come segue:
| AWS DevOps |
(Alternativa) Esegui l'utilità di automazione dalla riga di comando. | Se preferisci, puoi eseguire l'utilità di automazione dalla riga di comando anziché utilizzando l'interfaccia utente GitHub Actions. Utilizza il seguente comando:
| AWS DevOps |
| Operazione | Description | Competenze richieste |
|---|---|---|
Rivedi le creazioni PRs e le modifiche. | Per monitorare i risultati dell'esecuzione del GitHub flusso di lavoro, procedi come segue:
| AWS DevOps |
| Operazione | Description | Competenze richieste |
|---|---|---|
(Facoltativo) Pulisci PRs. | Chiusura abbandonata o non necessaria PRs. | AWS DevOps |
Risorse correlate
AWS Guida prescrittiva
GitHub documentazione