Automatizando a Implantação de Infraestrutura com AWS CloudFormation

Implantar infraestrutura de forma consistente e confiável pode ser um desafio. Exige que as equipes sigam procedimentos documentados, evitando atalhos não documentados. Além disso, realizar implementações fora do horário de expediente, quando há menos pessoal disponível, pode ser complicado. O AWS CloudFormation surge como uma solução, permitindo definir a infraestrutura em um template que pode ser implantado automaticamente, mesmo em horários agendados.

Neste guia, você aprenderá a implantar várias camadas de infraestrutura usando o AWS CloudFormation, atualizar uma stack do CloudFormation e excluir uma stack, mantendo alguns recursos intactos. Vamos explorar como essa ferramenta pode simplificar e automatizar a gestão da sua infraestrutura na nuvem.

Visão Geral do Lab

O AWS CloudFormation facilita a implantação de infraestrutura, permitindo que você defina seus recursos em templates. Isso garante consistência e confiabilidade, pois a infraestrutura é criada de forma automatizada a partir desses templates. Além disso, essa abordagem facilita a implantação em horários específicos, sem depender da disponibilidade imediata da equipe.

Com o CloudFormation, a infraestrutura é definida em um template que pode ser automaticamente implantado, mesmo em um agendamento automatizado. Neste laboratório, você aprenderá como implantar várias camadas de infraestrutura com o AWS CloudFormation, atualizar uma stack do CloudFormation e excluir uma stack (mantendo alguns recursos).

O AWS CloudFormation permite automatizar a criação e gestão de recursos na nuvem, garantindo que a infraestrutura seja implantada de maneira padronizada e repetível. Isso reduz erros manuais e garante que todos os componentes estejam configurados corretamente desde o início.

Funcionalidades do AWS CloudFormation

  • Implementar uma camada de rede de nuvem privada virtual (VPC) usando o AWS CloudFormation.
  • Implementar uma camada de aplicação que referencia a camada de rede, também utilizando o AWS CloudFormation.
  • Explorar templates com o AWS CloudFormation Designer (Infrastructure Composer).
  • Excluir uma stack que possui uma política de exclusão definida.

O AWS CloudFormation simplifica a gestão da infraestrutura, permitindo a criação, atualização e exclusão de recursos de forma automatizada e controlada. Isso facilita a colaboração entre equipes e garante que todos sigam as mesmas práticas e padrões.

Implementando uma Camada de Rede

Nesta tarefa, você irá implementar um template do AWS CloudFormation que cria uma camada de rede utilizando o Amazon VPC. Isso envolve a definição de sub-redes, tabelas de roteamento e outros componentes essenciais para uma rede isolada e segura na nuvem.

Os templates podem ser escritos em JSON ou YAML. YAML é uma linguagem de marcação similar ao JSON, mas é mais conveniente para ler e editar. A escolha entre os dois formatos depende da preferência pessoal e da complexidade do template.

  • Abra o painel do CloudFormation e configure os seguintes detalhes:

a. Crie uma stack > Com novos recursos (padrão)
b. Prepare o template: Escolha Template está pronto
c. Fonte do template: Escolha o arquivo lab-network.yaml que você baixou.
d. Nome da stack: lab-network
e. Tags: Chave: application
Valor: inventory

O template é utilizado pelo AWS CloudFormation para gerar uma stack de recursos na conta AWS. As tags especificadas são automaticamente propagadas para os recursos que são criados, o que ajuda a identificar recursos que são utilizados por aplicações específicas. Essa organização facilita o gerenciamento e a identificação de custos associados a cada aplicação.

  • Escolha a aba Recursos. Você verá uma lista dos recursos que foram criados pelo template.
  • Escolha a aba Eventos e navegue pelos eventos.

Os eventos mostram (do mais recente para o menos recente) as atividades que foram realizadas pelo AWS CloudFormation. Exemplos de eventos incluem o início da criação de um recurso e a conclusão da criação do recurso. Quaisquer erros que foram encontrados durante a criação da stack são listados nesta aba. Isso permite identificar rapidamente problemas e corrigi-los.

  • Escolha a aba Saídas.

