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à.
Effettua il provisioning di un prodotto Terraform in AWS Service Catalog utilizzando un repository di codice
Creato dal dott. Rahul Sharad Gaikwad (AWS) e Tamilselvan P (AWS)
Ambiente: PoC o pilota | Tecnologie: infrastruttura; DevOps | Carico di lavoro: tutti gli altri carichi di lavoro |
Servizi AWS: AWS Service Catalog; Amazon EC2 |
Riepilogo
AWS Service Catalog supporta il provisioning self-service con governance per le configurazioni HashiCorp Terraform
Questo modello ti aiuta a distribuire risorse AWS utilizzando il codice Terraform. Il codice Terraform nel GitHub repository è accessibile tramite Service Catalog. Utilizzando questo approccio, integri i prodotti con i flussi di lavoro Terraform esistenti. Gli amministratori possono creare portafogli Service Catalog e aggiungere loro prodotti AWS Launch Wizard utilizzando Terraform.
I vantaggi di questa soluzione sono i seguenti:
Grazie alla funzionalità di rollback di Service Catalog, in caso di problemi durante la distribuzione, è possibile ripristinare il prodotto a una versione precedente.
È possibile identificare facilmente le differenze tra le versioni del prodotto. Ciò consente di risolvere i problemi durante la distribuzione.
Puoi configurare una connessione al repository in Service Catalogue, ad esempio to GitHub GitLab, o AWS CodeCommit. È possibile apportare modifiche al prodotto direttamente tramite il repository.
Per informazioni sui vantaggi complessivi di AWS Service Catalog, consulta What is Service Catalog.
Prerequisiti e limitazioni
Prerequisiti
Un account AWS attivo.
A GitHub BitBucket, o altro repository che contiene i file di configurazione Terraform in formato ZIP.
Interfaccia a riga di comando AWS Serverless Application Model (AWS SAM CLI), installata.
AWS Command Line Interface (AWS CLI), installata e configurata.
Vai, installato.
Python versione 3.9, installata.
AWS SAM CLI richiede questa versione di Python. Autorizzazioni per scrivere ed eseguire funzioni AWS Lambda e autorizzazioni per accedere e gestire prodotti e portafogli Service Catalog.
Architettura
Stack tecnologico Target
AWS Service Catalog
AWS Lambda
Architettura di destinazione
![Diagramma dell'architettura del provisioning di un prodotto Terraform in Service Catalog da un repository di codice](images/pattern-img/7d0d76e8-9485-4b3f-915f-481b6a7cdcd9/images/e83fa44a-4ca6-4438-a0d1-99f09a3541bb.png)
Il diagramma mostra il flusso di lavoro seguente:
Quando una configurazione Terraform è pronta, uno sviluppatore crea un file.zip che contiene tutto il codice terraform. Lo sviluppatore carica il file.zip nell'archivio di codice collegato a Service Catalog.
Un amministratore associa il prodotto Terraform a un portafoglio in Service Catalog. L'amministratore crea inoltre un vincolo di avvio che consente agli utenti finali di fornire il prodotto.
In Service Catalog, gli utenti finali avviano le risorse AWS utilizzando la configurazione Terraform. Possono scegliere quale versione del prodotto distribuire.
Strumenti
Servizi e strumenti AWS
AWS Lambda è un servizio di elaborazione che ti aiuta a eseguire codice senza dover fornire o gestire server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di calcolo che utilizzi.
AWS Service Catalog ti aiuta a gestire centralmente i cataloghi di servizi IT approvati per AWS. Gli utenti finali possono distribuire rapidamente soltanto i servizi IT approvati di cui hanno bisogno, in accordo con i vincoli stabiliti dall'organizzazione.
Altri servizi
Archivio di codice
Se hai bisogno di configurazioni Terraform di esempio da distribuire tramite Service Catalog, puoi utilizzare le configurazioni nell'Amazon Macie GitHub Organization Setup Using Terraform repository
Best practice
Invece di fornire i valori per le variabili nel file di configurazione Terraform (
terraform.tfvars
), configura i valori delle variabili quando avvii il prodotto tramite Service Catalog.Concedi l'accesso al portafoglio solo a utenti o amministratori specifici.
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 |
---|---|---|
(Facoltativo) Installa Docker. | Se desideri eseguire le funzioni AWS Lambda nel tuo ambiente di sviluppo, installa Docker. Per ulteriori informazioni, consulta la sezione Installazione del motore Docker | DevOps ingegnere |
Installa il motore AWS Service Catalog per Terraform. |
| DevOps ingegnere, amministratore AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea una connessione al GitHub repository. |
| Amministratore AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea il prodotto Service Catalog. |
| Amministratore AWS |
Crea un portfolio. |
| Amministratore AWS |
Aggiungi il prodotto Terraform al portafoglio. |
| Amministratore AWS |
Creare la policy d'accesso. |
| Amministratore AWS |
Crea una politica di fiducia personalizzata. |
| Amministratore AWS |
Aggiungi un vincolo di lancio al prodotto Service Catalog. |
| Amministratore AWS |
Concedi l'accesso al prodotto. |
| Amministratore AWS |
Avvia il prodotto. |
| DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Convalida la distribuzione. | Esistono due macchine a stati AWS Step Functions per il flusso di lavoro di provisioning del Service Catalog:
Si controllano i registri della macchina a stati per confermare che il
| DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Eliminare i prodotti forniti. |
| DevOps ingegnere |
Rimuovi AWS Service Catalog Engine per Terraform. |
| Amministratore AWS |
Risorse correlate
Documentazione AWS
Documentazione Terraform
Informazioni aggiuntive
Politica di accesso
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/servicecatalog:provisioning": "true" } } }, { "Action": [ "s3:CreateBucket*", "s3:DeleteBucket*", "s3:Get*", "s3:List*", "s3:PutBucketTagging" ], "Resource": "arn:aws:s3:::*", "Effect": "Allow" }, { "Action": [ "resource-groups:CreateGroup", "resource-groups:ListGroupResources", "resource-groups:DeleteGroup", "resource-groups:Tag" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "tag:GetResources", "tag:GetTagKeys", "tag:GetTagValues", "tag:TagResources", "tag:UntagResources" ], "Resource": "*", "Effect": "Allow" } ] }
Policy di trust
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GivePermissionsToServiceCatalog", "Effect": "Allow", "Principal": { "Service": "servicecatalog.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account_id:root" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:PrincipalArn": [ "arn:aws:iam::accounti_id:role/TerraformEngine/TerraformExecutionRole*", "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogExternalParameterParserRole*", "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogTerraformOSParameterParserRole*" ] } } } ] }