DEV Community

Rodrigo Fernandes
Rodrigo Fernandes

Posted on • Edited on

Workshop - Fundamentos AWS Cloudformation - Nível 200

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

Image description

Rodrigo Fernandes
rodrigofrs13@gmail.com
Arquiteto de Soluções/DevOps
2 anos de GFT
Casado há 17 anos e com 2 filhos

Image description

Image description

Image description


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.

Image description

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

Image description

YAML

Image description


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.

Image description

  • Parameters

Permitem que você insira valores personalizados em seu modelo toda vez que criar ou atualizar (em tempo de execução) uma stack.

Image description

  • 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.

Image description

  • 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.

Image description

  • 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.

Image description

  • 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

Image description

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.

Image description

Fonte: https://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html

Demonstração: https://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer-walkthrough-updatebasicwebserver.html


Designers
É uma ferramenta gráfica para criar, visualizar e modificar modelos do AWS CloudFormation.

Image description

Fonte: https://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer.html


Drift

Permite detectar se a configuração real de uma Stack difere ou se desviou da configuração esperada.

Image description

Fonte: https://docs.aws.amazon.com/pt_br/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html#what-is-drift


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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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

Image description


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)

Image description

Top comments (0)