SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Glauber Gallego – Partner Solutions Architect
02/06/2016
Infraestrutura como código
Por que isso é importante?
Estrutura Velocidade Saúde Segurança
O que levar desta sessão?
Como codificar
infraestrutura?
É possível
codificar TUDO!
É aplicável a todo
tipo de empresa.
Construa e Opere Infraestrutura como código
Aplicação
Código Fonte
Interpretador
Estado desejado
da aplicação
Infraestrutura
JSON
AWS Service API
Estado desejado
da infraestrutura
Construa e Opere Infraestrutura como código
Aplicação
Código Fonte
Interpretador
Estado desejado
da aplicação
Infraestrutura
JSON
AWS Service API
Estado desejado
da infraestrutura
Construa e Opere Infraestrutura como código
Aplicação
Código Fonte
Interpretador
Estado desejado
da aplicação
Infraestrutura
JSON
AWS Service API
Estado desejado
da infraestrutura
Construa e Opere Infraestrutura como código
Aplicação
Código Fonte
Interpretador
Estado desejado
da aplicação
Infraestrutura
JSON
AWS Service API
Estado desejado
da infraestrutura
Infraestrutura como código:
Técnicas, práticas e ferramentas vindas do
desenvolvimento de software e aplicadas a
criação de recursos de infraestrutura
reutilizável, manutenível, extensível e
testável.
Case: Infraestrutura reutilizável
CF Template
Case: Infraestrutura reutilizável
Desenvolvimento
CF Template
Case: Infraestrutura reutilizável
Desenvolvimento
CF Template
Produção
Case: Infraestrutura reutilizável
Desenvolvimento
CF Template
Produção
Throubleshooting
Case: Infraestrutura manutenível (commit, test, deploy)
Devs
Source Code
Ops
CF Template
Case: Infraestrutura manutenível (commit, test, deploy)
Devs
Code
Commit
Source Code
Ops
CF Template
Case: Infraestrutura manutenível (commit, test, deploy)
Devs
Code
Commit
Source Code
Ops
CF Template
Code
Pipeline
Case: Infraestrutura manutenível (commit, test, deploy)
Devs
Code
Commit
Source Code
Ops
CF Template
Code
Pipeline
CloudFormation
Case: Infraestrutura manutenível (commit, test, deploy)
Devs
Code
Commit
Source Code
Ops
CF Template
Beta
Prod
Code
Pipeline
CloudFormation
Case: Infraestrutura manutenível (commit, test, deploy)
Devs
Code
Commit
Source Code
Ops
CF Template
Jenkins
Beta
Prod
Code
Pipeline
CloudFormation
Case: Infraestrutura manutenível (commit, test, deploy)
Devs
Code
Commit
CodeDeploy
Source Code
Ops
CF Template
Jenkins
Beta
Prod
Code
Pipeline
CloudFormation
Case: Infraestrutura manutenível (commit, test, deploy)
Devs
Code
Commit
CodeDeploy
Source Code
Ops
CF Template
Jenkins
Beta
Prod
Code
Pipeline
CloudFormation
Jenkins
Case: Infraestrutura manutenível (commit, test, deploy)
Devs
Code
Commit
CodeDeploy
Source Code
Ops
CF Template
Jenkins
Beta
Prod
Code
Pipeline
CloudFormation
Jenkins
Case: Infraestrutura extensível (Lambda Custom Resources)
IaC Template
Case: Infraestrutura extensível (Lambda Custom Resources)
IaC Template
AWS Lambda
// Implement custom logic here
Look up AMI ID
Cross-stack: VPC ID, SG ID
Reverse an IP address
Case: Infraestrutura extensível (Lambda Custom Resources)
IaC Template
Case: Infraestrutura extensível (Lambda Custom Resources)
// Implement custom logic here
Look up AMI ID
Cross-stack: VPC ID, SG ID
Reverse an IP address
IaC Template
Case: Infraestrutura testável (Blue/Green Deployments)
ExampleApp V1
IaC Template
Case: Infraestrutura testável (Blue/Green Deployments)
AWS CodeDeploy
ExampleApp V1
ExampleApp V2
IaC Template
Case: Infraestrutura testável (Blue/Green Deployments)
AWS CodeDeploy
ExampleApp V1
ExampleApp V2
IaC Template
E por onde eu começo?
CloudFormation: conceitos e tecnologia
Arquivo JSON
Definição de parâmetros
Criação de recursos
Configuração de ações
Framework
Criação de Stack
Atualização de Stack
Detecção de erros & rollback
Recursos AWS configurados
Visibilidade dos recursos criados
Eventos auto chamáveis
Customizável
Template CloudFormation Stack
JSON
JSON
Plain text
Perfect for
version control
Validatable
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "AWS CloudFormation Sample Template EC2InstanceSample: **WARNING** This template an Amazon EC2 instances. You will be billed for the AWS resources used if
you create a stack from this template.",
"Parameters" : {
"KeyName" : {
"Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance",
"Type" : "String"
},
"Environment": {
"Type" : "String",
"Default" : ”Dev",
"AllowedValues" : [”Mgmt", "Dev", ”Staging", "Prod"],
"Description" : "Environment that the instances will run in.”
}
},
"Mappings" : {
"RegionMap" : {
"us-east-1" : { "AMI" : "ami-7f418316" },
"us-west-2" : { "AMI" : "ami-16fd7026" }
}
},
"Conditions" : {
”EnableEBSOptimized" : {"Fn::Equals" : [{"Ref" : " Environment "}, ”Prod"]},
},
"Resources" : {
"Ec2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"KeyName" : { "Ref" : "KeyName" },
"EbsOptimized " : {"Fn::If": [ " EnableEBSOptimized ", {“true”}, {“false”}]},
"ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]},
"UserData" : { "Fn::Base64" : "80" }
}
}
},
"Outputs" : {
"InstanceId" : {
"Description" : "InstanceId of the newly created EC2 instance",
"Value" : { "Ref" : "Ec2Instance" }
},
"PublicDNS" : {
"Description" : "Public DNSName of the newly created EC2 instance",
"Value" : { "Fn::GetAtt" : [ "Ec2Instance", "PublicDnsName" ] }
}
}
}
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "AWS CloudFormation Sample Template EC2InstanceSample: **WARNING** This template an Amazon EC2 instances. You will be billed for the AWS resources used if
you create a stack from this template.",
"Parameters" : {
"KeyName" : {
"Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance",
"Type" : "String"
},
"Environment": {
"Type" : "String",
"Default" : ”Dev",
"AllowedValues" : [”Mgmt", "Dev", ”Staging", "Prod"],
"Description" : "Environment that the instances will run in.”
}
},
"Mappings" : {
"RegionMap" : {
"us-east-1" : { "AMI" : "ami-7f418316" },
"us-west-2" : { "AMI" : "ami-16fd7026" }
}
},
"Conditions" : {
”EnableEBSOptimized" : {"Fn::Equals" : [{"Ref" : " Environment "}, ”Prod"]},
},
"Resources" : {
"Ec2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"KeyName" : { "Ref" : "KeyName" },
"EbsOptimized " : {"Fn::If": [ " EnableEBSOptimized ", {“true”}, {“false”}]},
"ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]},
"UserData" : { "Fn::Base64" : "80" }
}
}
},
"Outputs" : {
"InstanceId" : {
"Description" : "InstanceId of the newly created EC2 instance",
"Value" : { "Ref" : "Ec2Instance" }
},
"PublicDNS" : {
"Description" : "Public DNSName of the newly created EC2 instance",
"Value" : { "Fn::GetAtt" : [ "Ec2Instance", "PublicDnsName" ] }
}
}
}
HEADERS
PARAMETERS
MAPPINGS
RESOURCES
OUTPUTS
CONDITIONALS
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "AWS CloudFormation Sample Template EC2InstanceSample: **WARNING** This template an Amazon EC2 instances. You will be billed for the AWS resources used if
you create a stack from this template.",
"Parameters" : {
"KeyName" : {
"Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance",
"Type" : "String"
},
"Environment": {
"Type" : "String",
"Default" : ”Dev",
"AllowedValues" : [”Mgmt", "Dev", ”Staging", "Prod"],
"Description" : "Environment that the instances will run in.”
}
},
"Mappings" : {
"RegionMap" : {
"us-east-1" : { "AMI" : "ami-7f418316" },
"us-west-2" : { "AMI" : "ami-16fd7026" }
}
},
"Conditions" : {
”EnableEBSOptimized" : {"Fn::Equals" : [{"Ref" : " Environment "}, ”Prod"]},
},
"Resources" : {
"Ec2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"KeyName" : { "Ref" : "KeyName" },
"EbsOptimized " : {"Fn::If": [ " EnableEBSOptimized ", {“true”}, {“false”}]},
"ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]},
"UserData" : { "Fn::Base64" : "80" }
}
}
},
"Outputs" : {
"InstanceId" : {
"Description" : "InstanceId of the newly created EC2 instance",
"Value" : { "Ref" : "Ec2Instance" }
},
"PublicDNS" : {
"Description" : "Public DNSName of the newly created EC2 instance",
"Value" : { "Fn::GetAtt" : [ "Ec2Instance", "PublicDnsName" ] }
}
}
}
HEADERS
PARAMETERS
MAPPINGS
RESOURCES
OUTPUTS
CONDITIONALS
Descrição do que a stack faz, o que ela contem, etc.
Valores de entrada para flexibilidade e customização
do template.
Instruções condicionais pré-definidas.
Condicionais definidas pela avaliação de referencias.
Definição de recursos AWS.
Valores de saída com os resultados da criação da
stack.
Parameters:
"myInstanceType" : {
"Type" : "String",
"Default" : "t2.large",
"AllowedValues" : ["t2.micro", "t2.small",
"t2.medium", "t2.large"],
"Description" : "Instance type for instances created,
must be in the t2 family."
}
Mappings:
"AWSInstanceType2Virt": {
"t2.micro": {"Virt": "HVM"},
"t2.small": {"Virt": "HVM"},
"t2.medium": {"Virt": "HVM"},
"t2.large": {"Virt": "HVM"},
}
Mappings:
"AWSRegionVirt2AMI": {
"us-east-1": {
"PVM": "ami-50842d38",
"HVM": "ami-08842d60"
},
"us-west-2": {
"PVM": "ami-af86c69f",
"HVM": "ami-8786c6b7"
},
"us-west-1": {
"PVM": "ami-c7a8a182",
"HVM": "ami-cfa8a18a"
}
}
Exemplo de um Template (trecho)
Opção 1: EC2 UserData, disponível como propriedade de AWS::EC2::Instance
"Resources" : {
"Ec2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"KeyName" : { "Ref" : "KeyName" },
"SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ],
"ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]},
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["",[
"#!/bin/bash -ex","n",
"yum -y install gcc-c++ make","n",
"yum -y install mysql-devel sqlite-devel","n",
"yum -y install ruby-rdoc rubygems ruby-mysql ruby-devel","n",
"gem install --no-ri --no-rdoc rails","n",
"gem install --no-ri --no-rdoc mysql","n",
"gem install --no-ri --no-rdoc sqlite3","n",
"rails new myapp","n",
"cd myapp","n",
"rails server -d","n"]]}}
}
}
Bootstrap de Aplicações e Atualizações
“WebAppHost" : {
"Type" : "AWS::EC2::Instance",
"Metadata" : {
"AWS:CloudFormation::Init" : {
"config" : {
"packages" : {
"yum" : {
”httpd" : [],
”php" : [],
"wordpress" : []
}
}
Bootstrap de Aplicações e Atualizações
Opção 2: AWS-CloudFormation-Init, meta-dado para instalação de pacotes, arquivos
e execução de comandos com ferramental nativo.
Demo!
Demo: Infraestrutura manutenível (commit, test, deploy)
Devs
Code
Commit
CodeDeploy
Source Code
Ops
CF Template
Jenkins
Beta
Prod
Code
Pipeline
CloudFormation
Jenkins
Demo: Infraestrutura manutenível (commit, test, deploy)
Devs
Code
Commit
CodeDeploy
Source Code
Ops
CF Template
Jenkins
Beta
Prod
Code
Pipeline
CloudFormation
Jenkins
CloudFormation
One Time Generation
Demo: Infraestrutura manutenível (commit, test, deploy)
Devs
CodeDeploy
Source Code
Ops
CF Template
Jenkins
Beta
Prod
Code
Pipeline
CloudFormation
Jenkins
CloudFormation
One Time Generation
GitHub
http://github.com/ggallego/
demo-summitsp-infraascode
Demo: Infraestrutura manutenível (commit, test, deploy)
Quick Learning Resources
AWS QuickLab
Launching & Managing an Application with CloudFormation
https://run.qwiklab.com/store_location?previous_urls=%2Ffocuses%2F1379%3Fsearch%3D31203
AWS CloudFormation Docs & Tutorials
https://aws.amazon.com/documentation/cloudformation/
https://aws.amazon.com/cloudformation/aws-cloudformation-templates/
https://aws.amazon.com/cloudformation/aws-cloudformation-articles-and-tutorials/
Quick Start Deployments
https://aws.amazon.com/quickstart/
Obrigado!

Mais conteúdo relacionado

Mais procurados

RDRA流概念モデル
RDRA流概念モデルRDRA流概念モデル
RDRA流概念モデルZenji Kanzaki
 
Fate/Grand Orderにおける大規模なデータベース移行と負荷試験
Fate/Grand Orderにおける大規模なデータベース移行と負荷試験Fate/Grand Orderにおける大規模なデータベース移行と負荷試験
Fate/Grand Orderにおける大規模なデータベース移行と負荷試験MorioImai
 
Amazon EKS への道 ~ EKS 再入門 ~
Amazon EKS への道 ~ EKS 再入門 ~Amazon EKS への道 ~ EKS 再入門 ~
Amazon EKS への道 ~ EKS 再入門 ~Hideaki Aoyagi
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発Amazon Web Services Japan
 
Microservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaMicroservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaEdureka!
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: AngularHabib Ayad
 
Conceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareConceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareRonney Moreira de Castro
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRSLilia Sfaxi
 
Spring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosSpring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosphelypploch
 
우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료 우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료 SangIn Choung
 
Padrões de Integração de Sistemas com Spring Integration
Padrões de Integração de Sistemas com Spring IntegrationPadrões de Integração de Sistemas com Spring Integration
Padrões de Integração de Sistemas com Spring IntegrationHelder da Rocha
 
Curso Java Básico Aula 01: Introdução e Dicas para quem está Começando
Curso Java Básico Aula 01: Introdução e Dicas para quem está ComeçandoCurso Java Básico Aula 01: Introdução e Dicas para quem está Começando
Curso Java Básico Aula 01: Introdução e Dicas para quem está ComeçandoLoiane Groner
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web servicesLilia Sfaxi
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.1.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.1.0対応)NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.1.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.1.0対応)fisuda
 
MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões ArquiteturaisMVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões ArquiteturaisJorge Tressino Rua
 
Jogo da forca - Diagrama de Classe
Jogo da forca - Diagrama de ClasseJogo da forca - Diagrama de Classe
Jogo da forca - Diagrama de ClasseDaniela Carvalho
 
NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020gree_tech
 
What's New in v2 - AnsibleFest London 2015
What's New in v2 - AnsibleFest London 2015What's New in v2 - AnsibleFest London 2015
What's New in v2 - AnsibleFest London 2015jimi-c
 

Mais procurados (20)

RDRA流概念モデル
RDRA流概念モデルRDRA流概念モデル
RDRA流概念モデル
 
Fate/Grand Orderにおける大規模なデータベース移行と負荷試験
Fate/Grand Orderにおける大規模なデータベース移行と負荷試験Fate/Grand Orderにおける大規模なデータベース移行と負荷試験
Fate/Grand Orderにおける大規模なデータベース移行と負荷試験
 
Amazon EKS への道 ~ EKS 再入門 ~
Amazon EKS への道 ~ EKS 再入門 ~Amazon EKS への道 ~ EKS 再入門 ~
Amazon EKS への道 ~ EKS 再入門 ~
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
 
Microservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaMicroservices Design Patterns | Edureka
Microservices Design Patterns | Edureka
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: Angular
 
Conceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareConceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de software
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRS
 
Spring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosSpring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutos
 
우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료 우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료
 
Padrões de Integração de Sistemas com Spring Integration
Padrões de Integração de Sistemas com Spring IntegrationPadrões de Integração de Sistemas com Spring Integration
Padrões de Integração de Sistemas com Spring Integration
 
Angular Avancé
Angular AvancéAngular Avancé
Angular Avancé
 
Curso Java Básico Aula 01: Introdução e Dicas para quem está Começando
Curso Java Básico Aula 01: Introdução e Dicas para quem está ComeçandoCurso Java Básico Aula 01: Introdução e Dicas para quem está Começando
Curso Java Básico Aula 01: Introdução e Dicas para quem está Começando
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
 
spring-boot-fr.pdf
spring-boot-fr.pdfspring-boot-fr.pdf
spring-boot-fr.pdf
 
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.1.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.1.0対応)NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.1.0対応)
NGSIv1 を知っている開発者向けの NGSIv2 の概要 (Orion 3.1.0対応)
 
MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões ArquiteturaisMVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
 
Jogo da forca - Diagrama de Classe
Jogo da forca - Diagrama de ClasseJogo da forca - Diagrama de Classe
Jogo da forca - Diagrama de Classe
 
NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020
 
What's New in v2 - AnsibleFest London 2015
What's New in v2 - AnsibleFest London 2015What's New in v2 - AnsibleFest London 2015
What's New in v2 - AnsibleFest London 2015
 

Semelhante a Infraestrutura como código

Gerenciando e implantando suas aplicações na Nuvem da AWS
Gerenciando e implantando suas aplicações na Nuvem da AWSGerenciando e implantando suas aplicações na Nuvem da AWS
Gerenciando e implantando suas aplicações na Nuvem da AWSAmazon Web Services LATAM
 
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016Filipe Barretto
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaAmazon Web Services LATAM
 
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...Eiti Kimura
 
Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSMatheus Donizete
 
Como construir sua primeira aplicação de Big Data na AWS
Como construir sua primeira aplicação de Big Data na AWSComo construir sua primeira aplicação de Big Data na AWS
Como construir sua primeira aplicação de Big Data na AWSAmazon Web Services LATAM
 
2016/08/19 - Uma visão geral da AWS para desenvolvedores
2016/08/19 - Uma visão geral da AWS para desenvolvedores2016/08/19 - Uma visão geral da AWS para desenvolvedores
2016/08/19 - Uma visão geral da AWS para desenvolvedoresJardel Weyrich
 
Monitoramento em tempo real (DEVDAY2015)
Monitoramento em tempo real (DEVDAY2015)Monitoramento em tempo real (DEVDAY2015)
Monitoramento em tempo real (DEVDAY2015)Marcus Lacerda
 
Passo a passo para criar seu desktop virtual na nuvem
Passo a passo para criar seu desktop virtual na nuvemPasso a passo para criar seu desktop virtual na nuvem
Passo a passo para criar seu desktop virtual na nuvemAmazon Web Services LATAM
 
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Ramon Durães
 
Path to the future #2 - Internet das coisas com AWS IoT
Path to the future #2 - Internet das coisas com AWS IoTPath to the future #2 - Internet das coisas com AWS IoT
Path to the future #2 - Internet das coisas com AWS IoTAmazon Web Services LATAM
 
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAmazon Web Services LATAM
 
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAmazon Web Services LATAM
 
Desenvolvendo aplicações móveis na Nuvem
Desenvolvendo aplicações móveis na NuvemDesenvolvendo aplicações móveis na Nuvem
Desenvolvendo aplicações móveis na NuvemJose Papo, MSc
 

Semelhante a Infraestrutura como código (20)

Infraestrutura como codigo
Infraestrutura como codigoInfraestrutura como codigo
Infraestrutura como codigo
 
