Agenda
- Objetivo
- Apresentação
- Introdução a Infraestrutura como código (IaC)
- O que é AWS Cloudformation
- Anatomia do Template
- Sessões do template
- StackSets
- Designers
- Drift
- Setup de recursos (Console e CLI)
- O que aprendemos hoje?
- Referências
- Perguntas
Objetivo
Apresentar de uma forma simples e prática os fundamentos do AWS Cloudformation.
Apresentação
Rodrigo Fernandes
rodrigofrs13@gmail.com
Arquiteto de Soluções/DevOps
2 anos de GFT
Casado há 17 anos e com 2 filhos
- https://www.linkedin.com/in/rodrigo-fernandes-40766477/
- https://medium.com/@rodrigofrs13
- https://dev.to/rodrigofrs13
Introdução a Infraestrutura como código (IaC)
Infraestrutura como código (IaC) refere-se ao gerenciamento e provisionamento da infraestrutura por meio de códigos, em vez de processos manuais.
Alguns benefícios
- Assegura o provisionamento do mesmo ambiente, todas as vezes.
- Automatização
- Rapidez
- Menor retrabalho
- Eficiência operacional
- Controle de versão
- Redução de custos
Fonte: https://www.redhat.com/pt-br/topics/automation/what-is-infrastructure-as-code-iac
O que é AWS Cloudformation
É um serviço que fornece aos desenvolvedores e empresas uma forma fácil de criar um conjunto de recursos relacionados da AWS e de terceiros para provisiona-los e gerenciá-los de forma organizada e previsível.
Fonte: https://aws.amazon.com/pt/cloudformation/
Anatomia do template
O template é um arquivo de texto no formato JSON/YAML e é onde descrevemos tudo o que precisamos para criar a infraestrutura.
JSON
YAML
Sessões do template
O Template é dividido em sessões. Abaixo algumas das sessões que podemos utilizar.
- Description
Permite que você inclua comentários sobre seu modelo.
- Parameters
Permitem que você insira valores personalizados em seu modelo toda vez que criar ou atualizar (em tempo de execução) uma stack.
- Resources (Obrigatório)
Declara os recursos da AWS que você deseja criar, como uma instância do Amazon EC2 ou um bucket do Amazon S3.
- Mappings
Um mapeamento de chaves e valores associados que você pode usar para especificar valores de parâmetros condicionais, semelhante a uma tabela de pesquisa. Por exemplo, para definir valores com base em uma região.
- Conditions
Controlam se determinados recursos são criados ou se determinadas propriedades de recursos são atribuídas a um valor durante a criação ou a atualização da stack.
Por exemplo, condicionalmente, você pode criar um recurso que depende de se a stack é de um ambiente de teste ou de produção.
- Outputs
Descreve os valores que são retornados sempre que você visualiza as propriedades da stack.
Por exemplo, você pode declarar uma saída para o nome de um bucket do S3
Fonte: https://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/template-anatomy.html
StackSets
O AWS CloudFormation StackSets amplia a funcionalidade das stacks, permitindo que você crie, atualize ou exclua stacks em várias contas e regiões com uma única operação.
Fonte: https://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html
Designers
É uma ferramenta gráfica para criar, visualizar e modificar modelos do AWS CloudFormation.
Drift
Permite detectar se a configuração real de uma Stack difere ou se desviou da configuração esperada.
Setup de recursos (Console e CLI)
Os arquivos que serão utilizados estão em Material de Apoio.
Via Console
Durante essa atividade aproveite e observe os itens abaixo durante a criação.
- Designer
- Valide o template
- Parâmetros
- ChangeSets
- Navegue pelas abas Events, Resources, Outputs e etc.
Create
Criar uma estrutura baseado em um template, para isso vamos utilizar o template 01-simple-ec2-console-01.yaml, disponível no material de apoio.
Update
Confira na EC2 criada acima que está anexado o Security Group(Default).
Vamos criar e anexar um Security Group na EC2 atualizando a stack já criada, para isso vamos utilizar o template 01-simple-ec2-console-02.yaml, disponível no material de apoio.
WebAppSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupName: !Join ["-", [webapp-security-group, dev]]
GroupDescription: "Allow HTTP/HTTPS and SSH inbound and outbound traffic"
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 443
ToPort: 443
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
Verifique na EC2 se o Security Group criado está anexado?
Vamos anexar o Security Group criado na EC2 criada, para isso vamos utilizar o template 01-simple-ec2-console-03.yaml, disponível no material de apoio.
SecurityGroupIds:
- !Ref WebAppSecurityGroup
Delete
Acesse a console de delete a stack criada.
Via CLI
Criar uma estrutura baseado em um template, para isso vamos utilizar o template 02-simple-ec2-cli-01.yaml, disponível no material de apoio.
Create
aws cloudformation create-stack --stack-name "nome-da-stack" --template-body file://"nome-do-template"
Describe
aws cloudformation describe-stacks --stack-name "nome-da-stack"
Update
Vamos anexar um Security Group como fizemos na console, para isso vamos utilizar o template 02-simple-ec2-cli-02.yaml, disponível no material de apoio.
aws cloudformation update-stack --stack-name "nome-da-stack" --template-body file://"nome-do-template"
Delete
aws cloudformation delete-stack --stack-name "nome-da-stack"
Fonte: https://docs.aws.amazon.com/cli/latest/reference/cloudformation/index.html
O que aprendemos hoje?
- Infraestrutura como código(IaC)
- AWS Cloudformation
- Anatomia e Sessões do template
- StackSets
- Designers
- Drift
- Setup de recursos(Console e CLI)
Perguntas
Material de apoio
Clique aqui para acessar o material de apoio disponível no git.
Sintam-se livres para baixar o repositório e modificar os arquivos.
Próximos Workshops
- Fundamentos AWS Cloudformation - Nível 300(em construção)
- Fundamentos AWS Cloudformation - Nível 400(em construção)
Top comments (0)