O que é o Resouce Manager
É um serviço do Oracle Cloud Infrastructure que permite automatizar o processo de provisionamento de recursos de infraestrutura. Através do Terraform, o serviço Resource Manager auxilia a instalação, configuração e gerenciamento de recursos por meio do modelo “infraestrutura como código”.
O termo infraestrutura como código (IaC) vem da metodologia DevOps, que traz como um dos seus pilares automatizar o máximo possível processos manuais, além de garantir entregas mais rápidas, seguras e controladas. Ao transformar infraestrutura em código é possível trabalhar com entregas continuas (CD), auditoria de código, versior configurações e descentralizar o controle. Esses ganhos que uma infraestrutura códificada trazem tornam o ambiente de trabalho muito mais resiliente e seguro.
Principais Conceitos
A seguir descrições resumidas dos principais conceitos e componentes do serviço Resource Manager.
Não será mostrado como é o funcionamento de código de Terraform, porém, existem outros blogs e na internet uma vasta documentação.
- Configuration: São todas informações textuais (código) para instruir a criação da infraestrutura.
- Configuration source provider: Indica a localização do código-fonte que será utilizado.
- Drift: É a diferença entre o que está provisionado atualmente na infraestrutura em OCI e o código de configuração utilizado.
- Job: São as instruções para executar o provisionamento da infraestrutura.
- Module:Grupo de recursos relacionados.
- Package: Um arquivo fechado com configurações de Terraform armazenado em algum provedor
- Private endpoint: Informações de rede de recursos em OCI que não estão expostos na internet.
- Resouce Discovery: Recurso para capturar a insfraestrutura em OCI e transformala em código Terraform.
- Stack: Conjunto de recursos de OCI correspondente em uma configuração Terraform.
- State: O estado da configuração do recurso, armazenado no formato JSON em um arquivo de estado.
- Template: Um modelo de configuração Terraform já predefinida com provisionamento de recursos básicos.
Criando infraestrutura de rede básica com Resource Manager
Para entendermos melhor o serviço do Resource Manager, vamos criar uma estrutura de rede básica (VCN, Subnet, Route Tables, Security List, DHCP, Internet Gateway) utilizando um Template de rede já pronto dentro da OCI.
O objetivo é ver na prático como o serviço Resource Manager automatiza tarefas manuas. Após isso, iremos ver como é o gerencialmente através da console de recursos que forma criados dessa forma.
1. Passo
O acesso ao serviço que fica no menu hambúrguer, categoria Developer Services, subcategoria Resource Manager.
No menu do serviço, a direta, vamos selecionar o item Stacks, e em seguida apertar o botão Create stack.

2. Passo
Na tela do Create stack, a esquerda, existe 3 etapas que devemos percorrer, sendo que já estamos na primeira, Stack information. Aqui devemos informar a origem de configuração do Terraform. Para nosso caso, vamos selecionar opção Template, que são modelos de Terraform prontos com configuração completa de vários recursos.
Ao entrar em Change template, aba Service, vamos selecionar o Template Name com nome Default VCN. Na descrição é possível validar tudo que será provisionado com esse código Terraform. Logo abaixo, pode definido ou deixar padrão o nome e descrição para Stack que será criada. É necessário também indicar o Compartment onde será provisionado esse recurso. Ao final, basta confirmar no botão Next, e assim seguimos para próxima etapa.

3.Passo
Na segunda etapa, Configure variables, deve ser definido qual será o bloco de rede (CDIR) criado e os nomes para VCN e DNS da VCN e Subnet. Por último, em Review, é mostrado um resumo de tudo que foi configurado e que será implementado.
Ainda em Review, existe uma opção que perguntando se desejamos executar a stack que está sendo criada (Run apply on the create stack?). Vamos selecionar essa opção e confirmar no botão Create (queremos que o código do Terraform seja executado e nossos recursos provisionados).

4.Passo
Depois de confirmada a criação e execução da stack, surgirá uma nova tela onde basta acompanhar o provisionamento. Na tela aberta, é mostrado log da execução do Job, onde podemos ir acompanhando o que está sendo executado.

Ao final vemos o status da execução do Job, além disso, podemos percorrer o log da execução e fazer download desse arquivo.

Agora com a stack criada e os recursos provisionados, vamos validar na console da OCI se os recursos estão conforme configurados.

5.Passo
Sabendo que os recursos foram criados conforme código Terraform, é hora de olhar a stack e explorar um pouquinho mais os recursos disponíveis na Console.
Ao acessar novamente o menu do Resource Manager, seguido da opção Stacks, vamos selecionar o nome da stack criada, em nosso exemplo “VCN-Test”. Dentro da stack, à esquerda existe um peque menu chamado Resources com as seguintes opções:
- Job, exibe log da última execução;
- Variables, exibe detalhes onde os recursos e stack estão provisionados;
- Work request, exibe a barra de processo durante execução de alguma ação;
- Stack resources, exibe os recursos que formam criados com o código Terraform da stack;
- View state, exibe de fato o código Terraform com toda representação da infraestrutura;

Ainda na mesma tela, na parte superior da stack, existem alguns botões com ações especificas, vamos passar por cada um deles:
- Edit: Aqui temos duas opções; a primeira, Edit Stack, permite trocar o nome da stack, descrição e alterar o código de origem Terraform. Na segunda opção, Edit Terraform configuration in code editor, podemos alterar o código Terraform;
- Plan: Execute o código Terraform, mas somente o mostrando como será o planejamento para execução;
- Apply: Executa e implementas as ações que estão no código Terraform;
- Destroy: Elimina toda infraestrutura que foi provisionada com o código Terraform:
- More Actions:
- Import state: Permite importar um arquivo outro arquivo tfstate/tjson com estado da infraestrutura (sempre que o código Terraform é executado ao final um arquivo .tfstate é criado, este arquivo armazena o estado atual da sua infraestrutura após execução;
- Run drift detection: Escaneia para detectar desvio, isto é, verificar se existe diferença entre código Terraform e a infraestrutura atual que foi provida anteriormente através código;
- View drift detection report: Visualizar o desvio detectado;
- Download Terraform state: Executar download do arquivo Terraform
- Move resource: Move stack para um outro compartimento
- Add tags: Colocar tags na stack
- Delete stack: Deletar a stack criada

Conclusão
Conforme demostrado nesse artigo, o serviço do Resource Manager possibilita automatizar atividades manuais que normalmente demandariam tempo e alocação de pessoas para executar. Com esse serviço além de ganhar agilidade e segurança, uma vez que toda infraestrutura está toda textual, é perfeitamente cabivel realizar auditorias e versionada. A importância dessa metodologia de trabalho está alinhada diretamente com a cultura DevOps, que tem como objetivo criar um ambiente autônomo. Conforme demostrado nesse artigo, o serviço do Resource Manager possibilita automatizar atividades manuais que normalmente levariam tempo além da necessidade da alocação de recursos humanos para executar. Com esse serviço, fora o ganho de agilidade e segurança, uma vez que toda infraestrutura está textual, é perfeitamente cabível realizar auditorias nesse código e ainda ser possível criar várias versões do mesmo documento. Somado a todas vantagens, a importância dessa metodologia de trabalho está alinhada diretamente com a cultura DevOps, que tem como um dos principais objetivos criar ambientes autônomos.
