From e17b4c71c6fbe95502b855e959df26faec69d45e Mon Sep 17 00:00:00 2001 From: Igor Santos Date: Wed, 18 Dec 2024 14:33:00 -0300 Subject: [PATCH] feat(terraform): add sites server to instances --- README.md | 23 +++++++++++++++++++++++ instances/main.tf | 24 ++++++++++++++---------- instances/variables.tf | 17 +++++++++++++++++ 3 files changed, 54 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index cfc6786..df7cfb1 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,11 @@ terraform init -auto-approve Essa sequência de comandos acima irá criar a infraestrutura não persistente responsável por cuidar do estado da nossa infraestrutura persistente. ### Executando a infraestrutura com esquema de workspaces do terraform + Este projeto utiliza *workspaces* do Terraform para gerenciar múltiplos ambientes (como `dev`, `stage` e `prod`) dentro de uma única configuração de infraestrutura. Cada *workspace* permite isolar o estado e os recursos entre diferentes ambientes. Dentro da estrutura do nosso código, temos o arquivo `main.tf` onde nós definimos todas as variáveis *default*, como a seguir: + ``` locals { # Tipo de imagem para o servidor legado (APIS e Clientes Bonde) @@ -109,6 +111,27 @@ locals { terraform apply -auto-approve ``` +### Configuração do ambiente + +Você deve configurar as seguintes váriaveis no seu ambiente de execução do terraform. Lembre-se você deve utilizar os mesmos valores de váriaveis que outros ambientes que também executam o terraform, exemplo dev local e github actions. + +``` +TF_VAR_influxdb_token= +TF_VAR_ami= +# legacy envs +TF_VAR_legacy_elastic_ip_allocation_id= +TF_VAR_legacy_server_instance_type= +TF_VAR_legacy_portainer_edge_id= +TF_VAR_legacy_portainer_edge_key= +# sites envs +TF_VAR_sites_elastic_ip_allocation_id= +TF_VAR_sites_server_instance_type= +TF_VAR_sites_portainer_edge_id= +TF_VAR_sites_portainer_edge_key= +``` + +NOTE: As váriaveis com suffix `_elastic_ip_allocation_id` não são obrigatórias, caso você não configure os scripts não vão associar um IP Elástico ao seus servidores. + ## Sites diff --git a/instances/main.tf b/instances/main.tf index 39281f1..5460856 100644 --- a/instances/main.tf +++ b/instances/main.tf @@ -51,13 +51,17 @@ module "legacy_server" { portainer_edge_key = var.legacy_portainer_edge_key } -# module "sites_server" { -# source = "./modules/common" -# ami = var.ami -# instance_type = var.sites_server_instance_type -# instance_name = "sites-server-${local.env}" -# key_name = local.key_name -# private_key_path = local.private_key_path -# monitoring_files_path = "./monitoring" -# influxdb_token = var.influxdb_token -# } \ No newline at end of file +module "sites_server" { + source = "./modules/common" + ami = var.ami + instance_type = var.sites_server_instance_type + instance_name = "sites-server-${local.env}" + volume_size = terraform.workspace == "prod" ? 100 : 30 + key_name = local.key_name + private_key_path = local.private_key_path + monitoring_files_path = "./monitoring" + influxdb_token = var.influxdb_token + elastic_ip_allocation_id = var.sites_elastic_ip_allocation_id + portainer_edge_id = var.sites_portainer_edge_id + portainer_edge_key = var.sites_portainer_edge_key +} \ No newline at end of file diff --git a/instances/variables.tf b/instances/variables.tf index 79e5943..e660a2a 100644 --- a/instances/variables.tf +++ b/instances/variables.tf @@ -10,6 +10,12 @@ variable "legacy_elastic_ip_allocation_id" { default = "" } +variable "sites_elastic_ip_allocation_id" { + description = "ID da alocação de um IP Elástico da AWS" + type = string + default = "" +} + variable "ami" { description = "Tipo de imagem para o servidor legado (APIS e Clientes Bonde)" type = string @@ -39,4 +45,15 @@ variable "legacy_portainer_edge_key" { description = "Chave Secreta do ambiente no Portainer" type = string sensitive = true +} + +variable "sites_portainer_edge_id" { + description = "ID do ambiente no Portainer" + type = string +} + +variable "sites_portainer_edge_key" { + description = "Chave Secreta do ambiente no Portainer" + type = string + sensitive = true } \ No newline at end of file