As saídas também podem ser utilizadas para fornecer valores para outras stacks. Neste caso, o VPC e os subnet IDs recebem nomes de exportação para que outras stacks possam recuperar os valores. Estas outras stacks podem então construir recursos dentro do VPC e da subnet que foram criados. Essa funcionalidade permite criar arquiteturas complexas e modulares.

Implementando uma Camada de Aplicação

Agora que você implementou a camada de rede, você irá implementar uma camada de aplicação que contém uma instância do Amazon Elastic Compute Cloud (Amazon EC2) e um grupo de segurança. Isso permite criar e configurar os componentes necessários para executar suas aplicações na nuvem.

O template do AWS CloudFormation importa o VPC e os subnet IDs das saídas da stack CloudFormation existente. Então, ele utiliza esta informação para criar o grupo de segurança no VPC e a instância EC2 na subnet. Essa abordagem garante que a aplicação seja implantada na rede correta e com as configurações de segurança adequadas.

  • Baixe o template lab-application.yaml para o seu computador.
  • Abra o painel do CloudFormation e configure os seguintes detalhes:

a. Crie uma stack > Com novos recursos (padrão)
b. Prepare o template: Escolha Template está pronto
c. Fonte do template: Escolha o arquivo lab-application.yaml que você baixou.
d. Nome da stack: lab-application
e. Tags: Chave: application
Valor: inventory

  • Na aba Saída, copie a URL que é exibida, abra uma nova aba do navegador, cole a URL e pressione ENTER.

Uma stack do CloudFormation pode utilizar valores de referência de outra stack do CloudFormation. Por exemplo, esta porção do template lab-application referencia o template lab-network:
WebServerSecurityGroup:

Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Enable HTTP ingress
VpcId:
Fn::ImportValue:
!Sub ${NetworkStackName}-VPCID

A última linha utiliza o nome da stack de rede que você forneceu (lab-network) quando a stack foi criada. Ele importa o valor de lab-network-VPCID das saídas da primeira stack. Então, ele insere o valor no campo VPC ID da definição do grupo de segurança. O resultado é que o grupo de segurança é criado no VPC que foi criado pela primeira stack. Essa interconexão entre stacks permite criar infraestruturas complexas e reutilizáveis.

Atualizando uma Stack

Nesta tarefa, você irá atualizar a stack lab-application para modificar uma configuração no grupo de segurança. Isso demonstra como o AWS CloudFormation facilita a atualização da infraestrutura de forma controlada e automatizada.

  • Vá para o painel do EC2 e navegue até grupo de segurança.
  • Observe as Regras de entrada de lab-application-WebServerSecurityGroup.

Atualmente, apenas uma regra está no grupo de segurança. A regra permite tráfego HTTP. Isso garante que apenas o tráfego necessário seja permitido, aumentando a segurança da aplicação.

Este template possui uma configuração adicional para permitir tráfego HTTPS de entrada na porta 443:

- IpProtocol: tcp
FromPort: 443
ToPort: 443
CidrIp: 0.0.0.0/0
  • No console do CloudFormation, atualize e configure estas configurações:

a. Prepare o template: Substituir template atual.
b. Fonte do template: Carregar um arquivo de template.
c. Carregar um arquivo de template: arquivo lab-application2.yaml que você baixou.

Na Visualização do conjunto de mudanças, o AWS CloudFormation exibe os seguintes recursos que serão atualizados. Esta visualização permite revisar as mudanças antes de aplicá-las, garantindo que tudo esteja correto.

Este conjunto de mudanças indica que o AWS CloudFormation irá modificar o WebServerSecurityGroup sem precisar substituí-lo (Replacement = False). Este conjunto de mudanças significa que o grupo de segurança terá uma pequena mudança aplicada a ele, e nenhuma referência ao grupo de segurança precisará mudar. Isso garante que a atualização seja feita de forma eficiente e sem interrupções.

