DEV Community

César Augusto de Fázio
César Augusto de Fázio

Posted on

Tudo sobre OCI Resource Manager: Automatize sua Infraestrutura de Nuvem

O que é o OCI Resource Manager?
O OCI Resource Manager é um serviço totalmente gerenciado da Oracle Cloud Infrastructure que automatiza o provisionamento de recursos utilizando o Terraform. Ele armazena o estado da infraestrutura (.tfstate) de forma centralizada e segura, oferece travamento automático de estado (state locking), integra-se com repositórios Git e executa planos de automação sem depender das máquinas dos desenvolvedores.

Lidar com conflitos de estado no Terraform é quase um rito de passagem para qualquer profissional de DevOps ou Engenharia de Infraestrutura. Se você já trabalhou em equipe sem uma estratégia sólida de travamento de estado, certamente já se deparou com o famoso erro de state lock ou, na pior das hipóteses, com a péssima sensação de ter sobrescrito as alterações do seu colega… ou do seu chefe.

O problema central do Terraform tradicional não é o código em si, mas lidar com o arquivo .tfstate. Ele guarda o estado desejável da sua infraestrutura. Se duas pessoas executam o comando terraform apply ao mesmo tempo na mesma infraestrutura com um estado local, o resultado costuma ser catastrófico.

É exatamente aí que entra o OCI Resource Manager. Com ele, você escreve sua infraestrutura em Terraform e a Oracle Cloud executa as ações por você dentro do próprio console ou via CLI/API: de forma gerenciada, escalável, com controle de acesso granular e sem complicações.

Por que usar o OCI Resource Manager?

Vamos comparar a experiência tradicional do Terraform rodando na sua máquina com o modelo gerenciado do OCI Resource Manager. O OCI Resource Manager conta tanto com uma interface gráfica do console quanto com uma CLI.

O que você fazia antes... O que o OCI Resource Manager faz por você
Escrevia o código (Terraform) no seu computador e editava as mudanças manualmente em um repositório local. Você escreve o código uma única vez e faz o upload para a nuvem. Quando for editar, pode fazê-lo tanto via repositório local quanto via console.
Instalava Terraform na sua máquina. Acessa um serviço da própria Oracle pelo navegador ou pelo CLI.
Salvava o arquivo de senhas e chaves em uma pasta no seu PC. Você cadastra as senhas dentro do serviço, de forma segura e escondida (integrando ao OCI Vault).
Digitava comandos no terminal (terraform plan e terraform apply) para ver o que ia mudar e depois aplicar. Você clica em botões: "Plan" (simula a mudança) e "Apply" (aplica a mudança).
Guardava o "mapa" da sua infraestrutura (o famoso state file) em uma pasta local ou num bucket. O serviço guarda esse mapa automaticamente para você. Não precisa se preocupar com isso.
Tinha que lembrar qual versão do Terraform estava usando. O serviço já oferece suporte com as versões atualizadas. Você só se preocupa com o código.
Se alguém mais tentasse mexer ao mesmo tempo, dava conflito e você precisava resolver na mão. O serviço tranca a execução automaticamente. Se um já está rodando, o próximo espera na fila.
O histórico do que foi feito ficava só no seu terminal (se você fechou, perdeu). Fica um histórico completo dentro do serviço. Você pode ver o que foi feito na semana passada, por quem, e deu certo ou errado.

Em resumo, o OCI Resource Manager é um espaço seguro dentro da nuvem da Oracle onde você coloca seus códigos de infraestrutura (Terraform). Em vez de apenas rodar comandos no seu computador, você tem a opção de visualizar tudo pelo console. Ele guarda todo o histórico, cuida das senhas por você, e impede que duas pessoas mexam ao mesmo tempo e bagunce tudo.

Conceitos-Chave do OCI Resource Manager

Para entendermos melhor o OCI Resource Manager, precisamos nos familiarizar melhor com seus recursos e dependências.

1. Configuration Source Provider

É o melhor ponto de conexão entre o Resource Manager e onde o seu código Terraform reside. Em vez de fazer upload manual de arquivos, você pode conectar o OCI diretamente ao seu provedor de controle de versão (VCS).

Há suporte para:

  • Repositórios Git Públicos e Privados: GitHub, GitLab, Bitbucket Cloud e Bitbucket Server.
  • OCI DevOps Code Repository: O repositório nativo de código da Oracle Cloud.
  • Repositórios On-Premises ou Privados: Conexão segura via Private Endpoints dentro da sua VCN.