Gerenciando e implantando suas aplicações na Nuvem da AWS
Gerenciando e implantando suas aplicações na Nuvem da AWSGerenciando e implantando suas aplicações na Nuvem da AWS
Gerenciando e implantando suas aplicações na Nuvem da AWS
 
Deep dive de AWS IoT
Deep dive de AWS IoTDeep dive de AWS IoT
Deep dive de AWS IoT
 
Explorando a API Rest Jira Cloud
Explorando a API Rest Jira CloudExplorando a API Rest Jira Cloud
Explorando a API Rest Jira Cloud
 
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
 
Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JS
 
Como construir sua primeira aplicação de Big Data na AWS
Como construir sua primeira aplicação de Big Data na AWSComo construir sua primeira aplicação de Big Data na AWS
Como construir sua primeira aplicação de Big Data na AWS
 
2016/08/19 - Uma visão geral da AWS para desenvolvedores
2016/08/19 - Uma visão geral da AWS para desenvolvedores2016/08/19 - Uma visão geral da AWS para desenvolvedores
2016/08/19 - Uma visão geral da AWS para desenvolvedores
 
Monitoramento em tempo real (DEVDAY2015)
Monitoramento em tempo real (DEVDAY2015)Monitoramento em tempo real (DEVDAY2015)
Monitoramento em tempo real (DEVDAY2015)
 
