{"id":22868356,"url":"https://github.com/deirofelippe/magalucloud-terraform","last_synced_at":"2026-05-04T10:40:27.890Z","repository":{"id":264245398,"uuid":"892778038","full_name":"deirofelippe/magalucloud-terraform","owner":"deirofelippe","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-24T19:30:36.000Z","size":519,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-06T15:53:18.399Z","etag":null,"topics":["docker","flask","magalucloud","python","terraform"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deirofelippe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-22T18:59:54.000Z","updated_at":"2024-11-24T19:30:40.000Z","dependencies_parsed_at":"2025-02-06T15:42:45.201Z","dependency_job_id":"7f9097a9-aae6-4d55-8e5d-6764ff995e27","html_url":"https://github.com/deirofelippe/magalucloud-terraform","commit_stats":null,"previous_names":["deirofelippe/magalucloud-terraform"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deirofelippe%2Fmagalucloud-terraform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deirofelippe%2Fmagalucloud-terraform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deirofelippe%2Fmagalucloud-terraform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deirofelippe%2Fmagalucloud-terraform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deirofelippe","download_url":"https://codeload.github.com/deirofelippe/magalucloud-terraform/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246458022,"owners_count":20780675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","flask","magalucloud","python","terraform"],"created_at":"2024-12-13T12:33:30.427Z","updated_at":"2026-05-04T10:40:27.861Z","avatar_url":"https://github.com/deirofelippe.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Magalu Cloud com Terraform\n\nO 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).\n\n## Resumo\n\n- [Terraform](#terraform)\n- [Como executar na Magalu Cloud?](#como-executar-na-magalu-cloud)\n  - [Configuração inicial do cli e do projeto](#configuração-inicial-do-cli-e-do-projeto)\n  - [Usando a CLI](#usando-a-cli)\n  - [Construindo a infra com terraform e fazendo upload](#construindo-a-infra-com-terraform-e-fazendo-upload)\n  - [Testando as rotas](#testando-as-rotas)\n- [Como executar localmente?](#como-executar-localmente)\n\n## Terraform\n\n## Como executar na Magalu Cloud?\n\n### Configuração inicial do cli e do projeto\n\nFaça o cadastro na [Magalu Cloud](https://magalu.cloud/)\n\nInstale 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.\n\n- Baixe o código `git clone https://github.com/deirofelippe/magalucloud-terraform.git`\n\n- `cd ./magalucloud-terraform`\n\n### Usando a CLI\n\nPara 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.\n\n- Liste as instâncias (pode copiar pelo site também): `mgc virtual-machines instances list`\n\n  ![](./images/img-4.png)\n\n- Exiba os detalhes da instância: `mgc virtual-machines instances get --id=\"f0378b58-5939-43a9-93a8-424132c2e9cf\"`\n\n  ![](./images/img-5.png)\n\n### Construindo a infra com terraform e fazendo upload\n\n- Gere a chave SSH: `ssh-keygen -t rsa -b 2048 -f ./mgc_ssh_key -N \"\"`\n\n- `terraform -chdir=./terraform init`\n\n- `terraform -chdir=./terraform plan`\n\n- `terraform -chdir=./terraform apply -auto-approve`\n\n- Copia o IP público gerado.\n\n  ![](./images/img-1.png)\n\n- Cole o IP nos comandos abaixo, trocando pelo `\u003cIP-PÚBLICO\u003e` e execute-os.\n\n- `ssh -i ./mgc_ssh_key ubuntu@\u003cIP-PÚBLICO\u003e`: acesse o servidor para verificar a conexão.\n\n- Faça upload dos arquivos que serão executados no servidor:\n\n  - `rsync -vahz -e 'ssh -i ./mgc_ssh_key -p 22' ./scripts ubuntu@\u003cIP-PÚBLICO\u003e:/home/ubuntu`\n  - `rsync -vahz -e 'ssh -i ./mgc_ssh_key -p 22' ./.env ./docker-compose.prod.yaml ubuntu@\u003cIP-PÚBLICO\u003e:/home/ubuntu/scripts`\n\n- Execute o arquivo remotamente que irá instalar o docker e executar o docker compose: `ssh -i ./mgc_ssh_key ubuntu@\u003cIP-PÚBLICO\u003e \"bash -c './scripts/config-virtual-machine.sh'\"`\n\n### Testando as rotas\n\n- Faça as requisições para testar as rotas, no arquivo `./requests.http` possi o registro.\n\n  ![](./images/img-2.png)\n\n  ![](./images/img-3.png)\n\n- Não esqueça de destruir os recursos criados para não ser cobrado: `terraform -chdir=./terraform destroy -auto-approve`.\n\n## Como executar localmente?\n\n- Inicia os containeres: `make up`\n- Faça as requisições para testar as rotas, no arquivo `./requests.http` possi o registro.\n- Para visualizar o banco, acesse o pgamin pela ulr http://localhost:8080\n\n  - Email: admin@admin.com\n  - Senha: admin\n\n  ![](./images/img-6.png)\n\n  ![](./images/img-7.png)\n\n  ![](./images/img-8.png)\n\n  ![](./images/img-9.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeirofelippe%2Fmagalucloud-terraform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeirofelippe%2Fmagalucloud-terraform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeirofelippe%2Fmagalucloud-terraform/lists"}