GNU/Linux >> Linux Esercitazione >  >> Linux

Come automatizzare le tue risorse AWS con i modelli CloudFormation

AWS CloudFormation è un servizio che consente agli amministratori di sistema di configurare e gestire un'intera raccolta di risorse AWS, comprese le loro configurazioni, dipendenze e interrelazioni tra di esse, in un'unica istruzione. Possono anche apportare modifiche all'infrastruttura esistente senza interrompere o ridistribuire le applicazioni in esecuzione su di essa.

AWS Cloudformation ti consente di configurare la tua infrastruttura come codice. È fondamentalmente un'infrastruttura come motore di codice che funziona nel cloud e aiuta gli utenti a fornire e gestire elaborazione, archiviazione e altre risorse. Un modello CloudFormation è un file JSON con istruzioni su come creare o aggiornare le risorse AWS. Possiamo utilizzare AWS CLI, SDK AWS come boto3 o il servizio AWS CloudFormation per creare modelli.

CloudFormation offre molti vantaggi come:

  • Facilità d'uso:CloudFormation utilizza un formato modello che ti consente di descrivere tutti gli attributi e le relazioni della tua risorsa AWS in un'unica posizione.
  • Agilità go-to-market:CloudFormation ti consente di creare e distribuire le tue risorse AWS come codice.
  • Alto livello di automazione:CloudFormation trasforma il codice di alto livello in un insieme di semplici modelli che possono essere utilizzati per creare o aggiornare le risorse AWS.

Se stai cercando di automatizzare le distribuzioni dei carichi di lavoro su AWS, utilizzare CloudFormation è uno dei modi migliori per farlo.

In questo articolo, ti mostreremo una breve introduzione a CloudFormation e utilizzeremo CloudFormation per automatizzare le tue risorse AWS. Questa guida utilizza le risorse S3 per dimostrare. Dopo questo tutorial, sarai in grado di creare, aggiornare ed eliminare un certo numero di risorse AWS utilizzando CloudFormation. Puoi anche imparare come iniziare a creare il tuo modello CloudFormation.

Prerequisiti

Per seguire questo tutorial, sono necessari i seguenti prerequisiti:

  • AWS CLI installata sul computer locale nella versione 1.6.1 o successiva e configurata con una regione predefinita. La stessa versione dovrebbe essere configurata anche per Python 2.6 o 3+.
  • Una conoscenza di base dei servizi AWS e un po' di esperienza sulla Console AWS.

Creazione del tuo primo stack

Ora che hai i prerequisiti pronti, iniziamo configurando e creando il tuo primo stack.

1. Apri il tuo browser preferito. Accedi a questo repository GitHub e scarica tre file sul tuo disco rigido locale.

  • createstick.json
  • updatestack1.json
  • updatestack2.json

2. Ora vai alla tua Console AWS ---> CloudFormation .

3. Vedrai la seguente schermata. Fai clic su Crea stack ---> Con nuove risorse .

4. Vedrai la seguente schermata. Fai clic su Il modello è pronto ---> Carica un file modello ---> Scegli file ----> Scegli il tuo createstack.json file scaricato in precedenza---> Avanti .

Quando crei un nuovo stack, devi fornire un modello per il tuo stack. Puoi farlo in tre modi:

  • Il modello è pronto :scegli questa opzione se hai già il tuo template in mano. In caso contrario, vai all'opzione successiva.
  • Utilizza un modello di esempio :usa questa opzione per darti un vantaggio nella creazione del tuo modello. La guida per l'utente di AWS fornisce diversi esempi di modelli CloudFormation.
  • Ccrea un modello in Designer :AWS CloudFormation Designer è il modo più recente per creare il tuo stack. Utilizza un'interfaccia drag-and-drop, simile ad altri strumenti popolari come Sharepoint, per aiutarti a creare il tuo modello.

Questa demo utilizza la prima opzione, "Il modello è pronto", poiché hai già i modelli in mano (i file che hai scaricato sul tuo disco).