Tw Dwr 2007 Ap01
Tw Dwr 2007 Ap01Tw Dwr 2007 Ap01
Tw Dwr 2007 Ap01
 
Passo a passo para criar seu desktop virtual na nuvem
Passo a passo para criar seu desktop virtual na nuvemPasso a passo para criar seu desktop virtual na nuvem
Passo a passo para criar seu desktop virtual na nuvem
 
Node.js: serious business
Node.js: serious businessNode.js: serious business
Node.js: serious business
 
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
 
Path to the future #2 - Internet das coisas com AWS IoT
Path to the future #2 - Internet das coisas com AWS IoTPath to the future #2 - Internet das coisas com AWS IoT
Path to the future #2 - Internet das coisas com AWS IoT
 
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
 
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
 
Desenvolvendo aplicações móveis na Nuvem
Desenvolvendo aplicações móveis na NuvemDesenvolvendo aplicações móveis na Nuvem
Desenvolvendo aplicações móveis na Nuvem
 
Java wsdp
Java wsdpJava wsdp
Java wsdp
 

Mais de Amazon Web Services LATAM

AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAmazon Web Services LATAM
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.Amazon Web Services LATAM
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAmazon Web Services LATAM
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.Amazon Web Services LATAM
 
Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAmazon Web Services LATAM
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAmazon Web Services LATAM
 
Ransomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWSRansomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWSAmazon Web Services LATAM
 
Ransomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWSRansomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWSAmazon Web Services LATAM
 
Aprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWSAprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWSAmazon Web Services LATAM
 
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWSAprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWSAmazon Web Services LATAM
 
Cómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administradosCómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administradosAmazon Web Services LATAM
 
Os benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWSOs benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWSAmazon Web Services LATAM
 
Los beneficios de migrar sus cargas de trabajo de big data a AWS
Los beneficios de migrar sus cargas de trabajo de big data a AWSLos beneficios de migrar sus cargas de trabajo de big data a AWS
Los beneficios de migrar sus cargas de trabajo de big data a AWSAmazon Web Services LATAM
 

Mais de Amazon Web Services LATAM (20)

AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
 
Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWS
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
 
Cómo empezar con Amazon EKS
Cómo empezar con Amazon EKSCómo empezar con Amazon EKS
Cómo empezar con Amazon EKS
 
Como começar com Amazon EKS
Como começar com Amazon EKSComo começar com Amazon EKS
Como começar com Amazon EKS
 
Ransomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWSRansomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWS
 
Ransomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWSRansomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWS
 
Ransomware: Estratégias de Mitigação
Ransomware: Estratégias de MitigaçãoRansomware: Estratégias de Mitigação
Ransomware: Estratégias de Mitigação
 
Ransomware: Estratégias de Mitigación
Ransomware: Estratégias de MitigaciónRansomware: Estratégias de Mitigación
Ransomware: Estratégias de Mitigación
 
Aprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWSAprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWS
 
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWSAprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
 
Cómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administradosCómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administrados
 
Simplifique su BI con AWS
Simplifique su BI con AWSSimplifique su BI con AWS
Simplifique su BI con AWS
 
Simplifique o seu BI com a AWS
Simplifique o seu BI com a AWSSimplifique o seu BI com a AWS
Simplifique o seu BI com a AWS
 
Os benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWSOs benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWS
 
Los beneficios de migrar sus cargas de trabajo de big data a AWS
Los beneficios de migrar sus cargas de trabajo de big data a AWSLos beneficios de migrar sus cargas de trabajo de big data a AWS
Los beneficios de migrar sus cargas de trabajo de big data a AWS
 
Bases de datos NoSQL en AWS
Bases de datos NoSQL en AWSBases de datos NoSQL en AWS
Bases de datos NoSQL en AWS
 

