Gerenciando VMs pelo Terraform na Oracle Cloud

Estou escrevendo esse post para ajudar quem está começando na gerência servidores alocados pelo Terraform na Oracle Cloud.

Eu utilizo o Terraform Cloud para fazer o controle das versões do state da infraestrutura por isso vou começar mostrando as configurações necessárias de serem feitas no Terraform Cloud para poder executar a criação das máquinas.

No caso é necessário criar as variáveis de ambiente que são exibidas na imagem abaixo para o Terraform Cloud ter acesso na sua conta da OCI e poder criar os objetos.

Não vou entrar em detalhes de configuração do Terraform Cloud com o Gitlab e nos detalhes das configurações da Oracle Cloud para poder gerar essas variáveis, pois iria deixar muito longa a postagem.

Criação do Provider

Depois de toda a integração ter sido feita entre o Gitlab e o Terraform Cloud começamos pela com a criação do arquivo main.tf que basicamente vai definir o provider que vai ser utilizado, no caso o provider da oracle/oci.

Nesse exemplo eu optei por definir a variável compartment_ocid diretamente no arquivo, mas ela poderia ter sido definida juntamente com as outras variáveis diretamente no Terraform Cloud.

Criação da VCN

Agora que o provider foi definido a primeira coisa que eu faço é criar a minha VCN, e as sub-redes que eu vou colocar as máquinas que irei criar. Nesse caso eu crio o arquivo vcn.tf conforme o conteúdo abaixo.

A VCN é criada utilizando o CIDR 10.1.0.0/16 e nessa VCN eu crio duas sub-redes, uma para colocar servidores de aplicação chamada subnet-app usando o bloco CIDR 10.1.0.0/24 e outra chamada subnet-bd para colocar servidores de Banco de Dados, essa usando o bloco CIDR 10.1.1.0/24.

Eu configuro o DHCP default da VCN que foi criada para definir que as máquinas incluídas nessa VCN irão pesquisar por padrão no domínio adonai.eti.br, também configuro a tabela de roteamento e o gateway padrão, basicamente apenas coloco um nome neles, sem alterações no funcionamento padrão.

A Security List padrão que é criada com a VCN eu libero todo o tráfego nela, tanto de entrada quanto de saída.

As regras de acesso eu irei fazer usando os Security Groups que são associados diretamente nas interfaces das máquinas.

Criação da Instance app1

A criação da VM eu faço no arquivo app1.tf esse passo não tem muitas particularidades, uma coisa que eu faço diferente é selecionar a opção de não associar um IP público na criação da VM (assign_public_ip=false), pois eu vou criar esse IP público no proximo passo e fazer a associação de forma manual.

Desta forma posso manter o IP quando for preciso recriar a VM, apenas precisa vincular o IP que ja existe com a nova VM.

Na criação da máquina precisa informar a sua chave pública para incluir no servidor que vai ser criado, sem isso não tem como logar no servidor após a sua criação.

Na criação da Instance eu já estou vinculando na interface dela dois Security Groups, um que vai liberar o acesso nas portas 80 e 443 e outro que vai liberar o acesso na porta 22.

Criação do IP Público

Como falei no passo anterior, agora vou criar o IP Público que vai ser vinculado com a VM que estou criando, no arquivo app1-public-ip.tf é criado o IP e ele é associado a primeira interface de rede que está vinculada a instancia app1.

Criação dos Security Groups para acesso http, https e ssh

Nessa etapa eu crio dois Security Groups, eu prefiro criar dois arquivos separados, um chamado sg-webserver.tf e o outro sg-sshserver.tf para facilitar a manutenção e a organização do código.

Primeiro é criado um security group com o nome de sg-webserver e duas security rules uma regra liberando o acesso na porta 80 e outra liberando o acesso na porta 443.

O segundo security group é criado com apenas uma security rule que vai liberar o acesso na porta 22.

Conclusão

Com a criação de todos esses objetos voce vai conseguir alocar um servidor totalmente configurado na Oracle Cloud, criando uma VCN para controlar o acesso e segmentar os seus servidores, com regras de firewall para permitir o acesso a cada máquina que for criada e com a reserva de um IP fixo que voce não vai perder a cada vez que precisar recriar a máquina.

Os arquivos que estou colocando aqui no post também estão publicados no meu repositório no Gitlab nesse endereço: https://gitlab.com/publicos-adonai/terraform-oracle-cloud

Se deseja ver outros posts sobre Infra-as-code acesse esse link: https://www.adonai.eti.br/category/infra-as-code/

Outros posts sobre Oracle Cloud acessem aqui: https://www.adonai.eti.br/category/oracle-cloud/

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *