Utilizando o provedor do Aria Automation no Terraform
O Terraform é uma ferramenta de código aberto para automação de infraestrutura. Ele permite definir, provisionar e gerenciar recursos de infraestrutura de forma declarativa usando código. Dentro deste contexto temos os provedores que funcionam como se fossem plugins, permitindo que o Terraform interaja com diferentes APIs de provedores de serviço como AWS, Google, Azure e claro, VMware 🙂
A ideia deste artigo é mostrar como começar a utilizar o Terraform com o provedor do Aria Automation (vRA). Antes de mais nada é importante ler os detalhes na página do provedor. Temos aqui dois requisitos: Terraform 0.12 (ou superior) e Go 1.20. Vou assumir que você já possui os requisitos.
Todos os testes que fiz foram em uma máquina Windows, mas poderia ser Linux ou Mac sem problemas. Boooora ao que interessa. Basicamente é necessário criar um arquivo chamado main.tf na mesma pasta onde o executável do terraform está. Depois, basta colar o código abaixo lá. Neste exemplo iremos criar um projeto no vRA utilizando o Terraform com o provedor do vRA 8.
terraform { required_providers { vra = { source = "vmware/vra" } } } provider "vra" { url = var.url refresh_token = var.refresh_token insecure = var.insecure } data "vra_zone" "this" { name = var.zone_name } resource "vra_project" "this" { name = var.project_name description = var.project_desc zone_assignments { zone_id = data.vra_zone.this.id priority = 0 max_instances = 0 cpu_limit = 0 memory_limit_mb = 0 storage_limit_gb = 0 } shared_resources = true administrator_roles { email = "SEU EMAIL" # IDM User type = "user" } operation_timeout = 6000 placement_policy = "DEFAULT" }
Agora crie outro arquivo com o nome variables.tf e cole o script abaixo. Importante: aqui tem algumas formas de obter o refresh token do vRA. Sinceramente, no laboratório eu faço um POST na URL /csp/gateway/am/api/login?access_token enviando usuário e senha utilizando o postman mesmo.
##### ARIA AUTOMATION (VRA) ENVIRONMENT ##### variable "url" { type = string default = "https://seu-vra-lindao" URL do seu vRA } variable "refresh_token" { type = string default = "xyz" # refresh token do vRA } variable "insecure" { type = bool default = "true" } ##### PROJECT AND CLOUD ZONE ##### variable "project_name" { type = string default = "NOVO PROJETO" } variable "project_desc" { type = string default = "descricao do novo projeto" } variable "zone_name" { type = string default = "Caverna vCenter 01 - Prod" # Nome da sua cloud zone }
No caso do Windows, a pasta deve ter os dois scripts que criamos anteriormente e o terraform.exe.
Agora basta abrir o PowerShell, navegar até a pasta e executar .\terraform.exe init. Basicamente este comando inicializa o terraform, validando se existe algum erro nos script e baixando os provedores necessários (acesso a internet necessário). Se tudo funcionar corretamente, você deve ver uma tela similar a esta e mais arquivos dentro da pasta principal do projeto.
Agora basta executar .\terraform apply para que o terraform aplique o que escrevemos nos scripts, ou seja, se conecte ao vRA via API e crie um projeto chamado de NOVO PROJETO associando um usuário administrador e uma cloud zone. Se não quiser digitar YES para confirmar, basta utilizar o comando .\terraform apply -auto-approve.
Se tudo funcionar bem, então será possível visualizar o NOVO PROJETO configurado com um usuário administrador e uma cloud zone.
Aqui você encontra vários exemplos bem legais do que é possível fazer com o provedor do vRA no Terraform. É isso aí, pessoal. Até a próxima!