Infraestrutura como código

  • 1. © 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Glauber Gallego – Partner Solutions Architect 02/06/2016 Infraestrutura como código
  • 2. Por que isso é importante? Estrutura Velocidade Saúde Segurança
  • 3. O que levar desta sessão? Como codificar infraestrutura? É possível codificar TUDO! É aplicável a todo tipo de empresa.
  • 4. Construa e Opere Infraestrutura como código Aplicação Código Fonte Interpretador Estado desejado da aplicação Infraestrutura JSON AWS Service API Estado desejado da infraestrutura
  • 5. Construa e Opere Infraestrutura como código Aplicação Código Fonte Interpretador Estado desejado da aplicação Infraestrutura JSON AWS Service API Estado desejado da infraestrutura
  • 6. Construa e Opere Infraestrutura como código Aplicação Código Fonte Interpretador Estado desejado da aplicação Infraestrutura JSON AWS Service API Estado desejado da infraestrutura
  • 7. Construa e Opere Infraestrutura como código Aplicação Código Fonte Interpretador Estado desejado da aplicação Infraestrutura JSON AWS Service API Estado desejado da infraestrutura
  • 8. Infraestrutura como código: Técnicas, práticas e ferramentas vindas do desenvolvimento de software e aplicadas a criação de recursos de infraestrutura reutilizável, manutenível, extensível e testável.
  • 9.
  • 13. Case: Infraestrutura reutilizável Desenvolvimento CF Template Produção Throubleshooting
  • 14. Case: Infraestrutura manutenível (commit, test, deploy) Devs Source Code Ops CF Template
  • 15. Case: Infraestrutura manutenível (commit, test, deploy) Devs Code Commit Source Code Ops CF Template
  • 16. Case: Infraestrutura manutenível (commit, test, deploy) Devs Code Commit Source Code Ops CF Template Code Pipeline
  • 17. Case: Infraestrutura manutenível (commit, test, deploy) Devs Code Commit Source Code Ops CF Template Code Pipeline CloudFormation
  • 18. Case: Infraestrutura manutenível (commit, test, deploy) Devs Code Commit Source Code Ops CF Template Beta Prod Code Pipeline CloudFormation
  • 19. Case: Infraestrutura manutenível (commit, test, deploy) Devs Code Commit Source Code Ops CF Template Jenkins Beta Prod Code Pipeline CloudFormation
  • 20. Case: Infraestrutura manutenível (commit, test, deploy) Devs Code Commit CodeDeploy Source Code Ops CF Template Jenkins Beta Prod Code Pipeline CloudFormation
  • 21. Case: Infraestrutura manutenível (commit, test, deploy) Devs Code Commit CodeDeploy Source Code Ops CF Template Jenkins Beta Prod Code Pipeline CloudFormation Jenkins
  • 22. Case: Infraestrutura manutenível (commit, test, deploy) Devs Code Commit CodeDeploy Source Code Ops CF Template Jenkins Beta Prod Code Pipeline CloudFormation Jenkins
  • 23. Case: Infraestrutura extensível (Lambda Custom Resources) IaC Template
  • 24. Case: Infraestrutura extensível (Lambda Custom Resources) IaC Template AWS Lambda
  • 25. // Implement custom logic here Look up AMI ID Cross-stack: VPC ID, SG ID Reverse an IP address Case: Infraestrutura extensível (Lambda Custom Resources) IaC Template
  • 26. Case: Infraestrutura extensível (Lambda Custom Resources) // Implement custom logic here Look up AMI ID Cross-stack: VPC ID, SG ID Reverse an IP address IaC Template
  • 27.
  • 28. Case: Infraestrutura testável (Blue/Green Deployments) ExampleApp V1 IaC Template
  • 29. Case: Infraestrutura testável (Blue/Green Deployments) AWS CodeDeploy ExampleApp V1 ExampleApp V2 IaC Template
  • 30. Case: Infraestrutura testável (Blue/Green Deployments) AWS CodeDeploy ExampleApp V1 ExampleApp V2 IaC Template
  • 31. E por onde eu começo?
  • 32. CloudFormation: conceitos e tecnologia Arquivo JSON Definição de parâmetros Criação de recursos Configuração de ações Framework Criação de Stack Atualização de Stack Detecção de erros & rollback Recursos AWS configurados Visibilidade dos recursos criados Eventos auto chamáveis Customizável Template CloudFormation Stack
  • 33. JSON
  • 34. JSON Plain text Perfect for version control Validatable
  • 35. { "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "AWS CloudFormation Sample Template EC2InstanceSample: **WARNING** This template an Amazon EC2 instances. You will be billed for the AWS resources used if you create a stack from this template.", "Parameters" : { "KeyName" : { "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance", "Type" : "String" }, "Environment": { "Type" : "String", "Default" : ”Dev", "AllowedValues" : [”Mgmt", "Dev", ”Staging", "Prod"], "Description" : "Environment that the instances will run in.” } }, "Mappings" : { "RegionMap" : { "us-east-1" : { "AMI" : "ami-7f418316" }, "us-west-2" : { "AMI" : "ami-16fd7026" } } }, "Conditions" : { ”EnableEBSOptimized" : {"Fn::Equals" : [{"Ref" : " Environment "}, ”Prod"]}, }, "Resources" : { "Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "KeyName" : { "Ref" : "KeyName" }, "EbsOptimized " : {"Fn::If": [ " EnableEBSOptimized ", {“true”}, {“false”}]}, "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}, "UserData" : { "Fn::Base64" : "80" } } } }, "Outputs" : { "InstanceId" : { "Description" : "InstanceId of the newly created EC2 instance", "Value" : { "Ref" : "Ec2Instance" } }, "PublicDNS" : { "Description" : "Public DNSName of the newly created EC2 instance", "Value" : { "Fn::GetAtt" : [ "Ec2Instance", "PublicDnsName" ] } } } }
  • 36. { "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "AWS CloudFormation Sample Template EC2InstanceSample: **WARNING** This template an Amazon EC2 instances. You will be billed for the AWS resources used if you create a stack from this template.", "Parameters" : { "KeyName" : { "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance", "Type" : "String" }, "Environment": { "Type" : "String", "Default" : ”Dev", "AllowedValues" : [”Mgmt", "Dev", ”Staging", "Prod"], "Description" : "Environment that the instances will run in.” } }, "Mappings" : { "RegionMap" : { "us-east-1" : { "AMI" : "ami-7f418316" }, "us-west-2" : { "AMI" : "ami-16fd7026" } } }, "Conditions" : { ”EnableEBSOptimized" : {"Fn::Equals" : [{"Ref" : " Environment "}, ”Prod"]}, }, "Resources" : { "Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "KeyName" : { "Ref" : "KeyName" }, "EbsOptimized " : {"Fn::If": [ " EnableEBSOptimized ", {“true”}, {“false”}]}, "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}, "UserData" : { "Fn::Base64" : "80" } } } }, "Outputs" : { "InstanceId" : { "Description" : "InstanceId of the newly created EC2 instance", "Value" : { "Ref" : "Ec2Instance" } }, "PublicDNS" : { "Description" : "Public DNSName of the newly created EC2 instance", "Value" : { "Fn::GetAtt" : [ "Ec2Instance", "PublicDnsName" ] } } } } HEADERS PARAMETERS MAPPINGS RESOURCES OUTPUTS CONDITIONALS
  • 37. { "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "AWS CloudFormation Sample Template EC2InstanceSample: **WARNING** This template an Amazon EC2 instances. You will be billed for the AWS resources used if you create a stack from this template.", "Parameters" : { "KeyName" : { "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance", "Type" : "String" }, "Environment": { "Type" : "String", "Default" : ”Dev", "AllowedValues" : [”Mgmt", "Dev", ”Staging", "Prod"], "Description" : "Environment that the instances will run in.” } }, "Mappings" : { "RegionMap" : { "us-east-1" : { "AMI" : "ami-7f418316" }, "us-west-2" : { "AMI" : "ami-16fd7026" } } }, "Conditions" : { ”EnableEBSOptimized" : {"Fn::Equals" : [{"Ref" : " Environment "}, ”Prod"]}, }, "Resources" : { "Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "KeyName" : { "Ref" : "KeyName" }, "EbsOptimized " : {"Fn::If": [ " EnableEBSOptimized ", {“true”}, {“false”}]}, "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}, "UserData" : { "Fn::Base64" : "80" } } } }, "Outputs" : { "InstanceId" : { "Description" : "InstanceId of the newly created EC2 instance", "Value" : { "Ref" : "Ec2Instance" } }, "PublicDNS" : { "Description" : "Public DNSName of the newly created EC2 instance", "Value" : { "Fn::GetAtt" : [ "Ec2Instance", "PublicDnsName" ] } } } } HEADERS PARAMETERS MAPPINGS RESOURCES OUTPUTS CONDITIONALS Descrição do que a stack faz, o que ela contem, etc. Valores de entrada para flexibilidade e customização do template. Instruções condicionais pré-definidas. Condicionais definidas pela avaliação de referencias. Definição de recursos AWS. Valores de saída com os resultados da criação da stack.
  • 38. Parameters: "myInstanceType" : { "Type" : "String", "Default" : "t2.large", "AllowedValues" : ["t2.micro", "t2.small", "t2.medium", "t2.large"], "Description" : "Instance type for instances created, must be in the t2 family." } Mappings: "AWSInstanceType2Virt": { "t2.micro": {"Virt": "HVM"}, "t2.small": {"Virt": "HVM"}, "t2.medium": {"Virt": "HVM"}, "t2.large": {"Virt": "HVM"}, } Mappings: "AWSRegionVirt2AMI": { "us-east-1": { "PVM": "ami-50842d38", "HVM": "ami-08842d60" }, "us-west-2": { "PVM": "ami-af86c69f", "HVM": "ami-8786c6b7" }, "us-west-1": { "PVM": "ami-c7a8a182", "HVM": "ami-cfa8a18a" } } Exemplo de um Template (trecho)
  • 39. Opção 1: EC2 UserData, disponível como propriedade de AWS::EC2::Instance "Resources" : { "Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "KeyName" : { "Ref" : "KeyName" }, "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}, "UserData" : { "Fn::Base64" : { "Fn::Join" : ["",[ "#!/bin/bash -ex","n", "yum -y install gcc-c++ make","n", "yum -y install mysql-devel sqlite-devel","n", "yum -y install ruby-rdoc rubygems ruby-mysql ruby-devel","n", "gem install --no-ri --no-rdoc rails","n", "gem install --no-ri --no-rdoc mysql","n", "gem install --no-ri --no-rdoc sqlite3","n", "rails new myapp","n", "cd myapp","n", "rails server -d","n"]]}} } } Bootstrap de Aplicações e Atualizações
  • 40. “WebAppHost" : { "Type" : "AWS::EC2::Instance", "Metadata" : { "AWS:CloudFormation::Init" : { "config" : { "packages" : { "yum" : { ”httpd" : [], ”php" : [], "wordpress" : [] } } Bootstrap de Aplicações e Atualizações Opção 2: AWS-CloudFormation-Init, meta-dado para instalação de pacotes, arquivos e execução de comandos com ferramental nativo.
  • 41. Demo!
  • 42. Demo: Infraestrutura manutenível (commit, test, deploy) Devs Code Commit CodeDeploy Source Code Ops CF Template Jenkins Beta Prod Code Pipeline CloudFormation Jenkins
  • 43. Demo: Infraestrutura manutenível (commit, test, deploy) Devs Code Commit CodeDeploy Source Code Ops CF Template Jenkins Beta Prod Code Pipeline CloudFormation Jenkins CloudFormation One Time Generation
  • 44. Demo: Infraestrutura manutenível (commit, test, deploy) Devs CodeDeploy Source Code Ops CF Template Jenkins Beta Prod Code Pipeline CloudFormation Jenkins CloudFormation One Time Generation GitHub http://github.com/ggallego/ demo-summitsp-infraascode
  • 45. Demo: Infraestrutura manutenível (commit, test, deploy)
  • 46. Quick Learning Resources AWS QuickLab Launching & Managing an Application with CloudFormation https://run.qwiklab.com/store_location?previous_urls=%2Ffocuses%2F1379%3Fsearch%3D31203 AWS CloudFormation Docs & Tutorials https://aws.amazon.com/documentation/cloudformation/ https://aws.amazon.com/cloudformation/aws-cloudformation-templates/ https://aws.amazon.com/cloudformation/aws-cloudformation-articles-and-tutorials/ Quick Start Deployments https://aws.amazon.com/quickstart/