Skip to content

SLA, DR e IaC

Objetivos

  1. Entender os conceitos básicos Infraestrutura como código.
  2. Entender os conceitos básicos sobre SLA e DR.

Pré-requisitos:

Terminar o capítulo anterior (Openstack) Realizar a leitura [Kavis - Cap 11 e Cap 13]

Info

DIVISÃO DO ROTEIRO O Roteiro é dividido em 4 partes principais.

  • Entendendo IaC - Visão Geral
  • Criando hierarquia de projetos
  • Criando a Infraestrutura utilizando IaC
  • Subindo aplicação separada por aluno

IaC Visão geral

Infraestrutura como código (IaC) é o gerenciamento e provisionamento de infraestrutura por meio de código, em vez de processos manuais.

Utilizando o IaC, é possível criar arquivos de configuração que contenham especificações de infraestrutura, o que facilita a edição e distribuição das configurações. Também garante que você sempre forneça o mesmo ambiente. Ao codificar e documentar suas especificações de configuração, o IaC auxilia no gerenciamento de configuração e ajuda a evitar alterações de configuração não documentadas. O IaC evoluiu para lidar com a deriva ambiental em dutos de liberação. Sem o IaC, as equipes teriam que manter as configurações do ambiente de implantação separadamente. Com o tempo, cada ambiente se torna um "floco de neve", uma configuração única que não pode ser replicada automaticamente. Inconsistências entre ambientes podem causar problemas de implantação. O gerenciamento e a manutenção da infraestrutura envolvem processos manuais que são propensos a erros e difíceis de rastrear.

Imagem-Topologia

Reforçando

O IaC evita a configuração manual e garante consistência ao expressar o estado desejado do ambiente por meio de código bem documentado em formatos como por exemplo o JSON. A implantação de infraestrutura com IaC é repetível e evita problemas de tempo de execução causados ​​por configurações quebradas ou dependências ausentes.

Para fazer alterações, você precisa editar a origem, não o destino.

A idempotência (a capacidade de uma determinada operação produzir sempre o mesmo resultado) é um princípio fundamental da IaC. O comando deploy sempre define o ambiente de destino com a mesma configuração, independentemente do estado inicial do ambiente. A idempotência é alcançada configurando automaticamente os destinos existentes ou excluindo os destinos existentes e recriando novos ambientes.

O que é Terraform em Infraestrutura como Código?

É uma das possiveis ferramentas para IaC.

O mercado de Infraestrutura como Código amadureceu ao longo dos anos. Há uma grande variedade de ferramentas, oferecendo diferentes recursos.

Imagem-Topologia

Terraform é a infraestrutura da HashiCorp como ferramenta de código. Ele permite que você defina recursos e infraestrutura em arquivos de configuração declarativos legíveis por humanos e gerencie o ciclo de vida de sua infraestrutura. O uso do Terraform tem várias vantagens em relação ao gerenciamento manual de sua infraestrutura:

  1. O Terraform pode gerenciar a infraestrutura em várias plataformas de nuvem.
  2. A linguagem de configuração legível por humanos ajuda você a escrever código de infraestrutura rapidamente.
  3. O estado do Terraform permite rastrear alterações de recursos em todas as suas implantações.
  4. Você pode confirmar suas configurações no controle de versão para colaborar com segurança na infraestrutura.

⚡ Para implantar infraestrutura com o Terraform:

* Scope         - Identifique a infraestrutura para o seu projeto.
* Author        - Escreva a configuração para sua infraestrutura.
* Initialize    - Instale os plugins que o Terraform precisa para gerenciar a infraestrutura.
* Plan          - Visualize as alterações que o Terraform fará para corresponder à sua configuração.
* Apply         - Faça as alterações planejadas.

Instalar Terraform

  • wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
  • gpg --no-default-keyring --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg --fingerprint
  • echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
  • sudo apt update && sudo apt install terraform
  • sudo yum install -y yum-utils
  • sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
  • sudo yum -y install terraform
  • Ir na pagina oficial e baixar o pacote binário
  • https://www.terraform.io/downloads
  • brew tap hashicorp/tap
  • brew install hashicorp/tap/terraform

Entendendo a estrutura de gestão de projetos Openstack

O OpenStack, uma plataforma de nuvem de código aberto, fornece uma infraestrutura flexível como serviço (IaaS) para grandes e pequenas organizações. A Canonical oferece um ecossistema para implementar e gerenciar o OpenStack através de ferramentas como MAAS (Metal as a Service), que gerencia o hardware físico; JUJU, que orquestra os serviços; e o próprio OpenStack, que gerencia os recursos de computação, armazenamento e rede na nuvem. Dentro do OpenStack, especialmente na aba de Identity (conhecida como Keystone), você encontra vários conceitos fundamentais: Domains, Projects, Users, Groups, e Roles. Vamos detalhar cada um:

  1. Domains

    Um Domain no OpenStack é a unidade de alta hierarquia para organizar e isolar os recursos e usuários. Ele é usado para agrupar projetos e usuários, permitindo uma gestão mais fácil em ambientes com múltiplas organizações ou departamentos distintos. Em outras palavras, um domínio pode ser considerado como uma organização ou um tenant de mais alto nível.

  2. Projects

    Um Project (anteriormente conhecido como "tenant") é uma unidade que agrupa e isola recursos dentro do OpenStack. Projetos são utilizados para organizar usuários, instâncias de máquinas virtuais, redes, e outros recursos de nuvem, facilitando a gestão de custos, segurança e quota de recursos. Os projetos podem ser entendidos como departamentos ou times dentro de uma organização, cada um com seus recursos alocados.

  3. Users

    Um User é uma conta que representa uma pessoa, sistema ou serviço que utiliza ou gerencia os recursos na nuvem do OpenStack. Usuários podem ter acesso a um ou mais projetos e podem ter diferentes permissões em cada um, dependendo dos roles (funções) que lhes são atribuídos.

  4. Groups

    Um Group é uma coleção de usuários. Grupos facilitam a gestão de políticas e permissões para um conjunto de usuários, permitindo que administradores apliquem regras de acesso e permissões a muitos usuários simultaneamente, em vez de configurar cada usuário individualmente.

  5. Roles

    Um Role (função) define as permissões de acesso que um usuário ou grupo tem sobre os recursos e operações dentro do OpenStack. Roles determinam o que um usuário pode ou não fazer. Por exemplo, um usuário com o role de "admin" em um projeto pode criar e gerenciar instâncias de máquinas virtuais, redes e volumes de armazenamento, enquanto um usuário com um role mais restrito pode apenas visualizar esses recursos.

Esses conceitos trabalham juntos dentro do Keystone para fornecer um sistema de gerenciamento de identidade e acesso (IAM) robusto, flexível e escalável para projetos de nuvem OpenStack, permitindo uma administração eficaz dos recursos de nuvem em ambientes complexos e multi-tenant.