-
Notifications
You must be signed in to change notification settings - Fork 69
feat/add iac aws #539
base: main
Are you sure you want to change the base?
feat/add iac aws #539
Conversation
DATABASES = { | ||
'default': { | ||
'ENGINE': 'django.db.backends.postgresql', | ||
'POSTGRES_ENDPOINT': os.getenv('POSTGRES_ENDPOINT'), | ||
'POSTGRES_NAME': os.getenv('POSTGRES_NAME'), | ||
'POSTGRES_USER': os.getenv('POSTGRES_USER'), | ||
'POSTGRES_PASSWORD': os.getenv('POSTGRES_PASSWORD'), | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Não sei se essa é maneira mais elegante para utilizar variaveis de ambiente.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tá OK pra mim isso 👍
Uma outra opção seria usar o dj-database-url
para parsear uma variável DATABASE_URL
que é geralmente usada em serviços, mas não é necessário.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Acabei de notar que o dj-database-url
já está sendo utilizado em prod, então eu acho que só precisa definir a variável de ambiente DATABASE_URL
.
@@ -153,7 +162,7 @@ class Common(Configuration): | |||
|
|||
class Dev(Common): | |||
DEBUG = True | |||
ALLOWED_HOSTS = ["localhost", "127.0.0.1", "[::1]", "0.0.0.0"] | |||
ALLOWED_HOSTS = ["localhost", "127.0.0.1", "[::1]", "0.0.0.0", "load-balance-mentoria-1815320676.us-east-1.elb.amazonaws.com"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Talvez conseguimos resolver o allow_host utilizando a URL do site.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Eu acabei não vendo esse comentário. Eu acho que dá para só definir a variável ALLOWED_HOSTS
que a versão em prod carrega automaticamennte.
O problema que você estava tendo é rodando local?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A maioria é só sugestão, mas está bem legal 🙂
@@ -18,3 +18,5 @@ RUN apt-get update && \ | |||
COPY . . | |||
|
|||
RUN python manage.py collectstatic --no-input | |||
|
|||
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seria bom ler a porta de uma variável de ambiente, assim daria para fazer o bind e uma porta especificada pelo usuário.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Vamos tentar fazer o uso do CMD durante do build da imagem docker.
], | ||
"environment": [ | ||
{ | ||
"name": "AWESOME_ENV_VAR", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isso era para ser um exemplo? 😄
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sim, vou criar uma variável no pipeline que fará a substituição por production ou staging.
data "template_file" "container_definitions" { | ||
template = file("./container_definitions.json") | ||
vars = { | ||
IMAGE = var.image | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Esse provider foi depreciado. Você pode usar a função templatefile
no lugar:
module "ecs_mentoria" {
# ...
container_definitions = templatefile("${path.module}/container_definitions.json", {
IMAGE = var.image,
})
# ...
}
Usar path.module
também torna o acesso a arquivos mais fácil, já que fica relativo ao lugar onde a expressão foi definida.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Boa, vou fazer o ajuste e testar.
name = "sentry_dsn", | ||
description = "Parâmetro referente à variável de ambiente SENTRY_DSN", | ||
type = "String", | ||
value = " " |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Não conheço de RDS, então posso estar falando besteira, mas a ideia aqui é uma string com um espaço em branco como valor ou uma string vazia? É importante notar que são duas coisas diferentes.
(A mesma coisa para os outros valores).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Esse recurso é referente ao parameter store da aws ele é semelhante a um cofre que pode armazenar valores de variáveis ou segredos. Vou analisar junto com a equipe do projeto Dados Abertos de Feira de Santana quais variáveis de ambiente serão criadas no projeto Maria Quitéria.
DATABASES = { | ||
'default': { | ||
'ENGINE': 'django.db.backends.postgresql', | ||
'POSTGRES_ENDPOINT': os.getenv('POSTGRES_ENDPOINT'), | ||
'POSTGRES_NAME': os.getenv('POSTGRES_NAME'), | ||
'POSTGRES_USER': os.getenv('POSTGRES_USER'), | ||
'POSTGRES_PASSWORD': os.getenv('POSTGRES_PASSWORD'), | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tá OK pra mim isso 👍
Uma outra opção seria usar o dj-database-url
para parsear uma variável DATABASE_URL
que é geralmente usada em serviços, mas não é necessário.
|
||
on: [ push, pull_request ] | ||
env: | ||
TF_VAR_image: ezmom/mariaquiteria:latest |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Essa imagem vai ficar em uma conta do pessoal de Feira de Santana?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Estou utilizando essa para teste, ainda não tenho o nome do registrer do projeto Maria Quitéria. Assim que conseguir faço o ajuste.
Co-authored-by: Luiz Aoqui <[email protected]>
Co-authored-by: Luiz Aoqui <[email protected]>
Co-authored-by: Luiz Aoqui <[email protected]>
Co-authored-by: Luiz Aoqui <[email protected]>
Co-authored-by: Luiz Aoqui <[email protected]>
Oi, pessoas! Precisam de ajuda aqui? @EzzioMoreira @lgfa29 |
@anapaulagomes tudo bem? No momento não precisamos de ajuda. Ainda estamos em recesso na Mentoria DevOps. Vou ver direitinho quando podemos voltar aos trabalhos e consequentemente vamos conseguir avançar na migração da aplicação para ECS. |
Massa, muito obrigada, @EzzioMoreira! 🚀 |
Titulo
Migra projeto Maria Quitéria para ECS AWS.
Issue
Objetivo
Migra projeto da infraestrutura on-primese para AWS.
Referências
Estamos utilizando os seguintes projetos:
Como testar
Será preciso definir secrets no repositório do projeto Maria Quitéria para testar os códigos terraform:
Para criar secrets no github siga essa documentação -> Documentação Github secrets
Esses são os segredos que precisamos criar no github:
Após configurar as secrets será preciso definir o valor das variavéis do arquivo terrafile.tf.
TO DO
settings.py
para pegar os valores das variavel de ambiente: