Spiegazione passo per passo: creazione di una pipeline per stack di test e produzione - AWS CloudFormation

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

Spiegazione passo per passo: creazione di una pipeline per stack di test e produzione

Immagina un processo di rilascio in cui invii un AWS CloudFormation modello, che AWS CloudFormation poi viene utilizzato per creare automaticamente uno stack di test. Dopo avere esaminato lo stack di test, puoi visualizzare in anteprima gli effetti delle modifiche apportate allo stack e decidere se implementarle. Per realizzare questo flusso di lavoro, puoi AWS CloudFormation creare lo stack di test, eliminare lo stack di test, creare un set di modifiche e quindi eseguire il set di modifiche. Tuttavia ciascuna operazione prevede l'interazione manuale con AWS CloudFormation. In questa procedura dettagliata, creeremo una CodePipeline pipeline che automatizza molte di queste azioni, aiutandoti a ottenere un flusso di lavoro di distribuzione continua con i tuoi stack. AWS CloudFormation

Prerequisiti

Questa procedura dettagliata presuppone che tu abbia utilizzato CodePipeline e sappia come funzionano pipeline AWS CloudFormation, modelli e stack. AWS CloudFormation Per ulteriori informazioni in merito CodePipeline, consulta la Guida per l'utente.AWS CodePipeline È inoltre necessario disporre di un bucket Amazon S3 nella stessa AWS regione in cui verrà creata la pipeline.

Importante

Il WordPress modello di esempio crea un'EC2istanza che richiede una connessione a Internet. Verifica di avere un'impostazione predefinita VPC e una sottorete che consentano il traffico verso Internet.

Panoramica della spiegazione passo per passo

Questa procedura dettagliata crea una pipeline per un sito di esempio WordPress in uno stack. La pipeline è suddivisa in tre fasi. Ogni fase deve contenere almeno un'operazione, ovvero un'attività eseguita dalla pipeline sul tuo artefatto (il tuo input). Una fase organizza le operazioni in una pipeline. CodePipeline deve completare tutte le azioni in una fase prima che questa elabori nuovi artefatti, ad esempio, se hai inviato un nuovo input per rieseguire la pipeline.

Al termine di questa procedura guidata, avrai una pipeline che esegue il flusso di elaborazione seguente:

  1. La prima fase della pipeline recupera un elemento sorgente (un AWS CloudFormation modello e i relativi file di configurazione) da un repository.

    Preparerai un artefatto che include un WordPress modello di esempio e lo caricherai in un bucket S3.

  2. Nella seconda fase la pipeline crea uno stack di test e attende la tua approvazione.

    Dopo avere esaminato lo stack di test, puoi scegliere di continuare con la pipeline originale o di creare e inviare un altro artefatto per apportare modifiche. Se approvi, questa fase elimina lo stack di test e la pipeline procede con la fase successiva.

  3. Nella terza fase la pipeline crea un set di modifiche su uno stack di produzione e attende la tua approvazione.

    Nell'esecuzione iniziale non avrai uno stack di produzione. Il set di modifiche mostra tutte le risorse che verranno create. AWS CloudFormation Se approvi, questa fase esegue il set di modifiche e crea il tuo stack di produzione.

Nota

AWS CloudFormation è un servizio gratuito. Tuttavia, ti verranno addebitate le AWS risorse, EC2 ad esempio l'istanza, che includi nel tuo stack alla tariffa corrente per ciascuna di esse. Per ulteriori informazioni sui AWS prezzi, consulta la pagina dei dettagli di ciascun prodotto all'indirizzo http://aws.amazon.com.

Fase 1: modifica dell'artefatto e caricamento in un bucket S3

Prima di creare la pipeline, è necessario configurare l'archivio e i file di origine. CodePipelinecopia questi file sorgente nell'archivio degli artefatti della pipeline e quindi li usa per eseguire azioni nella pipeline, come la creazione di uno stack. AWS CloudFormation

