Usando Oracle Cloud para criar um ambiente de desenvolvimento (gratís)

Contexto

Um amigo desenvolvedor iniciante que usa o smartphone para aprender programação, me perguntou se é possível criar um “ambiente de desenvolvimento online” usando os recursos gratís do OCI (Oracle Cloud Infrastructure)

Um comentário rápido e fora do assunto: é muito comum aqui no Brasil jovens que desejam aprender sobre desenvolvimento e programação e não têm acesso a um computador. Eu sei, isso é triste, mas é a verdade.

A ideia por trás do artigo é criar um tutorial passo a passo para criar uma máquina virtual, instalar uma interface de desktop, instalar o docker e algumas ferramentas utilitárias.

Vamos começar.

Hands-On

Acesse o site do Oracle Cloud (https://www.oracle.com/cloud/free/) e cadastre-se para obter uma conta gratuita.

Criando a instância da máquina virtual

Após fazer login em sua conta, vá ao menu Instância e clique no botão Criar Instância:

criar instancia

Forneça um nome para suas máquinas (por exemplo dev-machine01)

nome instancia

Vamos configurar a imagem da VM para usar o Ubuntu 20.04:

config instancia

Configure o formato da VM para ser: Ampere (processadores ARM) usando 4 VCPU e 24 gigabytes de RAM. (Sim, teremos uma boa máquina)

config instancia

Em Rede, selecione a rede pública padrão e opte por atribuir um endereço IP público:

config instancia

Na seção Adicionar chaves SSH, recomendo que você crie sua própria chave personalizada e cole a chave pública aqui.

Dica: Como criar uma chave privada e pública para SSH (https://docs.oracle.com/cd/E19683-01/806-4078/6jd6cjru7/index.html)

config instancia

Em seguida, clique no botão Criar. Agora espere alguns minutos e suas máquinas virtuais estarão instaladas e funcionando.

Configurando a máquina virtual

Aguarde a VM concluir o provisionamento e a inicialização e, em seguida, encontre o IP público no menu Instância:

config instancia

Conecte-se à VM usando o comando ssh:

ssh -i <caminho para sua chave privada> ubuntu@<seu endereço IP público>

Agora vamos instalar um Desktop Manager, execute os seguintes comandos:

sudo apt update
sudo apt install -y tasksel
sudo apt install -y xubuntu-desktop

Se algum menu solicitar uma opção, use a opção padrão.

Este processo levará alguns minutos.

Para acessar remotamente o Ambiente Desktop, devemos instalar o servidor xrdp na máquina, para instalar execute este comando:

sudo apt install -y xrdp
sudo systemctl enable --now xrdp
sudo su
iptables -F
iptables-save > /etc/iptables/rules.v4

Esses comandos instalarão o xrdp e abrirão todas as portas para conexões remotas.

Agora vamos editar o Xrdp para começar a usar o Xfce:

sudo service xrdp stop
sudo vi /etc/xrdp/startwm.sh

Edite o arquivo, adicionando um comentário(#) nas duas últimas linhas, e adicionando uma nova linha com o seguinte conteúdo “startxfce4", seu arquivo deverá ficar como abaixo:

#test -x /etc/X11/Xsession && exec /etc/X11/Xsession
#exec /bin/sh /etc/X11/Xsession
startxfce4

Salve o arquivo e reinicie o serviço xrdp:

sudo service xrdp start

Para finalizar a configuração é necessário definir uma senha para o usuário ubuntu (esta senha será usada para fazer login na VM via Remote Desktop):

sudo passwd ubuntu

Configuração da lista de segurança

Na página Rede, acesse a sub-rede pública e adicione a seguinte regra de entrada:

config instancia

Esta regra permitirá a comunicação da Internet para a porta 3389 (Área de Trabalho Remota) da VM.

#Conectando-se à VM usando a Área de Trabalho Remota

Usando o IP público, você pode se conectar à VM:

config instancia

PS.: Você pode utilizar o seu cliente (Android, etc) desejado.

Use o ubuntu para “Username” e clique em conectar.

Instalando utilitários

Instalar terminador

Terminator é um emulador de terminal de código aberto programado em Java. Está disponível em Microsoft Windows, macOS, Linux e outros sistemas Unix que usam o X Window System. O Terminator será executado em qualquer sistema POSIX moderno executando Java 6 ou posterior. O Terminator é licenciado sob a licença GPL-2.0 ou posterior.

Para instalar o terminador, basta executar o seguinte comando:

sudo apt install -y terminator

Instalar docker

Para instalar o docker recomendo que você siga este tutorial https://docs.docker.com/engine/install/ubuntu/.

Preste atenção apenas a esta etapa:

Lembre-se de selecionar arm64.

E então siga este tutorial https://docs.docker.com/engine/install/linux-postinstall/

Instalar ASDF

asdf é uma ferramenta CLI que pode gerenciar versões de tempo de execução de vários idiomas por projeto. É como gvm, nvm, rbenv e pyenv (e mais), tudo em um.

Para instalar o ASDF recomendo que você siga este tutorial https://asdf-vm.com/#/core-manage-asdf?id=asdf

Usando ASDF você pode instalar e gerenciar múltiplas versões da mesma linguagem, por exemplo, Java, Python, Nodejs, Ruby, etc.

Instale o VSCode

Para instalar o VSCode recomendo que você acesse o site https://code.visualstudio.com/docs/?dv=linuxarm64 e baixe o pacote.

Tentei criar conforme o tutorial porém eu obtive esse erro:

Out of capacity for shape VM.Standard.A1.Flex in availability domain AD-1. Create the instance in a different availability domain or try again later. If you specified a fault domain, try creating the instance without specifying a fault domain. If that doesn’t work, please try again later. Learn more about host capacity.

Saberia me ajudar?

Eu criei uma para teste de algumas coisas, principalmente aprender linux pelo terminal. Mas infelizmente cometi um erro e desejava "formatar" a instacia, sem ter que deletar e criar outra. Saberia me dizer como? Pelo terminal se possivel. Tipo, para deixar ao padrão de como uma instacia recém instalada.

Uma pergunta, pq o Docker? Tem algum motivo específico pra essa máquina virtual ou é só pro ambiente de desenvolvimento?

Eu sempre instalo Docker no ambiente de desenvolvimento, rodar qualquer serviço que você precisa ser ter que instalar pacote na máquina é muito bom, se não estiver mais usando o serviço é só remover o container e tudo fica zero bala, sem contar da segurança extra que você ganha por estar utilizando containers(isolamento).

Você teria por acaso um arquivo terraform ou ansible que faz esta configuração? Estou tentando automatizar a configuração de uma máquina para rodar, via docker, em projeto Django com PostgreSQL nginx e FastAPI.

Mano, que daora!


Configure o formato da VM para ser: Ampere (processadores ARM) usando 4 VCPU e 24 gigabytes de RAM. (Sim, teremos uma boa máquina)

Qual é a pegadinha para a gente ter uma VM tão boa assim de graça?

Eu queria migrar meu site da AWS para a Oracle, mas tenho medo que logo essa máquina de graça deles seja removida, será que isso pode acontecer?


Uma coisa que eu fiquei na dúvida, essa máquina tem 4 VCPU e 24 GB de RAM, mas quanto de armazenamento tem essa máquina?


Muito obrigado pela publicação é mais um incentivo para eu migrar logo kkkk

Opa! Tudo bem? > Eu queria migrar meu site da AWS para a Oracle, mas tenho medo que logo essa máquina de graça deles seja removida, será que isso pode acontecer? Segundo o site da Oracle: > As instâncias de computação Always Free inativas podem ser recuperadas pela Oracle. Serão consideradas inativas pela Oracle as instâncias de computação de máquina virtual e bare metal se, durante um período de 7 dias, as seguintes afirmações forem verdadeiras: > > A utilização de CPU para o percentil 95 é inferior a 20% > A utilização da rede é inferior a 20% > A utilização de memória é inferior a 20% (só se aplica a formas A1) Essas são as informações. Segue fonte: https://docs.oracle.com/pt-br/iaas/Content/FreeTier/freetier_topic-Always_Free_Resources.htm > Uma coisa que eu fiquei na dúvida, essa máquina tem 4 VCPU e 24 GB de RAM, mas quanto de armazenamento tem essa máquina? Possui 200GB gratuitos do block storage
- [ ] A utilização de CPU para o percentil 95 é inferior a 20% - [ ] A utilização da rede é inferior a 20% - [ ] A utilização de memória é inferior a 20% (só se aplica a formas A1) Eu gostaria de algumas estratégias de evitar que a máquina 4 VCPU e 24 GB de RAM seja removida, na verdade queria mais para testes mesmos com LLM. Alguma ideia do que posso fazer para manter a instância "em uso" ,mesmo de fato não estando? Outra pergunta: precisa de numerod e cartão de crédito para a free tier?
Eu não lembro se precisa do cartão na hora do cadastro, mas se precisa é só colocar e depois remover, dica cria um virtual e depois exclui. Sobre os pontos e remoção, eu tenho uma máquina rodando lá a dois anos e até tinha esquecido dela e ela não foi removida. Acho que isso é mais uma proteção extra que eles criaram. E vamos falar a verdade é grátis não espere perfeição. PS.: Um detalhe extra é um 4 VCPU(ARM) para LLM não espere altas performances...

Eu tenho uma maquina lá fazem uns dois anos, primeiro com AMD (2x vms de 1gb) e agora possuo apenas ARM com 24GB.

É excelente, minha maquina esta subutilizada, tenho uns serviços em docker (grafana, zabbix, omada, unifi, nginx e alguns outros que não lembro), fico com uns 20GB livre direto.

Nunca fui cobrado.

Sobre o armazenamento ACHO que é 50gb.

Excelente artigo. Só um detalhe: terminator não é Java e sim Python

Fonte: https://github.com/gnome-terminator/terminator