Puoi aprire il createstick.json file nel tuo editor per dargli un'occhiata. Vedrai le seguenti righe in createstick.json file.

  • "Risorse":{ è la sezione creata da AWS CloudFormation. È un raggruppamento di tutte le risorse fisiche che creerai.
  • "catpics":è la risorsa logica, il cui tipo è un bucket S3.
  • "Type":"AWS::S3::Bucket" è la risorsa fisica che creerà AWS CloudFormation.

5. Nella schermata successiva, fornisci un nome per il tuo stack (htf ) e fare clic su Avanti . Ogni stack richiede un nome univoco all'interno della regione AWS in modo che tu possa differire tra loro. Non puoi usare caratteri speciali qui, solo lettere, numeri e trattini bassi (senza spazi). AWS genera automaticamente uno stack ID univoco per una facile identificazione.

6. Nella schermata successiva, mantieni l'impostazione predefinita e fai clic su Avanti.

7. Nella schermata successiva, mantieni l'impostazione predefinita e fai clic su Crea stack .

A questo punto, AWS CloudFormation carica il modello e crea lo stack per te. CloudFormation esamina ogni singola sezione del modello e crea una risorsa fisica corrispondente per esso. In alcuni casi, AWS CloudFormation eseguirà diversi controlli sul tuo modello per assicurarsi che tutto sia a posto. Se rileva qualcosa che non va, riceverai un messaggio di errore che descrive qual è il problema e come risolverlo.

Il processo di creazione richiede circa 4-5 minuti per crearlo. Puoi vedere cosa sta succedendo guardando lo stato dello stack sulla dashboard di CloudFormation, come mostrato di seguito. Puoi vedere i gatti risorse logiche sul lato sinistro e in ciascuna di queste risorse puoi vedere le risorse fisiche che AWS CloudFormation sta creando per esse (CREATE_IN_PROGRESS ).

Puoi passare alla scheda delle risorse per vedere le risorse fisiche create per questo stack. In questo caso, si tratta di un bucket S3 denominato catpics con ID risorse fisiche  di htf-catpics-1roqn54xwm3of, come mostrato di seguito.

8. Ora, accedi alla dashboard di S3. Nella dashboard S3 puoi vedere gli oggetti creati nel bucket. In questo caso, il nome dello stack per il bucket S3 è htf-catpics-1roqn54xwm3of , come puoi vedere di seguito.

Puoi vedere che il nome del bucket segue questo schema:il nome del tuo stack(htf )-il nome dello stack logico(catpics )-una stringa casuale(1roqn54xwm3of ). Questo schema è molto importante da sapere. Quando non specifichi gli ID delle tue risorse fisiche nel modello, AWS CloudFormation utilizza questo modello per creare il nome per le tue risorse. Il potere di questo è che ora puoi utilizzare lo stesso modello per creare più pile; AWS CloudFormation gestirà automaticamente la denominazione univoca per te!

Per un servizio come S3, un nome univoco è molto importante; il nome del bucket deve essere univoco a livello globale per poter archiviare i dati al suo interno. I nomi dei tuoi bucket non possono essere gli stessi. Non riuscirai a inserire gli oggetti nel bucket se provi a denominarlo con lo stesso nome.

È importante capire perché questo è importante. Perché con CloudFormation, si consiglia di non nominare esplicitamente l'ID della risorsa fisica nel modello. Lascia invece che AWS CloudFormation ne crei uno automaticamente per te. Ciò significa che puoi riutilizzare il tuo modello per creare più stack con risorse diverse senza preoccuparti di conflitti di denominazione. Puoi utilizzare il tuo modello una, dieci o cento volte e CloudFormation gestirà le modifiche alla denominazione di conseguenza.

Aggiornare il tuo stack

Ora che hai creato il tuo primo stack utilizzando AWS CloudFormation, esaminiamo come aggiornare lo stack. Come aggiornare uno stack è un concetto molto importante da comprendere, sia per l'utilizzo in produzione che per il tuo esame. Probabilmente ti verrà chiesto durante l'esame di modificare qualcosa nel tuo modello, o forse devi aggiornare qualcosa nel tuo stack.

In questa sezione, apporterai alcune modifiche ai modelli e utilizzerai quei modelli aggiornati per aggiornare il tuo stack e valutare quali modifiche vengono apportate alle tue risorse.

In genere, quando si aggiornano gli stack in CloudFormation. Prenderai il modello che hai utilizzato per creare uno stack e aggiungere nuove risorse, aggiornare le risorse esistenti o rimuovere le risorse esistenti.

1. Apri updatestack1.json file scaricato in precedenza nel tuo editor, vedrai i seguenti blocchi di codice. Confrontiamo questo modello con createstick.json modello che hai usato in precedenza. Puoi vedere che aggiungeremo un'ulteriore risorsa logica denominata dogpics . Ancora più importante, non sono state apportate modifiche alle risorse logiche esistenti, ovvero le catpic esistenti . Le risorse catpics non sono state modificate o rimosse. Aggiungerò solo una risorsa logica aggiuntiva, che è dogpics .

2. Accedi alla dashboard di CloudFormation. Seleziona il tuo stack (htf ) e fai clic su Aggiorna .

3. Nella schermata successiva, seleziona Sostituisci modello corrente ---> Carica un file modello ---> Scegli File ---> Seleziona il tuo updatestack1.json file ---> Avanti .

4. Nella schermata successiva, fai clic su Avanti ---> Avanti ---> Aggiorna impila, come mostrato di seguito. Puoi vedere che CloudFormation ti mostra le modifiche che verranno apportate. In questo caso, abbiamo aggiunto un ID logico denominato dogpics. CloudFormation ci mostra anche l'azione che verrà eseguita(Aggiungi ) e il  tipo di risorsa logica (AWS::S3::Bucket). La Sostituzione la colonna è vuota.

Proprio come quando crei uno stack, puoi guardare gli eventi di aggiornamento dalla pagina dello stack. Tutti gli aggiornamenti vengono eseguiti da CloudFormation. In questo caso, ha passato un ID risorsa logica aggiuntivo, che è dogpics .

Una volta completato il processo di aggiornamento, puoi vedere di seguito che abbiamo entrambi i catpics e i dogpics risorse nel nostro stack.

Passa alla dashboard S3 e vedrai un bucket dogpics aggiuntivo denominato htf-dogpics-4qesklu84ugq è stato creato. Puoi vedere che la denominazione del bucket utilizzando lo stesso modello segue la stringa nome dello stack-nome dello stack logico-random.

A questo punto, aggiungiamo solo nuove risorse logiche alle nostre risorse, il che è piuttosto semplice ea basso rischio. Ora ti mostreremo come rimuovere le risorse dal tuo stack.

Rimuoveremo la risorsa dogpics dal nostro stack. Questo è più rischioso dell'aggiunta perché l'eliminazione di risorse potrebbe rompere il tuo stack. Dato che stiamo ancora imparando, facciamo pratica eliminando la nostra risorsa dogpics per vedere cosa succede

5. Accedi alla dashboard di CloudFormation. Seleziona il tuo htf pila, fai clic su Aggiorna ---> Sostituisci il modello corrente ---> Scegli file ---> questa volta selezioneremo il createstack.json file di nuovo ---> Avanti ---> Avanti ---> Avanti.

6. Nella schermata successiva, fai clic su Aggiorna stack . Sotto l'Anteprima del set di modifiche , puoi vedere l'Azione la colonna ora è:Rimuovi . In questo caso, CloudFormation rimuove le dogpics risorsa e le risorse fisiche corrispondenti(htf-dogpics-4qesklu84ugq ).

Passa alla dashboard S3, puoi vedere che il bucket dogpics è ora sparito dalla dashboard S3.

Sarai il DELETE_COMPLETE evento nel tuo evento Stack.

Rimuovere le risorse logiche è un po' rischioso perché può eliminare cose, ma quel rischio è associato solo alle risorse logiche che hai rimosso dal modello (le risorse dogpics). Finora, non abbiamo apportato modifiche a nessuna delle altre risorse logiche esistenti come le risorse catpics. Quindi le risorse fisiche catpics non possono essere influenzate da alcun aggiornamento dello stack. C'è un'altra opzione per aggiornare il tuo stack. Usando questa opzione, potremmo cambiare la configurazione per una risorsa logica esistente.

7. Apri updatestack2.json file che hai scaricato in precedenza nel tuo editor, vedrai il seguente blocco di codice.

Il file updatestack2.json è molto simile al modello createstack.json che hai utilizzato in precedenza, ad eccezione di due differenze principali. Aggiungiamo ancora la seconda risorsa logica, dogpics. Ma abbiamo anche apportato una modifica ai catpic.

Abbiamo aggiunto una sezione aggiuntiva della configurazione, chiamata Proprietà, in cui possiamo definire proprietà aggiuntive per una determinata risorsa logica. In questo caso, creeremo un bucket S3. Impostiamo esplicitamente il nome del bucket della risorsa fisica come catsareawesome -come forgiare .

8. Passa alla dashboard di CloudFormation. Seleziona il tuo htf stack, fai clic su Aggiorna ---> Sostituisci il modello corrente ---> Scegli file ---> questa volta selezioneremo il  updatestack2.json file ---> Avanti ---> Avanti ---> Avanti.

9. Nella schermata successiva, fai clic su Aggiorna stack . Nota l'Anteprima del set di modifiche pannello, puoi quali saranno gli effetti di questo aggiornamento.

Il primo cambiamento sembra familiare. Aggiungeremo un'ulteriore risorsa logica per dogpics , che sarà un bucket S3. Ma vediamo anche una Modifica azione. E la modifica è in realtà la cosa più rischiosa che potresti fare per uno stack CloudFormation.

Il motivo è che le risorse esistenti, che sono in atto e potenzialmente utilizzate da altri ambienti, potrebbero essere modificate dall'aggiornamento dello stack. Pertanto, la modifica delle risorse logiche esistenti è potenzialmente più rischiosa da utilizzare.

Ci sono 3 possibilità che una risorsa fisica sia influenzata quando aggiorni uno stack in questo modo. La prima possibilità è che una risorsa venga aggiornata senza alcuna interruzione del servizio.

La seconda possibilità è che la risorsa venga aggiornata e il servizio venga interrotto da un certo livello di interruzione. Ad esempio, quando aggiorni lo stack per modificare le dimensioni dell'istanza EC2. Quando esegui questa operazione, dovrai riavviare manualmente l'istanza EC2. Verrà lanciata una nuova AMI e potresti riscontrare dei tempi di inattività. Ma una volta lanciata la nuova AMI, il tuo servizio sarà immediatamente disponibile.

L'ultima possibilità è che l'aggiornamento elimini l'intera risorsa fisica esistente e la sostituisca con una nuova(Sostituzione ). Questa è la possibilità più rischiosa durante l'aggiornamento del tuo stack CloudFormation. Dovresti davvero prestare attenzione quando lo fai. Quando si verifica questo tipo di sostituzione, esegui la Sostituzione la colonna è True , come mostrato nello screenshot qui sotto.

Nella dashboard di CloudFormation Stacks, puoi vedere che dice "L'aggiornamento richiesto richiede la creazione di una nuova risorsa fisica; quindi la creazione di una". Quindi CloudFormation elimina la risorsa esistente e ne crea una nuova.

Passa alla dashboard di S3, vedrai che il secchio catpics ora è sparito e uno nuovo, catsareawesome -come forgiare , è stato creato. Tieni presente che forniamo esplicitamente il nome fisico (catsareawesome-howtoforge) per una risorsa all'interno di un modello CloudFormation, non applica caratteri casuali al nome della risorsa.

Il problema è che se utilizziamo questo modello per creare un altro stack CloudFormation, fallirebbe perché tenterebbe di creare un altro bucket con lo stesso identico nome. E non puoi avere 2 bucket con lo stesso nome in nessun account AWS. Riceverai il seguente errore quando tenti di creare un altro bucket con lo stesso identico nome.

Eliminazione degli stack di CloudFormation

Ora che abbiamo modificato il modello e aggiornato il nostro stack, dobbiamo assicurarci di eliminare lo stack dopo aver completato il lavoro su di esso. Se non eliminiamo gli stack inutilizzati, questi rimarranno nella nostra dashboard CloudFormation Stack a tempo indeterminato. Dovremmo andare lì manualmente ed eliminarlo.

Dalla dashboard di CloudFormation, seleziona il tuo stack, quindi seleziona Elimina . Quando CloudFormation elimina lo stack, elimina anche tutte le risorse all'interno di quello stack. Non è possibile eliminare solo una risorsa come il bucket S3 o l'istanza EC2. Questa azione viene eseguita in base alla progettazione.

Conclusione

In questa guida, abbiamo esaminato come vengono creati e modificati gli stack di CloudFormation. Abbiamo esaminato alcuni dei modi per modificare i modelli e come aggiornare gli stack esistenti. Abbiamo quindi esaminato alcune delle possibilità associate all'aggiornamento degli stack. Infine, abbiamo esaminato come eliminare gli stack di CloudFormation dopo aver finito di lavorarci.

Si prega di lasciare un commento qui sotto se avete domande o suggerimenti. Grazie per aver letto!


Linux
  1. Come navigare nel desktop GNOME Linux con solo una tastiera

  2. Come estendere le funzionalità del tuo desktop Linux con PlexyDesk

  3. Come eseguire il benchmark del tuo sistema (CPU, File IO, MySQL) con Sysbench

  4. Come integrare Jenkins con CloudFormation e Step Functions

  5. Come proteggere il tuo server Ubuntu con CSF Firewall

Come distribuire il cluster Kubernetes su AWS con Amazon EKS

Come automatizzare le attività con cron Jobs in Linux

Come monitorare i tuoi server Linux con Checkmk

Procedura:proteggere il tuo server Ubuntu o Debian con IPTables

Come bloccare il tuo server CentOS con IPtables

Come mappare l'IP statico sul tuo dominio (con l'esempio di GoDaddy)