Quando utilizzi Amazon Simple Storage Service (Amazon S3) come repository di origine CodePipeline , è necessario comprimere i file sorgente prima di caricarli in un bucket S3. Il file compresso è un CodePipeline artefatto che può contenere un modello, un file di configurazione del AWS CloudFormation modello o entrambi. Forniamo un artefatto che contiene un modello di esempio e due file di configurazione del WordPress modello. I due file di configurazione specificano i valori dei parametri per il WordPress modello. CodePipeline li usa quando crea gli WordPress stack. Un file contiene i valori dei parametri per uno stack di test, l'altro per uno stack di produzione. Dovrai modificare i file di configurazione, ad esempio, per specificare il nome di una EC2 coppia di chiavi esistente di tua proprietà. Per ulteriori informazioni sugli artefatti, vedi AWS CloudFormation artefatti.

Dopo aver creato il tuo artefatto, potrai caricarlo in un bucket S3.

Per modificare e caricare l'artefatto
  1. Scaricate e aprite l'artefatto di esempio: https://s3.amazonaws.com/cloudformation-examples/ user- -single-instance.zip. guide/continuous-deployment/wordpress

    L'artefatto contiene tre file:

    • Il modello di esempio WordPress : wordpress-single-instance.yaml

    • Il file di configurazione del modello per lo stack di test: test-stack-configuration.json

    • Il file di configurazione del modello per lo stack di produzione: prod-stack-configuration.json

  2. Estrarre tutti i file e utilizzare un editor di testo per modificare i file di configurazione del modello.

    Apri i file di configurazione per vedere che contengono coppie chiave-valore che corrispondono ai parametri del WordPress modello. I file di configurazione specificano i valori dei parametri utilizzati dalla tua pipeline quando crea gli stack di test e di produzione.

    Modificare il ile test-stack-configuration.json per specificare i valori dei parametri per lo stack di test e il file prod-stack-configuration.json per lo stack di produzione.

    • Cambia i valori DBPassword e le DBRootPassword chiavi in password che puoi usare per accedere al tuo database. WordPress Come definito nel WordPress modello, i valori dei parametri devono contenere solo caratteri alfanumerici.

    • Modifica il valore della KeyName chiave con il nome di una EC2 coppia di chiavi esistente nella regione in cui creerai la pipeline.

  3. Aggiungere i file di configurazione modificati al file di artefatto originale (.zip), sostituendo i file duplicati.

    A questo punto hai un artefatto personalizzato che puoi caricare in un bucket S3.

  4. Caricare l'artefatto in un bucket S3 di cui si è proprietari.

    Prendere nota della posizione del file. Si dovrà specificare il percorso di questo file quando si creerà la pipeline.

    Note sugli artefatti e sul bucket S3:

    • Usa un bucket che si trova nella stessa AWS regione in cui creerai la tua pipeline.

    • CodePipeline richiede che il bucket sia abilitato al controllo delle versioni.

    • Puoi anche utilizzare servizi che non richiedono di comprimere i file prima di caricarli, ad esempio nel tuo GitHub repository CodeCommit di origine.

    • Gli artefatti possono contenere informazioni sensibili, ad esempio password. Limitare l'accesso in modo che solo gli utenti autorizzati possano visualizzare il file. Quando lo fai, assicurati che CodePipeline possa ancora accedere al file.

Ora hai un artefatto che CodePipeline può entrare nella tua pipeline. Nel passaggio successivo, specificherai la posizione dell'artefatto e costruirai la pipeline. WordPress

Fase 2: creazione dello stack della pipeline

Per creare la WordPress pipeline, utilizzerai un modello di esempio. AWS CloudFormation Oltre a creare la pipeline, il modello imposta AWS Identity and Access Management (IAM) ruoli di servizio per CodePipeline e AWS CloudFormation, un bucket S3 per l' CodePipeline artifact store e un argomento Amazon Simple Notification Service (AmazonSNS) a cui la pipeline invia notifiche, ad esempio notifiche sulle recensioni. Il modello di esempio semplifica il provisioning e la configurazione di queste risorse in un unico stack. AWS CloudFormation

Per ulteriori dettagli sulla configurazione della pipeline, vedi Operazioni della pipeline.

Importante

Il WordPress modello di esempio crea un'EC2istanza che richiede una connessione a Internet. Verifica che l'impostazione predefinita VPC e la sottorete consentano il traffico verso Internet.

