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!
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!
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:
AWS: https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/solution-overview.html
Fóruns: https://serverfault.com/questions/867642/how-to-start-and-stop-aws-ec2-instance-based-on-a-time-based-schedule https://medium.com/@cristianlobomartin/start-and-stop-your-ec2s-on-a-schedule-a7a26cab38c https://www.stormit.cloud/blog/aws-instance-scheduler/
Terraform https://aembit.io/blog/using-terraform-to-configure-aws-to-periodically-start-an-ec2-instance https://medium.com/geekculture/terraform-setup-for-automatically-turning-off-ec2-instances-upon-inactivity-d7f414390800
Github https://gist.github.com/picadoh/815c11361d1a88419ea16b14fe044e85
--
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