

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

# Configura una CI/CD pipeline per la migrazione del database utilizzando Terraform
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform"></a>

*Dott. Rahul Sharad Gaikwad, Ashish Bhatt, Aniket Dekate, Ruchika Modi, Tamilselvan P, Nadeem Rahaman, Aarti Rajput e Naveen Suthar, Amazon Web Services*

## Riepilogo
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-summary"></a>

Questo modello prevede la creazione di una pipeline di integrazione e distribuzione continua (CI/CD) per la gestione delle migrazioni dei database in modo affidabile e automatizzato. Copre il processo di fornitura dell'infrastruttura necessaria, la migrazione dei dati e la personalizzazione delle modifiche allo schema utilizzando Terraform, che è uno strumento di infrastruttura come codice (IaC).

In particolare, il modello imposta una CI/CD pipeline per migrare un database Microsoft SQL Server locale su Amazon Relational Database Service (Amazon RDS) su. AWS Puoi anche utilizzare questo modello per migrare un database SQL Server che si trova su una macchina virtuale (VM) o in un altro ambiente cloud su Amazon RDS.

Questo modello affronta le seguenti sfide associate alla gestione e alla distribuzione dei database:
+ Le implementazioni manuali dei database richiedono molto tempo, sono soggette a errori e mancano di coerenza tra gli ambienti.
+ Il coordinamento del provisioning dell'infrastruttura, delle migrazioni dei dati e delle modifiche allo schema può essere complesso e difficile da gestire.
+ Garantire l'integrità dei dati e ridurre al minimo i tempi di inattività durante gli aggiornamenti del database è fondamentale per i sistemi di produzione.

Questo modello offre i seguenti vantaggi:
+ Semplifica il processo di aggiornamento e implementazione delle modifiche al database implementando una CI/CD pipeline per le migrazioni dei database. Ciò riduce il rischio di errori, garantisce la coerenza tra gli ambienti e riduce al minimo i tempi di inattività.
+ Aiuta a migliorare l'affidabilità, l'efficienza e la collaborazione. Consente un time-to-market più rapido e tempi di inattività ridotti durante gli aggiornamenti del database.
+ Ti aiuta ad adottare DevOps pratiche moderne per la gestione dei database, il che porta a una maggiore agilità, affidabilità ed efficienza nei processi di distribuzione del software.

## Prerequisiti e limitazioni
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-prereqs"></a>

**Prerequisiti**
+ Un attivo Account AWS
+ Terraform 0.12 o versione successiva installato sul computer locale (per le istruzioni, consulta la documentazione di [Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli))
+ [Terraform AWS Provider versione 3.0.0 o successiva da HashiCorp (consulta il repository di questo provider) GitHub ](https://github.com/hashicorp/terraform-provider-aws)
+ Politica sui privilegi minimi AWS Identity and Access Management (IAM) (vedi il post sul blog [Tecniche per scrivere](https://aws.amazon.com/blogs/security/techniques-for-writing-least-privilege-iam-policies/) politiche IAM con privilegi minimi)

## Architecture
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-architecture"></a>

Questo modello implementa la seguente architettura, che fornisce l'infrastruttura completa per il processo di migrazione del database.

![\[Architettura di pipeline CI/CD per la migrazione di un database SQL Server locale su Amazon RDS su AWS.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/87845d9f-8e6e-4c51-b9ee-9e7833671d05/images/a1e95458-419a-4de9-85ef-b17d8340700a.png)


In questa architettura:
+ Il database di origine è un database SQL Server locale, su una macchina virtuale (VM) o ospitato da un altro provider di servizi cloud. Il diagramma presuppone che il database di origine si trovi in un data center locale.
+ I data center locali AWS sono collegati tramite una VPN o una connessione. AWS Direct Connect Ciò fornisce comunicazioni sicure tra il database di origine e l' AWS infrastruttura.
+ Il database di destinazione è un database Amazon RDS ospitato all'interno del cloud privato virtuale (VPC) con l'aiuto di una AWS pipeline di provisioning del database.
+ AWS Database Migration Service (AWS DMS) replica il database locale su. AWS Viene utilizzato per configurare la replica del database di origine nel database di destinazione.

Il diagramma seguente mostra l'infrastruttura configurata con diversi livelli del processo di migrazione del database, che prevede il provisioning, la AWS DMS configurazione e la convalida.

![\[Dettagli della pipeline CI/CD del processo di migrazione dall'ambiente locale ad AWS.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/87845d9f-8e6e-4c51-b9ee-9e7833671d05/images/3aca17e5-6fd7-4317-b578-ab5e485c6efb.png)


In questo processo:
+ La pipeline di convalida convalida tutti i controlli. La pipeline integrata passa alla fase successiva quando tutte le convalide necessarie sono state completate.
+ La pipeline di provisioning del DB è composta da varie AWS CodeBuild fasi che eseguono azioni Terraform sul codice Terraform fornito per il database. Una volta completati questi passaggi, distribuisce le risorse nell'obiettivo. Account AWS
+ La AWS DMS pipeline è composta da varie CodeBuild fasi che eseguono i test e quindi forniscono l' AWS DMS infrastruttura per eseguire la migrazione utilizzando IaC.

## Tools (Strumenti)
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-tools"></a>

**Servizi AWS e strumenti**
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)è un servizio di integrazione continua completamente gestito che compila codice sorgente, esegue test e produce pacchetti ready-to-deploy software.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)è un servizio di distribuzione continua completamente gestito che consente di automatizzare le pipeline di rilascio per aggiornamenti rapidi e affidabili di applicazioni e infrastrutture.
+ [Amazon Relational Database Service (Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)) ti aiuta a configurare, gestire e scalare un database relazionale in. Cloud AWS
+ [Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) S3) è un servizio di storage di oggetti che offre scalabilità, disponibilità dei dati, sicurezza e prestazioni.
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) ti aiuta a migrare gli archivi di dati all'interno Cloud AWS o tra combinazioni di configurazioni cloud e locali.

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

**Archivio di codice**

Il codice per questo modello è disponibile nel GitHub [Database Migration DevOps Framework utilizzando il repository di esempi Terraform](https://github.com/aws-samples/aws-terraform-db-migration-framework-samples).

## Best practice
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-best-practices"></a>
+ Implementa test automatici per la migrazione del database per verificare la correttezza delle modifiche allo schema e l'integrità dei dati. Ciò include test unitari, test di integrazione e end-to-end test.
+ Implementa una solida strategia di backup e ripristino per i tuoi database, soprattutto prima della migrazione. Ciò garantisce l'integrità dei dati e fornisce un'opzione di riserva in caso di guasti.
+ Implementa una solida strategia di rollback per annullare le modifiche al database in caso di errori o problemi durante la migrazione. Ciò potrebbe comportare il ripristino a uno stato precedente del database o il ripristino di singoli script di migrazione.
+ Imposta meccanismi di monitoraggio e registrazione per tenere traccia dell'avanzamento e dello stato delle migrazioni del database. Questo ti aiuta a identificare e risolvere rapidamente i problemi.

## Epiche
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-epics"></a>

### Configura la tua workstation locale
<a name="set-up-your-local-workstation"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura e configura Git sulla tua workstation locale. | Installa e configura Git sulla tua workstation locale seguendo le istruzioni nella [documentazione di Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). | DevOps ingegnere | 
| Crea una cartella di progetto e aggiungi i file dal GitHub repository. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/set-up-ci-cd-pipeline-for-db-migration-with-terraform.html) | DevOps ingegnere | 

### Fornisci l'architettura di destinazione
<a name="provision-the-target-architecture"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Aggiorna i parametri richiesti. | Il `ssm-parameters.sh` file memorizza tutti i AWS Systems Manager parametri richiesti. Puoi configurare questi parametri con i valori personalizzati per il tuo progetto.Nella `setup/db-ssm-params` cartella sulla workstation locale, aprite il `ssm-parameters.sh` file e impostate questi parametri prima di eseguire la CI/CD pipeline. | DevOps ingegnere | 
| Inizializza la configurazione Terraform. | Nella `db-cicd-integration` cartella, inserisci il seguente comando per inizializzare la tua directory di lavoro che contiene i file di configurazione Terraform:<pre>terraform init</pre> | DevOps ingegnere | 
| Visualizza l'anteprima del piano Terraform. | Per creare un piano Terraform, inserisci il seguente comando:<pre>terraform plan -var-file="terraform.sample"  </pre>Terraform valuta i file di configurazione per determinare lo stato di destinazione per le risorse dichiarate. Quindi confronta lo stato di destinazione con lo stato attuale e crea un piano. | DevOps ingegnere | 
| Verifica il piano. | Rivedi il piano e conferma che configuri l'architettura richiesta nel tuo obiettivo Account AWS. | DevOps ingegnere | 
| Distribuire la soluzione. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/set-up-ci-cd-pipeline-for-db-migration-with-terraform.html) | DevOps ingegnere | 

### Verifica della distribuzione
<a name="verify-the-deployment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Convalida la distribuzione. | Verifica lo stato della `db-cicd-integration` pipeline per confermare che la migrazione del database sia completa.1. Accedi a Console di gestione AWS, quindi apri la [AWS CodePipeline console](https://console.aws.amazon.com/codesuite/codepipeline/home).2. Nel riquadro di navigazione, scegli **Pipelines.**3. Scegliete la `db-cicd-integration` pipeline.4. Verifica che l'esecuzione della pipeline sia stata completata correttamente. | DevOps ingegnere | 

### Pulisci l'infrastruttura dopo l'uso
<a name="clean-up-infrastructure-after-use"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Pulisci l'infrastruttura. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/set-up-ci-cd-pipeline-for-db-migration-with-terraform.html) | DevOps ingegnere | 

## Risorse correlate
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-resources"></a>

**AWS documentazione**
+ [Iniziare con un prodotto Terraform](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-Terraform.html)

**Documentazione Terraform**
+ [Installazione di Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli)
+ [Configurazione del backend Terraform](https://developer.hashicorp.com/terraform/language/backend)
+ [Documentazione Terraform Provider AWS](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)