prd-021 - amazon cloudformation

13
Community - Cloud AWS su Google+ Cloud AWS Amazon Web Services cloud-aws.com Amazon CloudFormation Hangout 21 del 28.07.2014 Davide Riboldi Massimo Della Rovere Oggi vediamo il servizio di Amazon CloudFormation per gestire le risorse AWS tramite dei template. CLOUD AWS #cloudaws

Upload: cloud-aws

Post on 13-Jul-2015

47 views

Category:

Technology


0 download

TRANSCRIPT

Community - Cloud AWS su Google+

Cloud AWS

Amazon Web Services

cloud-aws.com

Amazon CloudFormation

Hangout 21 del 28.07.2014

● Davide Riboldi● Massimo Della Rovere

Oggi vediamo il servizio di Amazon CloudFormation per gestire le risorse AWS tramite dei template.

CLOUD AWS

#cloudaws

Amazon CloudFormation - Introduzione

Cloud AWS

● CloudFormation fornisce agli sviluppatori e amministratori di sistema un modo per poter gestire le risorse AWS attraverso l’utilizzo di template.

● È possibile scrivere un template da zero, oppure iniziare con uno dei modelli di esempio che vengono forniti da AWS nella documentazione ufficiale.

● Il servizio può essere usato anche per non ripetere sempre le stesse operazioni manuali sia esse eseguite da console o da linea di comando.

Amazon CloudFormation - (esempio)

Cloud AWS

EC2 EC2

EC2 EC2

RDS RDSTem

plate

CloudFormation

Amazon CloudFormation - (servizi supportati)

Cloud AWS

Autoscaling CloudTrail

DynamoDB EC2

IAM Kinesis

RDS Route 53

Formation

S3

SNS

SQS

CloudWatch

Beanstalk

Redshift

CloudFront

ElastiCache

OpsWorks

Amazon CloudFormation - Lo stack

Cloud AWS

● Per poter utilizzare il servizio CloudFormation bisogna creare degli stack, i quali contengono le risorse aws che devo essere avviate e coordinate.

● Uno stack è un insieme di risorse che derivano dal deploy di un template. È possibile creare uno stack da un template memorizzato su Amazon S3.

● Sulla base di questo e di tutte le dipendenze si determinano le risorse che devono essere create e l’ordine in cui vengono create all’interno dello stack.

Amazon CloudFormation - Lo stack (modifica)

Cloud AWS

● Uno stack esistente può essere anche modificato, basta sottomettere un nuovo template o lo stesso template modificato per le nuove risorse.

● In molti casi i cambiamenti verranno apportati senza pregiudicare il funzionamento dell’applicazione, tuttavia questa condizione non è sempre possibile.

● Ad esempio per aggiornare una AMI su un’istanza EC2, il servizio creerà una nuova risorsa da inserire nello stack, eliminando la vecchia una volta che il servizio ha terminato l’intero aggiornamento.

Amazon CloudFormation - Templates

Cloud AWS

● Il template è il cuore di questo servizio, è un file in formato JSON che contiene tutte le informazioni che riguardano un’ambiente AWS.

● Nel template bisogna dichiarare diversi tipi di oggetti come version, description, parameters, conditions, resources, mappings e outputs.

● Tra tutti gli oggetti da dichiarare per la creazione di uno stack solo il “resources” è obbligatorio, tutti gli altri possono essere opzionali.

Amazon CloudFormation - Templates (schema)

Cloud AWS

{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "Template per tutorial AWS", "Parameters" : { set of parameters }, "Mappings" : { set of mappings }, "Conditions" : { set of conditions }, "Resources" : { set of resources }, "Ouputs" : { set of outputs }}

Parameters

Mappings

Conditions

Resources

Outputs

Amazon CloudFormation - Templates (sezioni)

Cloud AWS

● AWSTemplateFormatVersion: la versione del formato del template è una dichiarazione opzionale e poiché il formato del template in CloudFormation non è ancora cambiato, attualmente esiste un solo valore supportato: 2010-09-09.

● Description: la descrizione del template è facoltativa, quando viene specificata deve seguire la sezione AWSTemplateFormatVersion. Questa sezione viene utilizzata per inserire una descrizione arbitraria del template.

● Mappings: in queste sezioni vengono associate delle chiavi ad un insieme di valori. Ad esempio, se si desidera impostare dei valori in base alla regione, è possibile creare una mappatura che utilizzi il nome della regione come chiave che contenga i valori che si desidera specificare per ogni specifica regione. (appunto mappatura).

Amazon CloudFormation - Templates (sezioni)

Cloud AWS

● Conditions: è possibile definire delle condizioni utilizzando delle funzioni intrinseche, è possibile, ad esempio, confrontare se un valore è uguale ad un altro valore e sulla base del risultato della condizione è possibile creare delle risorse specifiche.

● Resources: in questa sezione vengono dichiarate tutte le risorse AWS che faranno parte dello stack e che quindi che verranno create. Questa è l’unica sezione obbligatoria del template e deve essere sempre dichiarata, mentre tutte le altre sono facoltative. Per ogni risorsa dichiarata si possono anche specificare delle proprietà che definiscono nel dettaglio come deve essere creata la risorsa stessa.

● Outputs: questa sezione consente di restituire all’utente uno o più valori in risposta al comando describe-stacks di CloudFormation. Grazie a questa sezione è possibile, ad esempio, ottenere l’ID delle istanze EC2 create oppure l’URL per un collegamento alle risorse di Amazon CloudFront che sono state create nello stack.

Amazon CloudFormation - Stack API

Cloud AWS

● Oltre all’utilizzo tramite management console, CloudFormation fornisce un insieme di API con cui è possibile svolgere le operazioni più importanti.

Create Stack

List Stacks

DeleteStack

Describe Stack

Events

ListStack

Resource

UpdateStack

Amazon CloudFormation - Editor JSON

Cloud AWS

● Se volete analizzare i file JSON di esempio che trovate nella documentazione ufficiale vi consigliamo di utilizzare lo strumento http://www.jsoneditoronline.org/.

Amazon CloudFormation - Ringraziamenti & Video

Cloud AWS

Cloud Computing

Amazon Web Service 1

AmazonSNS

AmazonMFA

AmazonCloudFront

AmazonFree Trial

AmazonS3

AmazonGlacier

Amazon Web Service 2

ElasticTranscoder

Storagegateway

AmazonSES

AmazonCloudTrial

AmazonCloudWatch

AmazonSQS

AmazonIAM Top 10

AmazonRDS

AmazonRDS/MYSQL

AmazonIAM