Você pode agora verificar a mudança.

  • Retorne ao console do Amazon EC2.
  • Na lista Grupos de segurança, escolha lab-application-WebServerSecurityGroup.

A aba Inbound rules deve exibir uma regra adicional que permite tráfego HTTPS sobre a porta TCP 443. Isso confirma que a atualização foi aplicada com sucesso.

Explorando Templates com o AWS CloudFormation Designer (Infrastructure Composer)

O AWS CloudFormation Designer (Designer) é uma ferramenta gráfica para criar, visualizar e modificar templates do AWS CloudFormation. Com o Designer, você pode diagramar seus recursos de template utilizando uma interface de arrastar e soltar e então editar seus detalhes através do editor JSON e YAML integrado. Essa ferramenta facilita a visualização e edição dos templates, tornando o processo mais intuitivo.

  • No Console do CloudFormation, escolha Infrastructure Composer.
  • Carregue o template lab-application2.yaml que você baixou previamente.

O Infrastructure Composer exibe uma representação gráfica do template. Isso facilita a compreensão da estrutura da infraestrutura e a identificação de possíveis problemas.

Excluindo a Stack

Quando os recursos não são mais necessários, o AWS CloudFormation pode excluir os recursos construídos para a stack. Isso ajuda a manter a conta AWS organizada e a reduzir custos.

Uma política de exclusão também pode ser especificada contra os recursos. Ela pode preservar ou (em alguns casos) fazer o backup de um recurso quando sua stack é excluída. Este recurso é útil para reter bancos de dados, volumes de disco, ou qualquer recurso que possa ser necessário após a stack ser excluída. Ele também pode ser configurado para reter recursos importantes de serem excluídos sem intenção. Essa funcionalidade garante que dados importantes não sejam perdidos durante a exclusão da stack.

A stack lab-application foi configurada para tirar um snapshot de um volume de disco do Amazon Elastic Block Store (Amazon EBS) antes de ser excluído. O código no template que realiza esta configuração é o seguinte:
DiskVolume:

Type: AWS::EC2::Volume
Properties:
Size: 100
AvailabilityZone: !GetAtt WebServerInstance.AvailabilityZone
Tags:
- Key: Name
Value: Web Data
DeletionPolicy: Snapshot
  • No console do AWS CloudFormation, escolha o link lab-application e exclua.

A stack da aplicação foi removida, mas a stack de rede permaneceu intacta. Este cenário reforça a ideia de que equipes diferentes (por exemplo, a equipe de rede ou a equipe de aplicação) podem gerenciar suas próprias stacks. Isso permite uma maior autonomia e flexibilidade na gestão da infraestrutura.

Para verificar se um snapshot do volume EBS foi criado antes do volume EBS ser excluído.

  • Vá para o painel do EC2 e escolha Snapshots.

O que foi aprendido

  • Utilização do AWS CloudFormation para implementar uma camada de rede de nuvem privada virtual (VPC).
  • Utilização do AWS CloudFormation para implementar uma camada de aplicação que referencia a camada de rede.
  • Exploração de templates com o AWS CloudFormation Designer (Infrastructure Composer).
  • Exclusão de uma stack que possui uma política de exclusão.

O AWS CloudFormation oferece uma maneira eficiente e automatizada de gerenciar a infraestrutura na nuvem, permitindo a criação, atualização e exclusão de recursos de forma controlada e repetível. Ao utilizar templates e políticas de exclusão, é possível garantir a consistência, segurança e disponibilidade da infraestrutura, além de facilitar a colaboração entre equipes e a gestão de custos.

Para complementar seu aprendizado sobre automação e infraestrutura em nuvem, explore como a infraestrutura em nuvem impulsiona o potencial da inteligência artificial e como essa combinação pode transformar seus projetos.

Primeira: Este conteúdo foi auxiliado por Inteligência Artificiado, mas escrito e revisado por um humano.

Segunda: Via Dev.to

Leave a Comment