Per creare lo stack della pipeline
  1. Scaricate il modello di esempio da https://s3.amazonaws.com/cloudformation-examples/user- guide/continuous-deployment/basic -pipeline.yml. Salvarlo sul computer.

  2. Apri la console all'indirizzo. AWS CloudFormation https://console.aws.amazon.com/cloudformation/

  3. Scegli una AWS regione che supporti CodePipeline e AWS CloudFormation.

    Per ulteriori informazioni, consulta la sezione relativa a regioni ed endpoint AWS nella Riferimenti generali di AWS.

  4. Seleziona Crea stack.

  5. In Specify template (Specifica modello), scegli Upload a template file (Carica un file modello), quindi scegli il modello appena scaricato, basic-pipeline.yml.

  6. Scegli Next (Successivo).

  7. Per Stack name (Nome stack), digitare sample-WordPress-pipeline.

  8. Nella sezione Parameters (Parametri) specificare i seguenti valori di parametro, quindi selezionare Next (Avanti). Quando impostate i parametri dello stack, se avete mantenuto gli stessi nomi per il WordPress modello e i relativi file di configurazione, potete utilizzare i valori predefiniti. In caso contrario, specificare i nomi file utilizzati.

    PipelineName

    Il nome della pipeline, ad esempio WordPress-test-pipeline.

    S3Bucket

    Nome del bucket S3 in cui hai salvato il tuo artefatto (file .zip).

    SourceS3Key

    Nome file dell'artefatto. Se hai salvato l'artefatto in una cartella, includila come parte del nome file, ad esempio folder/subfolder/wordpress-single-instance.zip.

    E-mail

    L'indirizzo e-mail a cui CodePipeline invia la notifica della pipeline, ad esempio. myemail@example.com

  9. Per questa procedura guidata, non è necessario aggiungere tag o specificare impostazioni avanzate, quindi selezionare Next (Avanti).

  10. Assicurati che il nome e il modello dello stack URL siano corretti, quindi scegli Crea pila.

  11. Per confermare che sei consapevole che ciò AWS CloudFormation potrebbe creare IAM risorse, seleziona la casella di controllo.

La creazione dello stack potrebbe richiedere alcuni minuti. AWS CloudFormation È possibile controllare l'avanzamento negli eventi per lo stack. Per ulteriori informazioni, consulta Visualizza le informazioni sullo stack dalla console CloudFormation .

Dopo aver creato lo stack, CodePipeline avvia la nuova pipeline. Per visualizzarne lo stato, consulta la CodePipeline console. Dall'elenco delle pipeline, scegli WordPress-test-pipeline.

Operazioni della pipeline

Questa sezione spiega le tre fasi della pipeline, utilizzando frammenti del modello di pipeline di esempio. WordPress

Fase 1: origine

La prima fase della pipeline è una fase di origine in cui si specifica la posizione del codice sorgente. Ogni volta che invii una revisione a questa posizione, riesegue la pipeline. CodePipeline

Il codice sorgente si trova in un bucket S3 e viene identificato dal relativo nome file. Questi valori sono stati specificati come valori dei parametri di input al momento della creazione dello stack della pipeline. Per consentire l'utilizzo dell'artefatto di origine nelle fasi successive, il frammento specifica la proprietà OutputArtifacts con il nome TemplateSource. Per utilizzare questo artefatto nelle fasi successive, è necessario specificare TemplateSource come artefatto di input.

- Name: S3Source Actions: - Name: TemplateSource ActionTypeId: Category: Source Owner: AWS Provider: S3 Version: '1' Configuration: S3Bucket: !Ref 'S3Bucket' S3ObjectKey: !Ref 'SourceS3Key' OutputArtifacts: - Name: TemplateSource

Fase 2: TestStage

Nella fase TestStage la pipeline crea lo stack di test, attende l'approvazione, quindi elimina lo stack di test.

Per l'CreateStackazione, la pipeline utilizza il file e il WordPress modello di configurazione del test per creare lo stack di test. Entrambi i file sono contenuti nell'artefatto di input TemplateSource, che viene introdotto dalla fase di origine. Il frammento utilizza la modalità di operazione REPLACE_ON_FAILURE. Se si la creazione dello stack non riesce la pipeline lo sostituisce, in questo modo non è più necessario eseguire la pulizia o risolvere i problemi dello stack prima di poter eseguire nuovamente la pipeline. La modalità di operazione è utile per effettuare in modo rapido iterazioni sugli stack di test. Per la RoleArn proprietà, il valore è un ruolo AWS CloudFormation di servizio dichiarato altrove nel modello.