2. Configuration

Trata-se do conjunto de arquivos Terraform (com extensões .tf ou .tf.json). Uma configuração válida é composta por três elementos principais:
Variables (variables.tf): Parâmetros dinâmicos que podem ser ajustados via console ou arquivo .tfvars.
Resources (main.tf): Os componentes de nuvem que você deseja criar (por exemplo: instâncias, redes, bancos de dados).
Providers (providers.tf): A declaração dos provedores (especialmente o Provider OCI).

3. Stacks

A Stack é o coração do OCI Resource Manager. Ela isola e representa um conjunto de recursos da OCI agrupados para gerenciar um ciclo de vida comum. Dentro de uma Stack você encontra:

  • O código Terraform (vindo de um repositório Git, uma pasta do seu computador ou pacote .zip).
  • O arquivo de estado atualizado (.tfstate).
  • As variáveis configuradas para aquele ambiente (Dev, Staging, Prod).
  • O histórico completo e os logs das execuções (jobs) passadas.

Importante: quando você criar sua stack, não necessariamente ela precisa ter um .tfstate importado. Deixe que a OCI cuide de criar isso para você.

a) Actions (Ações disponíveis nas Stacks)

As ações representam o ciclo de vida do Terraform executado na nuvem:

  • Plan: Compila a configuração e mostra as mudanças planejadas sem alterar a nuvem.
  • Apply: Aplica as alterações aprovadas e provisiona os recursos declarados.
  • Destroy: Remove todos os recursos gerenciados por aquela Stack.
  • Drift Detection: Compara a infraestrutura real com o arquivo de estado e aponta recursos que foram alterados manualmente fora do OCI Resource Manager.
  • Import State: Permite trazer recursos já existentes na OCI para dentro da gestão da Stack. Também permite trazer os recursos que foram alterados manualmente como parte da Stack.

b) Jobs

Cada vez que você dispara uma Action (como um Plan ou Apply), o OCI Resource Manager cria um Job. O Job passa pelos seguintes status:

Accepted -> In Progress -> Succeeded / Failed

(Em caso de interrupção: Cancelling -> Cancelled).

4. Templates

São configurações Terraform pré-prontas que facilitam o provisionamento rápido de arquiteturas complexas.

Templates Criados pela Oracle

Soluções prontas para subir clusters Kubernetes (OKE), bancos de dados Autonomous DB ou redes completas com poucos cliques.

Os templates estão disponíveis diretamente no Console da Oracle Cloud e na documentação oficial. Ao criar um novo Stack no serviço Resource Manager, você poderá navegar e selecionar entre diversos templates fornecidos pela Oracle.

Aqui estão alguns dos repositórios mais relevantes mantidos pela Oracle e pela comunidade:

Repositório (Organização) Descrição
oracle-quickstart Esta é a organização oficial da Oracle para "quick starts". Aqui você encontra exemplos prontos para diversos cenários, como deployments de aplicações e integrações com soluções de terceiros.
oracle-japan Este repositório contém um template da comunidade da Oracle no Japão, focado em preparar o ambiente para um hands-on do OKE (Oracle Container Engine for Kubernetes). É um ótimo exemplo de como a comunidade contribui.

Templates Privados

Modelos padronizados criados pela sua própria equipe para reutilização em diferentes projetos ou clientes.

Como Utilizar

Vamos passar agora para um exemplo prático. Suponha que você queira criar uma VCN (Virtual Cloud Network) e uma Subnet na Oracle Cloud utilizando o OCI Resource Manager.

Passo 1: Definir o Código Terraform

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

# provider.tf / main.tf - Declaracao de VCN e Subnet simples na OCI

terraform {
  required_version = ">= 1.0.0"
  required_providers {
    oci = {
      source  = "oracle/oci"
      version = ">= 4.0.0"
    }
  }
}

variable "compartment_ocid" {
  type        = string
  description = "OCID do Compartment onde os recursos serão criados"
}

variable "vcn_cidr" {
  type        = string
  default     = "10.0.0.0/16"
  description = "Bloco CIDR da VCN"
}

resource "oci_core_vcn" "impacto_vcn" {
  compartment_id = var.compartment_ocid
  cidr_blocks    = [var.vcn_cidr]
  display_name   = "VCN-Automated-ORM"
  dns_label      = "impactovcn"
}

