Tudo definido por software! Esta é a realidade na nuvem da AWS. Desde um simples servidor, até múltiplos data centers interconectados em altíssima disponibilidade - tudo pode ser definido, descrito, testado e implementado por um script. O AWS Cloud Formation é a ferramenta que torna isto possível. Nesta apresentação avançada, exploramos o AWS Cloud Formation e mostramos passo-a-passo como utilizar e tornar-se mestre, nesta poderosíssima ferramenta.
5. AWS CloudFormation
• Criar templates da infraestrutura e aplicações
que deseja executar/rodar na AWS
• Deixar que o AWS CloudFormation crie
automaticamente os recursos necessários
• Simplificar o controle de versão, replicação ou
atualização da sua infraestrutura e aplicações
usando templates
• Permitir a integração com outras ferramentas
de desenvolvimento, CI/CD e ferramentas de
Change Management
7. mmend
Or
Custo
e I
er D
eytics
depends o
Payme
Projetar - Serviço de pedido de comidas
Catálogo de
comidas
Website de pedidos
Serviço de
pagamentosBD Clientes
Analytics
Serviço de
recomendações
Serviço de
fulfilment
Serviço de
inventário
depende de
8. EC2
tance
o Scaling group
BD Clientes
Software pkgs,
config, & data
CloudWatch
alarms
Serviço de
Inventário
Serviço de
recomendaçõesElastic Load
Balancing EC2
Instances
Auto Scaling Group
ElastiCache
memcached clustersecurity group
Criar Templates
10. CloudFormation Template
Recommendations
Info para
Customizar na
criação do
Stack
Exemplos: Tipo de
instância, versão
de um pacote, etc.
EC2
instance
Auto Scaling group
Criar Templates - Parâmetros
Serviço DB
Clientes
Inventario
Analytics
"Parameters" : {
"CustomerDBServiceEndPoint" : {
"Description" : "URL of the Customer DB
Service",
"Type" : "String”
},
"CustomerDBServiceKey" : { "Description" : "API key
for the Customer DB Service",
"Type" : "String”,
"NoEcho" : "true”
},
"InstanceType" : {
"Description" : "WebServer EC2 instance type",
"Type" : "String", "Default" : "m3.medium",
"AllowedValues" :
["m3.medium","m3.large","m3.xlarge"],
"ConstraintDescription" : "Must be a valid
instance type”
11. CloudFormation Template
Elastic Load
Balancing
"Resources" : {
"LoadBalancer" :
{},
...
},
"Outputs" : {
"WebsiteDNSName"
: {
"Description" : "The DNS name of the
website",
"Value" : {
"Fn::GetAtt" : [ "LoadBalancer", "DNSName" ]
}
}
}
Criar Templates - Saídas (outputs)
12. CloudFormation Template
Software pkgs,
config, & data
EC2
instance
Auto Scaling group
"AWS::CloudFormation::Init
": {
"webapp-config": {
"packages" : {}, "sources" : {}, "files"
: {},
"groups" : {}, "users" : {},
"commands" : {}, "services" : {}
},
"chef-config" : {}
}
Criar Templates - Implantação e configuração de
software
Declarativo
Reutilizável
Depurável
Atualizável
Altamente seguro
BIOT (Bring In Other
Tools)
19. Serviços
Frontend
• Consumer Website, Seller Website,
Mobile Backend
• Search, Payments, Reviews,
Recommendations
• CRM DBs, Common Monitoring,
Alarms, Subnets, Security Groups
• VPCs, Internet Gateways, VPNs,
NATs
• IAM Users, Groups, Roles
“It’s all software” – Organizado como software
Serviços
Backend
Serviços
Compartilhados
Rede
Identidades
20. Software de
aplicação
Templates JSON /
geradores de templates
JSON
Código fonte
Pacote Templates
JSON
Loader / Interpretador AWS CloudFormation
Aplicação em memória Infraestrutura na nuvem
“It’s all software” – criado e gerenciado como software
Software de
infraestrutura
24. EC2
tance
o Scaling group
Web Ana
Servi
S
mation
“Create, Update, Rollback, or Delete”
+ Metadata
Provision
AWS ResourcesSoftware pkgs,
config, & data
CloudWatch
alarms
Web Analytics
Service
AWS
CloudFormartion
“Success” + Metadata
"Resources" : {
"WebAnalyticsTrackingID" : {
"Type" : "Custom::WebAnalyticsService::TrackingID",
"Properties" : {
"ServiceToken" : "arn:aws:sns:...",
"Target" : {"Fn::GetAtt" : ["LoadBalancer", "DNSName"]},
"Plan" : "Gold"
}
Elastic Load
Balancing
EC2
Instances
Auto Scaling Group
ElastiCache
memcached clustersecurity group
},
...
Estendendo usando ‘Custom Resources’
25. EC2
tance
o Scaling group
Your AWS Lambda functionsYour AWS CloudFormation stack
// Implement custom logic here
Look up an AMI ID
Look up VPC ID and Subnet IDSoftware pkgs,
config, & data
CloudWatch
alarms
Reverse an IP address
Lambda-powered
custom resources
Elastic Load
Balancing
ElastiCache
memcached clustersecurity group
‘Custom Resources’ com Lambda
EC2
Instances
Auto Scaling Group
33. ow.ly/DiNkz
AWS::CloudFormation::Init
Capacidade de utilizar outras ferramentas como AWS CodeDeploy e Chef
"install_chef" : {},
"install_wordpress" : {
"commands" : {
"01_get_cookbook" : {}, ...,
"05_configure_node_run_list" : {
"command" : "knife node run_list add -z `knife node
list -z recipe[wordpress]",
"cwd" : "/var/chef/chef-repo",
"env" : { "HOME" : "/var/chef" }
34. "
ow.ly/DqkrB
AWS::CloudFormation::Init
Suporte para IAM Roles
"YourInstance" : {
"Metadata" : {
"AWS::CloudFormation::Authentication" : {
"S3AccessCreds" : {
"type" : "S3",
"roleName" : { "Ref" : "InstanceRole"},
"buckets" : ["your-bucket"]
}
}
},
"AWS::CloudFormation::Init" : {}
Escolha o tipo de
autenticação.
O uso de IAM Roles
é recomendado
Baixado de maneira
segura
38. B
Criar AMIs para inicialização mais rápida
Criar AMIs para manter imagens de referência (Golden AMIs)
Dev/Test
Stacks
Criação
de AMIs
Staging/Prod Stacks
Rastreabilidade
CloudFormation::Init,
UserData, Chef, etc.
Custom AMI
Instâncias EC2 Instâncias EC2
40. EC2
SQS, SNS, Amazon
Kinesis, etc.
Banco de dados
VPC
IAM
Descargar pacotes,
instalar Software,
configurar
aplicações, restarts,
etc.
OpsWorks
Ciclo de vida da
aplicação
Console interativo
OpsWorks & CloudFormation lado a lado(?)
Criação da
Infraestrutura
Implantação da
Aplicação
CloudFormation
Modelar Templates
Replicar
Automatizar
41. EC2
SQS, SNS, Amazon
Kinesis, etc.
Banco de dados
VPC
IAM
Descargar pacotes,
instalar Software,
configurar
aplicações, restarts,
etc.
OpsWorks
Ciclo de vida da
aplicação
Consola interativa
OpsWorks dentro de CloudFormation (?)
Criação da
Infraestrutura
Implantação da
Aplicação
CloudFormation
Modelar Templates
Replicar
Automatizar
43. Code Re
C
T
App Developers TestApp Pkgs,
CloudFormation
Templates, Etc.
App Code
& Templates
AWS
CloudFormation
Staging
CI ServerIssue Tracker Dev Env
"Infra-as-Code"
DevOps Engineers,
Infrastructure Developers,
Systems Engineers
Code Review Prod
Code Repo
Infraestrutura como código no fluxo CI/CD
45. urces to templr
CloudFormer: criar Templates dos recursos existentes
1. Lançar um stack da Aplicação
CloudFormer
2. Escolher os
recursos que serão
utilizados
3. Personalizar o
Template
4. Criar um novo stack
46. Praticantes de Infraestrutura como Código
• Desenvolvedores / DevOps valorizam CloudFormation pela sua capacidade de
tratar infraestrutura como código, permitindo-lhes aplicar os princípios de
engenharia de software, tais como SOA, controle de revisão, revisões de código,
testes de integração de infra-estrutura.
• Administradores de TI e Provedores de Serviços gerenciados valorizam
CloudFormation como uma plataforma para permitir a padronização, controle do
consumo, e especialização de funções.
• ISVs valorizam CloudFormation pela sua capacidade de apoiar na
escalabilidade de produtos SaaS em ambientes compartilhados, por conseguir
replicar e atualizar os stacks rapidamente.
Os ISVs também valorizam CloudFormation como uma maneira de empacotar e
implantar o seu software em diferentes contas da AWS