L'operazione ApproveTestStack sospende la pipeline e invia una notifica all'indirizzo e-mail da te indicato al momento della creazione dello stack della pipeline. Mentre la pipeline è in pausa, puoi controllare lo stack di WordPress test e le sue risorse. Utilizzare CodePipeline per approvare o rifiutare questa azione. La proprietà CustomData include una descrizione dell'operazione che stai approvando, che la pipeline aggiunge all'e-mail di notifica.

Dopo aver approvato questa azione, CodePipeline passa all'DeleteTestStackazione ed elimina lo WordPress stack di test e le relative risorse.

- Name: TestStage Actions: - Name: CreateStack ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormation Version: '1' InputArtifacts: - Name: TemplateSource Configuration: ActionMode: REPLACE_ON_FAILURE RoleArn: !GetAtt [CFNRole, Arn] StackName: !Ref TestStackName TemplateConfiguration: !Sub "TemplateSource::${TestStackConfig}" TemplatePath: !Sub "TemplateSource::${TemplateFileName}" RunOrder: '1' - Name: ApproveTestStack ActionTypeId: Category: Approval Owner: AWS Provider: Manual Version: '1' Configuration: NotificationArn: !Ref CodePipelineSNSTopic CustomData: !Sub 'Do you want to create a change set against the production stack and delete the ${TestStackName} stack?' RunOrder: '2' - Name: DeleteTestStack ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormation Version: '1' Configuration: ActionMode: DELETE_ONLY RoleArn: !GetAtt [CFNRole, Arn] StackName: !Ref TestStackName RunOrder: '3'

Fase 3: ProdStage

La fase ProdStage della pipeline crea un set di modifiche sullo stack di produzione esistente, attende l'approvazione, quindi esegue il set di modifiche.

Un set di modifiche fornisce un'anteprima di tutte le modifiche che AWS CloudFormation verranno apportate allo stack di produzione prima di implementarle. Sulla prima pipeline eseguita non avrai uno stack di produzione in esecuzione. Il set di modifiche mostra le azioni AWS CloudFormation eseguite durante la creazione dello stack di test. Per creare il set di modifiche, l'CreateChangeSetazione utilizza il modello di WordPress esempio e la configurazione del modello di produzione dall'elemento TemplateSource di input.

Analogamente alla fase precedente, l'operazione ApproveChangeSet sospende la pipeline e invia una notifica e-mail. Mentre la pipeline è in pausa, è possibile visualizzare il set di modifiche per verificare tutte le modifiche proposte allo stack di produzione. WordPress CodePipeline Utilizzatelo per approvare o rifiutare questa azione rispettivamente per continuare o arrestare la pipeline.

Dopo aver approvato questa azione, l'ExecuteChangeSetazione esegue il set di modifiche, in modo da AWS CloudFormation eseguire tutte le azioni descritte nel set di modifiche. Per l'esecuzione iniziale, AWS CloudFormation crea lo stack di WordPress produzione. Con le esecuzioni successive AWS CloudFormation aggiorna lo stack.

- Name: ProdStage Actions: - Name: CreateChangeSet ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormation Version: '1' InputArtifacts: - Name: TemplateSource Configuration: ActionMode: CHANGE_SET_REPLACE RoleArn: !GetAtt [CFNRole, Arn] StackName: !Ref ProdStackName ChangeSetName: !Ref ChangeSetName TemplateConfiguration: !Sub "TemplateSource::${ProdStackConfig}" TemplatePath: !Sub "TemplateSource::${TemplateFileName}" RunOrder: '1' - Name: ApproveChangeSet ActionTypeId: Category: Approval Owner: AWS Provider: Manual Version: '1' Configuration: NotificationArn: !Ref CodePipelineSNSTopic CustomData: !Sub 'A new change set was created for the ${ProdStackName} stack. Do you want to implement the changes?' RunOrder: '2' - Name: ExecuteChangeSet ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormation Version: '1' Configuration: ActionMode: CHANGE_SET_EXECUTE ChangeSetName: !Ref ChangeSetName RoleArn: !GetAtt [CFNRole, Arn] StackName: !Ref ProdStackName RunOrder: '3'

