Compartilhar:

Guia de Utilização do Terraform com vCloud Director

A automação da infraestrutura é essencial para ambientes de TI modernos. Uma das ferramentas mais poderosas para isso é o Terraform, que permite definir e gerenciar sua infraestrutura como código. Neste guia completo, você aprenderá como configurar e usar o Terraform para provisionar recursos no vCloud Director, utilizando práticas recomendadas de segurança, versionamento e uso de backends remotos como o S3 da HostDime Brasil. Este conteúdo é ideal para quem já possui conhecimentos básicos de linha de comando e deseja aplicar automação em ambientes VMware vCloud.

Este guia passo a passo irá orientá-lo sobre como utilizar o Terraform para provisionar e gerenciar recursos em um ambiente vCloud Director.

Pré-requisitos

• Terraform instalado (versão 1.0.0 ou superior)

• Acesso ao vCloud Director (credenciais de usuário

• Conhecimentos básicos de linha de comando

Estrutura de Arquivos

Para começar, você precisará configurar três arquivos principais:

• provider.tf – Configura o provedor vCloud Director

• backend.tf – Define onde o estado do Terraform será armazenado

• main.tf – Contém a definição dos recursos a serem criados

Passo 1: Configurar o Provedor (provider.tf)

Crie um arquivo chamado provider.tf com o seguinte conteúdo:

terraform {
  required_providers {
    vcd = {
      source  = "vmware/vcd"
      version = ">= 3.9.0"  # Use a versão mais recente disponível
    }
  }
}

provider "vcd" {
  user                 = "seu_usuario"  # Substitua pelo seu usuário
  password             = "sua_senha"    # Substitua pela sua senha
  org                  = "sua_organizacao"  # Substitua pelo nome da sua organização
  url                  = "https://vcloudjpa.hostdime.com.br/api"  # URL do seu vCloud Director
  allow_unverified_ssl = true  # Use false em ambientes de produção se possível
}

Observação de Segurança: Evite incluir senhas diretamente no código. Use variáveis de ambiente ou arquivos seguros.

Passo 2 (Opcional): Configurar o Backend Remoto (backend.tf)

Por padrão, o Terraform armazena o arquivo de estado (terraform.tfstate) localmente. No entanto, recomendamos fortemente configurar um backend remoto para armazenar esse estado, especialmente em ambientes de produção ou com múltiplos usuários.

Vantagens do Backend Remoto:

• Trabalho em equipe: Múltiplas pessoas podem aplicar mudanças com segurança

• Prevenção de perda de dados: O estado é armazenado de forma segura e redundante

• Controle de concorrência: Evita conflitos quando várias pessoas trabalham simultaneamente

• Segurança: Maior proteção para dados sensíveis no arquivo de estado

Configuração com S3 da HostDime Brasil

A HostDime Brasil oferece um serviço de armazenamento S3 que pode ser contratado especificamente para este propósito. Para configurar:

• Contrate o serviço S3 da HostDime Brasil

• Crie um arquivo chamado backend.tf:

terraform {
  backend "s3" {
    bucket                      = "terraform-bucket"  # Nome do seu bucket no S3 da HostDime
    key                         = "terraform.tfstate"  # Nome do arquivo de estado
    region                      = "us-east-1"
    access_key                  = "seu_access_key"  # Substitua pela sua chave de acesso
    secret_key                  = "seu_secret_key"  # Substitua pela sua chave secreta
    endpoint                    = "https://s3-jpa.hostdime.com.br"  # Endpoint do S3 da HostDime Brasil
    skip_credentials_validation = true
    skip_metadata_api_check     = true
    skip_requesting_account_id  = true
    force_path_style            = true
  }
}

Observação de Segurança: Evite incluir chaves de acesso diretamente no código. Considere usar variáveis de ambiente ou arquivos de configuração protegidos.

Se optar por não usar um backend remoto neste momento, o Terraform funcionará normalmente com armazenamento local. Você pode sempre configurar um backend remoto posteriormente.

Passo 3: Definir os Recursos (main.tf)

Agora, crie um arquivo main.tf para definir os recursos que deseja provisionar:

resource "vcd_vapp" "app" {
  name        = "nome-do-seu-vapp"  # Substitua pelo nome desejado
  power_on    = true
  org         = "sua_organizacao"  # Deve corresponder ao valor no provider
  vdc         = "seu_vdc"          # Substitua pelo nome do seu VDC
}

resource "vcd_vapp_org_network" "net" {
  org              = "sua_organizacao"
  vdc              = "seu_vdc"
  vapp_name        = vcd_vapp.app.name
  org_network_name = "nome-da-sua-rede"  # Substitua pelo nome da sua rede
}

resource "vcd_vapp_vm" "vm" {
  name          = "nome-da-sua-vm"  # Substitua pelo nome desejado
  vapp_name     = vcd_vapp.app.name
  vdc           = "seu_vdc"
  catalog_name  = "nome-do-catalogo"  # Substitua pelo nome do catálogo
  template_name = "nome-do-template"  # Substitua pelo nome do template

  memory = 1024  # Memória em MB
  cpus   = 1     # Número de CPUs

  network {
    type               = "org"
    name               = "nome-da-sua-rede"
    ip_allocation_mode = "MANUAL"  # Pode ser DHCP, POOL, MANUAL
    ip                 = "0.0.0.0"  # Defina o IP estático desejado ou remova esta linha para alocação automática
  }
}
 

Passo 4: Inicializar o Terraform

Abra um terminal na pasta onde estão seus arquivos e execute:

terraform init

Este comando inicializa o diretório de trabalho, baixa os plugins necessários e configura o backend.

Passo 5: Verificar o Plano de Execução

Verifique o que o Terraform vai criar:

terraform plan

Revise cuidadosamente as alterações propostas.

Passo 6: Aplicar as Mudanças

Para criar os recursos definidos:

terraform apply

Digite yes quando solicitado para confirmar a criação dos recursos.

Passo 7: Gerenciar Recursos Existentes

Após a criação, você pode modificar seus arquivos e executar terraform apply novamente para atualizar a infraestrutura.

Para destruir os recursos criados:

terraform destroy

Boas Práticas

Segurança de Credenciais: Nunca armazene senhas ou chaves diretamente nos arquivos. Use variáveis de ambiente:

export TF_VAR_vcd_user="seu_usuario"
export TF_VAR_vcd_password="sua_senha"

Versionamento: Mantenha seus arquivos Terraform em um sistema de controle de versão como Git, mas exclua arquivos sensíveis.

Módulos: Para projetos maiores, considere organizar seu código em módulos reutilizáveis.

Variáveis: Use arquivos de variáveis (variables.tf e terraform.tfvars) para tornar sua configuração mais flexível.

Exemplo de arquivo variables.tf

variable "vcd_user" {
  description = "Usuário do vCloud Director"
  type        = string
}

variable "vcd_password" {
  description = "Senha do vCloud Director"
  type        = string
  sensitive   = true
}

variable "vcd_org" {
  description = "Organização no vCloud Director"
  type        = string
}

variable "vcd_vdc" {
  description = "VDC no vCloud Director"
  type        = string
}

Solução de Problemas

• Erro de conexão: Verifique se a URL e as credenciais estão corretas.

• Erro de permissão: Confirme se seu usuário tem permissões adequadas no vCloud Director.

• Recursos não encontrados: Verifique os nomes dos catálogos, templates e redes.

Suporte

Para dúvidas ou problemas específicos, entre em contato com o suporte técnico da HostDime Brasil através do portal: core.hostdime.com.br

Conclusão

A utilização do Terraform com vCloud Director oferece uma poderosa abordagem para gerenciar sua infraestrutura de forma eficiente, escalável e segura. Ao seguir este guia, você estará apto a automatizar a criação e manutenção de recursos com práticas modernas e robustas.

Aproveite também os serviços de backend remoto da HostDime Brasil para garantir maior segurança e controle em ambientes colaborativos.