resource "oci_core_subnet" "public_subnet" {
  compartment_id    = var.compartment_ocid
  vcn_id            = oci_core_vcn.impacto_vcn.id
  cidr_block        = "10.0.1.0/24"
  display_name      = "Subnet-Publica"
  dns_label         = "publicsub"
  security_list_ids = [oci_core_vcn.impacto_vcn.default_security_list_id]
}

output "vcn_id" {
  value = oci_core_vcn.impacto_vcn.id
}
Enter fullscreen mode Exit fullscreen mode

Não esqueça de criar seu próprio variables.tf com suas variáveis OCID do seu próprio OCI para subir sua stack.

Passo 2: Criar a Stack no Console OCI

Acesse o Console da Oracle Cloud e navegue até Developer Services > Resource Manager > Stacks.

Selecione o Compartment correto onde a Stack será gerenciada. Depois clique em Create Stack.

Escolha a fonte da sua configuração. Faça upload de um arquivo .zip contendo seu código Terraform, ou conecte a um repositório Git (GitHub, GitLab, OCI DevOps).

Boa prática: Dê nome e descrição à sua Stack, adicione Tags que ajudem a identificar e monitorar a Stack via OCI Notifications e outros serviços.

Configure as variáveis: O Resource Manager identificará a variável compartment_ocid e permitirá que você selecione o Compartment em uma lista suspensa.

Clique em Next e finalize a criação.

Passo 3: Executar Plan e Apply

Na página da Stack criada, clique no botão Plan. Aguarde o Job mudar de In Progress para Succeeded e revise os logs para confirmar os recursos que serão criados.

Após validar o plano, clique em Apply.

O OCI Resource Manager executará o provisionamento e travará o estado durante o processo. Ao final, você verá as saídas (outputs) com os IDs da VCN e da Subnet recém-criadas.

Quando usar o OCI Resource Manager?

Se a sua empresa tem:

  • Times multidisciplinares (Devs, Redes, Banco de Dados).
  • Auditoria pesada (Bancos, Governo, Seguros) que exigem rastro imutável de quem aprovou cada mudança.
  • Uma equipe central de Cloud Platform que quer entregar infraestrutura como serviço, sem dar chaves de API na mão dos times.

...então o OCI Resource Manager torna-se muito superior ao Terraform CLI, porque ele transforma IaC de um exercício de linha de comando em um portal de autosserviço.

Se você precisa de Governança, Segurança e Rastreabilidade, o OCI Resource Manager é perfeito para seu compliance corporativo.

Conclusão

O OCI Resource Manager resolve de forma nativa e elegante um dos maiores gargalos das equipes de DevOps: a gestão descentralizada do arquivo de estado do Terraform. Ao abstrair o backend remoto e centralizar as execuções diretamente na nuvem da Oracle, ele garante segurança, rastreabilidade e elimina os riscos de concorrência.

Se você já utiliza ou planeja utilizar a Oracle Cloud Infrastructure, adotar o Resource Manager é o passo natural para amadurecer sua governança de Infraestrutura como Código (IaC) sem precisar investir tempo configurando infraestruturas de CI/CD complexas apenas para rodar o Terraform.

Perguntas Frequentes (FAQ)

1. O OCI Resource Manager cobra pelo uso?

Não. O OCI Resource Manager é um serviço gratuito fornecido pela Oracle Cloud Infrastructure. Você paga apenas pelos recursos de infraestrutura (como instâncias, volumes e bancos de dados) que o Terraform provisiona na sua conta.

2. Posso usar módulos externos do Terraform Registry no Resource Manager?

Sim. Se o seu código Terraform referenciar módulos públicos ou privados, o Resource Manager fará o download das dependências automaticamente durante a fase de inicialização do Job (como seria com terraform init).

3. O que acontece se duas pessoas tentarem rodar um Apply na mesma Stack?

O Resource Manager possui um sistema nativo de State Locking. O segundo Job entrará em fila ou será recusado até que o primeiro Job seja concluído, evitando corrupção de estado ou sobrescrita acidental de recursos.

4. O que é e para que serve o Drift Detection no OCI Resource Manager?

O Drift Detection compara a infraestrutura configurada no arquivo de estado (.tfstate) com o estado real dos recursos na nuvem. Ele gera um relatório identificando se alguém fez alterações manuais (via console da OCI) fora do Terraform.

5. Posso importar uma infraestrutura que já existe na OCI para o Resource Manager?

Sim. Você pode utilizar a funcionalidade Import State dentro da Stack para mapear recursos já existentes no seu Compartment para o estado do Terraform gerenciado pelo Resource Manager.

Top comments (0)