https://github.com/deirofelippe/magalucloud-terraform
https://github.com/deirofelippe/magalucloud-terraform
docker flask magalucloud python terraform
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/deirofelippe/magalucloud-terraform
- Owner: deirofelippe
- Created: 2024-11-22T18:59:54.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-24T19:30:36.000Z (over 1 year ago)
- Last Synced: 2025-02-06T15:53:18.399Z (over 1 year ago)
- Topics: docker, flask, magalucloud, python, terraform
- Language: Python
- Homepage:
- Size: 507 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Magalu Cloud com Terraform
O sistema consiste em uma aplicação em Python e Flask que cadastra lançamentos no banco de dados PostgreSQL. Os containeres serão executada em uma máquina virtual na Magalu Cloud via docker compose. A imagem que será usada já está no [Docker Hub](https://hub.docker.com/r/deirofelippe/magalucloud-terraform).
## Resumo
- [Terraform](#terraform)
- [Como executar na Magalu Cloud?](#como-executar-na-magalu-cloud)
- [Configuração inicial do cli e do projeto](#configuração-inicial-do-cli-e-do-projeto)
- [Usando a CLI](#usando-a-cli)
- [Construindo a infra com terraform e fazendo upload](#construindo-a-infra-com-terraform-e-fazendo-upload)
- [Testando as rotas](#testando-as-rotas)
- [Como executar localmente?](#como-executar-localmente)
## Terraform
## Como executar na Magalu Cloud?
### Configuração inicial do cli e do projeto
Faça o cadastro na [Magalu Cloud](https://magalu.cloud/)
Instale o [CLI](https://docs.magalu.cloud/docs/devops-tools/cli-mgc/overview), vai ser necessário para usar o terraform sem precisar colocar a Api Key e também para listaros recursos pelo teminal.
- Baixe o código `git clone https://github.com/deirofelippe/magalucloud-terraform.git`
- `cd ./magalucloud-terraform`
### Usando a CLI
Para descobrir quais as `images` e as `machine types` disponíveis, pode ser listado via cli como diz na documentação ([aqui](https://docs.magalu.cloud/docs/computing/virtual-machine/how-to/images/list-images) e [aqui](https://docs.magalu.cloud/docs/computing/virtual-machine/how-to/machine-types/list-machines-types)), mas no momento não estão disponíveis. Uma forma que pode ser visto é criar manualmente a instância pelo site e listar os detalhes pela cli.
- Liste as instâncias (pode copiar pelo site também): `mgc virtual-machines instances list`

- Exiba os detalhes da instância: `mgc virtual-machines instances get --id="f0378b58-5939-43a9-93a8-424132c2e9cf"`

### Construindo a infra com terraform e fazendo upload
- Gere a chave SSH: `ssh-keygen -t rsa -b 2048 -f ./mgc_ssh_key -N ""`
- `terraform -chdir=./terraform init`
- `terraform -chdir=./terraform plan`
- `terraform -chdir=./terraform apply -auto-approve`
- Copia o IP público gerado.

- Cole o IP nos comandos abaixo, trocando pelo `` e execute-os.
- `ssh -i ./mgc_ssh_key ubuntu@`: acesse o servidor para verificar a conexão.
- Faça upload dos arquivos que serão executados no servidor:
- `rsync -vahz -e 'ssh -i ./mgc_ssh_key -p 22' ./scripts ubuntu@:/home/ubuntu`
- `rsync -vahz -e 'ssh -i ./mgc_ssh_key -p 22' ./.env ./docker-compose.prod.yaml ubuntu@:/home/ubuntu/scripts`
- Execute o arquivo remotamente que irá instalar o docker e executar o docker compose: `ssh -i ./mgc_ssh_key ubuntu@ "bash -c './scripts/config-virtual-machine.sh'"`
### Testando as rotas
- Faça as requisições para testar as rotas, no arquivo `./requests.http` possi o registro.


- Não esqueça de destruir os recursos criados para não ser cobrado: `terraform -chdir=./terraform destroy -auto-approve`.
## Como executar localmente?
- Inicia os containeres: `make up`
- Faça as requisições para testar as rotas, no arquivo `./requests.http` possi o registro.
- Para visualizar o banco, acesse o pgamin pela ulr http://localhost:8080
- Email: admin@admin.com
- Senha: admin



