Lab: A Fábrica de Nuvens - Automação com o AWS CloudFormation
O Cenário (A "User Story")
Como um engenheiro de nuvem, EU QUERO usar um template do AWS CloudFormation para provisionar, atualizar e destruir minha infraestrutura de rede e computação de forma automatizada, PARA QUE eu possa criar ambientes consistentes, repetíveis e gerenciá-los como código.
A Dor que o Lab Resolve
- Inconsistência: Criar uma VPC manualmente com todas as suas sub-redes e security groups é um processo complexo e propenso a erros. É quase impossível garantir que o ambiente de teste seja idêntico ao de produção.
- Lentidão: Fazer alterações na infraestrutura manualmente é lento.
- Falta de Auditoria: É difícil rastrear quem mudou o quê e quando.
Este laboratório resolve essas dores te ensinando a usar o CloudFormation, a "fonte única da verdade" para sua infraestrutura.
Objetivos de Aprendizado
Ao final deste laboratório, você será capaz de:
- Implantar uma Pilha (Stack) do CloudFormation a partir de um template.
- Analisar e entender as seções de um template (Parâmetros, Recursos, Saídas).
- Atualizar uma pilha existente para adicionar novos recursos (um bucket S3 e uma instância EC2).
- Usar referências (
!Ref) para conectar recursos dentro de um template. - Terminar uma pilha e todos os seus recursos de forma limpa.
O Passo a Passo
Tarefa 1: Construindo a Fundação (Implantar a Pilha da VPC)
Analogia: Primeiro, vamos entregar a "planta baixa" da nossa "fortaleza de rede" para a "fábrica" do CloudFormation.
- Baixe a "Planta Baixa": Faça o download do arquivo de template
task1.yamlfornecido no seu material de laboratório e abra-o em um editor de texto para analisá-lo. > O "Porquê" das Seções: > *Parameters: Permite que você insira valores customizados (como os blocos CIDR) no momento da criação, tornando o template reutilizável. > *Resources: O coração do template, onde a VPC e o Security Group são declarados. > *Outputs: Define quais informações importantes (como o ID do Security Group) serão exibidas após a criação. - Entregue para a "Fábrica":
- No Console da AWS, navegue até o serviço CloudFormation.
- Clique em Criar pilha (Create stack) > Com novos recursos (padrão).
- Em
Especificar modelo (Specify template), selecione Fazer upload de um arquivo de modelo (Upload a template file) e envie o seutask1.yaml. Clique em Avançar (Next). - Nome da pilha (Stack name):
Lab-VPC-Stack. - Deixe os parâmetros com os valores padrão e clique em Avançar duas vezes.
- Na página de revisão, confirme a criação e clique em Criar pilha (Create stack).
- Acompanhe a Construção:
- Observe a aba Eventos (Events). Ela é o "diário de bordo" da fábrica, mostrando cada recurso sendo criado.
- Aguarde até que o status da pilha mude para
CREATE_COMPLETE. Sua fundação de rede está pronta!
Tarefa 2: Adicionando um "Depósito" (O Bucket S3)
Analogia: Agora, vamos fazer uma "reforma" na nossa planta baixa para adicionar um "depósito" (um bucket S3).
- Edite a Planta Baixa: Abra seu arquivo
task1.yamlem um editor de texto. - Na seção
Resources, adicione o seguinte bloco de código YAML. Atenção à indentação!> O "Porquê": É simples assim. Estamos declarando que queremos um novo recurso do tipoS3Bucket: Type: AWS::S3::BucketBucket S3e demos a ele o nome lógicoS3Bucket. - Envie a Planta Revisada:
- No console do CloudFormation, selecione sua
Lab-VPC-Stacke clique em Atualizar (Update). - Selecione Substituir modelo atual (Replace current template) e faça o upload do seu arquivo
task1.yamlmodificado. Clique em Avançar. - Avance pelas próximas telas sem alterar nada.
- No console do CloudFormation, selecione sua
- Revise o "Relatório de Impacto" (
Change Set):- O CloudFormation irá te mostrar um preview das alterações. Você verá claramente que a única ação será Adicionar (Add) um novo recurso do tipo
AWS::S3::Bucket.O "Porquê": Esta é a inteligência do CloudFormation. Ele compara as duas "plantas" e executa apenas a mudança necessária, sem reconstruir tudo.
- O CloudFormation irá te mostrar um preview das alterações. Você verá claramente que a única ação será Adicionar (Add) um novo recurso do tipo
- Clique em Atualizar pilha (Update stack) e aguarde o status
UPDATE_COMPLETE.
Tarefa 3: Construindo a "Casa" (A Instância EC2)
Analogia: A reforma final. Vamos adicionar a "casa principal" (a instância EC2) à nossa planta, conectando-a aos recursos que já existem.
- Edite a Planta Baixa Novamente: Abra seu arquivo
task1.yaml. - Adicione um Parâmetro Inteligente: No topo, na seção
Parameters, adicione este novo parâmetro.> O "Porquê": Em vez de "chumbar" um ID de AMI, estamos usando o Parameter Store para buscar dinamicamente a AMI mais recente do Amazon Linux 2 para a Região onde a pilha está sendo executada.AmazonLinuxAMIID: Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id> Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 - Adicione o Recurso EC2: Na seção
Resources, adicione o seguinte bloco:> O "Porquê" doAppServerInstance: Type: AWS::EC2::Instance Properties: InstanceType: t3.micro ImageId: !Ref AmazonLinuxAMIID SecurityGroupIds: - !Ref AppSecurityGroup SubnetId: !Ref PublicSubnet Tags: - Key: Name Value: App-Server-via-CFN!Ref: A Função Intrínseca!Refé a "cola" do CloudFormation. Estamos dizendo: "Para esta instância, use o valor do parâmetroAmazonLinuxAMIIDe conecte-a aos recursosAppSecurityGroupePublicSubnetque já estão definidos neste mesmo template." - Atualize a Pilha: Repita o processo de atualização da Tarefa 2, enviando seu novo template. Verifique no
Change Setque ele irá adicionar uma nova instância EC2.
Tarefa 4: A Demolição (Excluir a Pilha)
Analogia: O projeto acabou. Com um único comando, vamos dizer à "fábrica" para demolir tudo que foi construído.
- No console do CloudFormation, selecione sua
Lab-VPC-Stack. - Clique em Excluir (Delete) e confirme.
- Observe a aba Eventos (Events). O CloudFormation irá deletar todos os recursos na ordem inversa da criação, de forma limpa e segura.
Conclusão
Parabéns! Você atuou como um verdadeiro engenheiro DevOps. Você usou um único arquivo de texto para provisionar, atualizar iterativamente e destruir uma infraestrutura completa, demonstrando o poder, a segurança e a consistência da Infraestrutura como Código.