3
respostas

[Dúvida] Como executamos a instância de desenvolvimento?

Boa noite pessoal, tudo certo? Não sei se é algo que eu deveria fazer no console da AWS, mas não entendi como a instância de desenvolvimento será criada com um mínimo de 0 instâncias. Eu perdi alguma coisa? Valew pessoal!

3 respostas

Olá @Mateus Osmarin

Sua [Dúvida] e pergunta ficou muito sem compreendimento. Mas para executar uma instância é simples, tem documentações da aws, agora a tag se é ambiente de desenvolvimento você que defini o especie do ambiente. https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/EC2_GetStarted.html

Boa tarde, tudo certo? Como eu havia marcado a aula em específico onde tinha ficado com a dúvida, pensei que o contexto estivesse mais claro. Mas vamos lá, na aula foi feita uma estrutura para ambientes de desenvolvimento e produção, utilizando launch template e autoscaling group. Estes são os blocos relevantes.

resource "aws_launch_template" "instance_template" {
  image_id             = "ami-007855ac798b5175e"
  instance_type        = var.instance_type
  key_name             = var.key_name
  security_group_names = [var.security_group]
  user_data            = var.production ? filebase64("ansible.sh") : null
  tags = {
    Name = "Terraform Ansible Python"
  }
}

resource "aws_autoscaling_group" "group" {
  name               = var.group_name
  availability_zones = ["${var.aws_region}a", "${var.aws_region}b"]
  min_size           = var.min_instances
  max_size           = var.max_instances
  launch_template {
    id      = aws_launch_template.instance_template.id
    version = "$Latest"
  }
  target_group_arns = var.production ? [aws_lb_target_group.load_balancer_target[0].arn] : []
}

resource "aws_autoscaling_policy" "autoscaling_policy" {
  name                   = "terraform-autoscaling-policy"
  autoscaling_group_name = var.group_name
  policy_type            = "TargetTrackingScaling"
  target_tracking_configuration {
    predefined_metric_specification {
      predefined_metric_type = "ASGAverageCPUUtilization"
    }
    target_value = 50
  }
  count = var.production ? 1 : 0
}

Para o ambiente de desenvolvimento, o módulo foi criado como

module "aws_dev" {
  source         = "../../infra"
  aws_region     = "us-east-1"
  key_name       = "iac-dev"
  instance_type  = "t2.micro"
  security_group = "dev"
  group_name     = "dev"
  min_instances  = 0
  max_instances  = 1
}

O problema é, então, que com um mínimo de 0 instâncias, não vai ser criada nenhuma instância. Posteriormente, no Alura+, houve uma aula que tratava sobre suspensão automática das instâncais de desenvolvimento, dessa forma:

resource "aws_autoscaling_schedule" "turn_on" {
  scheduled_action_name  = "turn_on"
  min_size               = 0
  max_size               = 1
  desired_capacity       = 1
  recurrence             = "0 10 * * MON-FRI"
  autoscaling_group_name = aws_autoscaling_group.group.name
}

resource "aws_autoscaling_schedule" "turn_off" {
  scheduled_action_name  = "turn_off"
  min_size               = 0
  max_size               = 1
  desired_capacity       = 0
  recurrence             = "0 21 * * MON-FRI"
  autoscaling_group_name = aws_autoscaling_group.group.name
}

Isso resolve o problema para ligar e desligar a máquina nos horários configurados. Mas ainda me resta uma dúvida, como eu poderia iniciar essa instância em um momento fora do horário configurado?

Fala @Mateus Osmarin

Agora o entendimento foi compreendido, então segue algumas notas e fóruns:

--

Atenciosamente, Danilo O. Pinheiro CEO DevsFree & MasterMind Arquiteto De Software | Arquiteto De Soluções | Engenheiro de Nuvem | Arquiteto Corporativo De Software | Gerente de Projetos | Líder técnico | Arquiteto Tecnológico

Contato: +55 (11) 9 3259-8362 Gmail

Facebook| Instagram | Linkedin | Twitter | Youtube