Fundamentos AWS Cloudformation — Nível 200

Infraestrutura como código (IaC) refere-se ao gerenciamento e provisionamento da infraestrutura por meio de códigos, em vez de processos manuais.

Introdução a Infraestrutura como código (IaC)

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 pilha é 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 pilhas, permitindo que você crie, atualize ou exclua pilhas 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

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.

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.

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

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

Tópicos do que aprendemos hoje nesse artigo:

  • Infraestrutura como código(IaC)
    – AWS Cloudformation
    – Anatomia e Sessões do template
    – StackSets
    – Designers
    – Drift
    – Setup de recursos(Console e CLI)