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:
Forneça um nome para suas máquinas (por exemplo dev-machine01)
Vamos configurar a imagem da VM para usar o Ubuntu 20.04:
Configure o formato da VM para ser: Ampere (processadores ARM) usando 4 VCPU e 24 gigabytes de RAM. (Sim, teremos uma boa máquina)
Em Rede, selecione a rede pública padrão e opte por atribuir um endereço IP público:
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)
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:
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:
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:
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?
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
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