Fase 3: Visualizza lo stack WordPress

Durante CodePipeline la pipeline, viene utilizzato AWS CloudFormation per creare stack di test e produzione. Per vedere lo stato di questi stack e il loro output, usa la console. AWS CloudFormation

Per visualizzare uno stack
  1. Apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation/.

  2. A seconda che la pipeline sia in fase di test o di produzione, scegliere lo stack Test-MyWordPressSite o Prod-MyWordPressSite.

  3. Per controllare lo stato dello stack, visualizzare gli eventi dello stack.

Se lo stack si trova nello stato non riuscito, visualizzare il motivo per individuare l'errore. Correggere l'errore ed eseguire nuovamente la pipeline. Se lo stack è nello CREATE_COMPLETE stato, visualizza i suoi output per avere un'idea URL del tuo WordPress sito.

L'hai usato con successo CodePipeline per creare un flusso di lavoro di distribuzione continua per un sito di esempio WordPress . Se invii modifiche al bucket S3, rileva CodePipeline automaticamente una nuova versione e quindi riesegue la pipeline. Questo flusso di elaborazione semplifica l'invio e il test delle modifiche prima di apportare modifiche al sito di produzione.

Fase 4: Eliminazione delle risorse

Per essere sicuro che non ti vengano addebitati servizi indesiderati, elimina le risorse.

Importante

Elimina gli stack di test e produzione WordPress prima di eliminare lo stack di pipeline. Lo stack di pipeline contiene un ruolo di servizio necessario per eliminare gli stack. WordPress Se hai eliminato prima lo stack di pipeline, puoi associare un altro ruolo di servizio Amazon Resource Name (ARN) agli WordPress stack, quindi eliminarli.

Per eliminare oggetti nello store degli artefatti
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il bucket S3 CodePipeline utilizzato come archivio degli artefatti della tua pipeline.

    Il nome del bucket segue il formato: stackname-artifactstorebucket-id. Se è stata seguita questa procedura guidata, il nome del bucket potrebbe essere simile all'esempio seguente: sample-WordPress-pipeline-artifactstorebucket-12345abcd12345.

  3. Eliminare tutti gli oggetti nel bucket S3 dello store di artefatti.

    Quando si elimina lo stack della pipeline nella fase successiva, questo bucket deve essere vuoto. Altrimenti, AWS CloudFormation non sarà possibile eliminare il bucket.

Per eliminare gli stack
  1. Dalla AWS CloudFormation console, scegli lo stack che desideri eliminare.

    Se gli WordPress stack creati dalla pipeline sono ancora in esecuzione, sceglili prima. Per impostazione predefinita, i nomi degli stack sono Test-MyWordPressSite e Prod-MyWordPressSite.

    Se hai già eliminato gli WordPress stack, scegli lo stack. sample-WordPress-pipeline

  2. Scegliere Actions (Operazioni), quindi Delete Stack (Elimina stack).

  3. Nel messaggio di conferma, scegliere Yes, Delete (Sì, elimina).

AWS CloudFormation elimina lo stack con tutte le risorse dello stack, ad esempio l'EC2istanza, l'argomento della notifica, il ruolo del servizio e la pipeline.

Ora che hai capito come creare un AWS CloudFormation flusso di lavoro di base CodePipeline, puoi utilizzare il modello e gli artefatti di esempio come punto di partenza per crearne uno personalizzato.

Consulta anche

Le risorse correlate seguenti possono rivelarsi utili durante l'utilizzo di questi parametri.

  • Per ulteriori informazioni sui parametri di AWS CloudFormation azione in CodePipeline, consultate il riferimento alla configurazione delle AWS CloudFormationazioni nella Guida per l'AWS CodePipeline utente.

  • Per i valori del modello di esempio per provider di operazioni, ad esempio per il campo Owner o i campi configuration, consulta il Riferimento per la struttura delle operazioni nella Guida per l'utente di AWS CodePipeline .

  • Per scaricare esempi di modelli di stack di pipeline nel nostro YAML JSON formato, consulta i tutorial nella sezione Create a pipeline with AWS CloudFormation nella Guida per l'utente.AWS CodePipeline

  • Per un esempio di file di configurazione del modello, consulta Artefatti di AWS CloudFormation.