Skip to content

App

Criando a Infraestrutura utilizando IaC

O Terraform conta com arquivos .tf, que definem a infraestrutura.

O Terraform sabe o que é implantado por meio do arquivo de estado. Este estado é armazenado por padrão em um arquivo local chamado “terraform.tfstate”. Também pode ser armazenado remotamente, o que funciona melhor em um ambiente de equipe.

O Terraform permite vários provedores, normalmente inicializados em um arquivo chamado provider.tf.

A estrutura de pastas ficará conforme figura abaixo:

Imagem-Topologia

  • Cada Aluno deve entrar no MAIN pela sua maquina e criar a estrutura ❗ ❗

  • Crie umapasta para você com o mesmo nome do projeto criado na etapa acima:

  • Dentro desta pasta crie a pasta terraform e dentro dela crie os arquivos abaixo: (modifique o que for necessário)

provider.tf

# Terraform Openstack deployment
# Author: Tiago Demay - tiagoaodc@insper.edu.br


# Define required providers
terraform {
required_version = ">= 0.14.0"
  required_providers {
    openstack = {
      source  = "terraform-provider-openstack/openstack"
      version = "~> 1.35.0"
    }
  }
}


# Configure the OpenStack Provider

provider "openstack" {
  region              = "RegionOne"
  user_name           = "SEU_USUARIO"
}

instance1.tf

resource "openstack_compute_instance_v2" "instancia" {
  name            = "basic"
  image_name      = "bionic-amd64"
  flavor_name     = "m1.small"
  key_pair        = "mykey"
  security_groups = ["default"]

  network {
    name = "network_1"
  }

  depends_on = [openstack_networking_network_v2.network_1]

}

instance2.tf

resource "openstack_compute_instance_v2" "instancia" {
  name            = "basic2"
  image_name      = "jammy-amd64"
  flavor_name     = "m1.tiny"
  key_pair        = "mykey"
  security_groups = ["default"]

  network {
    name = "network_1"
  }

  depends_on = [openstack_networking_network_v2.network_1]

}

Info

observação amiga: a sua rede e do seu amigo não podem ter o mesmo nome! Então uma delas pode ser chamada de network_1 e outra network_2 por exemplo! (lembre de mudar em todos arquivos que a utilizam).

network.tf

resource "openstack_networking_network_v2" "network_1" {
  name           = "network_1"
  admin_state_up = "true"
}

resource "openstack_networking_subnet_v2" "subnet_1" {
  network_id = "${openstack_networking_network_v2.network_1.id}"
  cidr       = "192.167.199.0/24"
}

Info

Alterar a variavel external_network_id = <"ID_EXT_NETWORK"> para o ID da sua rede externa, você pode encontrar esta informacão, acessando o Dashboard do Openstack ou via CLI openstack

router.tf

resource "openstack_networking_router_v2" "router_1" {
  name                = "my_router"
  admin_state_up      = true
  external_network_id = <"ID_EXT_NETWORK">
}

resource "openstack_networking_router_interface_v2" "int_1" {
  router_id = "${openstack_networking_router_v2.router_1.id}"
  subnet_id = "${openstack_networking_subnet_v2.subnet_1.id}"
}

Credenciais do seu usuário

  1. Entre no dashboard com o login do seu usuario (cada aluno terá o seu);
  2. Na aba project → API access, faça o download do openstack rc file do seu usuário;
  3. Copie o conteudo para a sua pasta de projeto (Obs: o arquivo será baixado noseu notebook pessoal, passe o conteudo para o servidor Main)
  4. De a permissão de execução para o arquivo chmod +x arquivo.sh
  5. Carregue as variaveis de ambiente do seu usuário source arquivo.sh

Dica

Caso aconteça o erro abaixo:

Attempting to parse version from URL.

SSL exception connecting to https://172.16.0.x:5000/v3/auth/tokens: HTTPSConnectionPool(host='172.16.0.x', port=5000): 

Max retries exceeded with url: /v3/auth/tokens (Caused by SSLError(SSLCertVerificationError

(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)')))

O erro que você está enfrentando está relacionado à verificação do certificado SSL ao tentar se conectar ao endpoint do OpenStack. O erro [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate sugere que o cliente (neste caso, possivelmente um cliente OpenStack CLI, uma SDK ou um script personalizado que usa a API OpenStack) não conseguiu verificar o certificado SSL do servidor devido à ausência do certificado da autoridade certificadora (CA) correspondente no armazenamento local de certificados confiáveis.

Aqui estão algumas maneiras de contornar ou resolver esse problema, basta utilizar uma delas:

  • Colocar suas credenciais depois das credenciais do admin, isso modifica somente o necessário nas ENVs do ambiente
source openstack-base/openrc
source arquivo.sh
  • Desabilitar a Verificação de SSL (Não Recomendado para Produção)

export OS_VERIFY=False ou dar o comando com a flag --insecure

  • Indicar o caminho correto do certificado

export OS_CACERT=/caminho/para/o/certificado.pem

Para fazer a implementação da infraestrutura, execute os comandos abaixo:

terraform plan

  • Este comando é utilizado para criar um plano de execução. Ele mostra quais ações o Terraform executará quando você aplicar suas configurações.

terraform apply

  • O comando terraform apply aplica as mudanças necessárias para alcançar o estado desejado da sua configuração. Ele cria, atualiza ou destrói os recursos conforme necessário.

Utlize a CLI do openstack para verificar que a instancia foi criada.

Exercise

CheckPoint-Por_aluno

  1. De um print das Telas abaixo:
  2. Da aba Identy projects no OpenStack.
  3. Da aba Identy users no OpenStack.
  4. Da aba compute overview no OpenStack.
  5. Da aba compute instances no OpenStack.
  6. Da aba network topology no OpenStack.

Criando um plano de Disaster Recovery e SLA (QUESTOES)

Deve ser no MkDocs, seção específica!!!

Exercise

QUESTÕES

  1. Você é o CTO (Chief Technology Officer) de uma grande empresa com sede em várias capitais no Brasil e precisa implantar um sistema crítico, de baixo custo e com dados sigilosos para a área operacional.
    1. Você escolheria Public Cloud ou Private Cloud?
    2. Agora explique para ao RH por que você precisa de um time de DevOps.
    3. Considerando o mesmo sistema crítico, agora sua equipe deverá planejar e implementar um ambiente resiliente e capaz de mitigar possíveis interrupções/indisponibilidades. Para isso, identifiquem quais são as principais ameaças que podem colocar sua infraestrutura em risco, e descreva as principais ações que possibilitem o restabelecimento de todas as aplicações de forma rápida e organizada caso algum evento cause uma interrupção ou incidente de segurança. Para isso monte um plano de DR e HA que considere entre as ações:
      • Mapeamento das principais ameaças que podem colocar em riscos o seu ambiente.
      • Elenque e priorize as ações para a recuperação de seu ambiente em uma possível interrupção/desastre.
      • Como sua equipe irá tratar a política de backup?
      • Considerando possíveis instabilidades e problemas, descreva como alta disponibilidade será implementada em sua infraestrutura.