Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

309
Vistas
Terraform AWS: no se pudo reutilizar root_block_device creado anteriormente con la instancia de AWS EC2 lanzada con aws_launch_configuration

Implementé una pila ELK en AWS ECS con terraform. Todo funcionó bien durante algunas semanas, pero hace 2 días tuve que reiniciar la instancia.

Lamentablemente, la nueva instancia no se basó en el volumen existente para montar el dispositivo de bloqueo raíz. Entonces, todos mis datos de elasticsearch ya no están disponibles para mi instancia de Kibana.

Los datos todavía están aquí, en el volumen anterior, actualmente no se utilizan.

Así que probé muchas cosas para adjuntar este volumen en "dev/xvda" pero sin, por ejemplo:

  • Use ebs_block_device en lugar de root_block_device usando
  • Cambie "dev/xvda" cuando la instancia ya se esté ejecutando

Estoy usando aws_autoscaling_group con aws_launch_configuration.

 resource "aws_launch_configuration" "XXX" { name = "XXX" image_id = data.aws_ami.latest_ecs.id instance_type = var.INSTANCE_TYPE security_groups = [var.SECURITY_GROUP_ID] associate_public_ip_address = true iam_instance_profile = "XXXXXX" spot_price = "0.04" lifecycle { create_before_destroy = true } user_data = templatefile("${path.module}/ecs_agent_conf_options.tmpl", { cluster_name = aws_ecs_cluster.XXX.name } ) //The volume i want to reuse was created with this configuration. I though it would //be enough to reuse the same volume. It doesn't. root_block_device { delete_on_termination = false volume_size = 50 volume_type = "gp2" } } resource "aws_autoscaling_group" "YYY" { name = "YYY" min_size = var.MIN_INSTANCES max_size = var.MAX_INSTANCES desired_capacity = var.DESIRED_CAPACITY health_check_type = "EC2" availability_zones = ["eu-west-3b"] launch_configuration = aws_launch_configuration.XXX.name vpc_zone_identifier = [ var.SUBNET_1_ID, var.SUBNET_2_ID] }

¿Me pierdo algo obvio sobre esto?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Lamentablemente, no puede adjuntar un volumen como volumen raíz a una instancia.

Lo que tiene que hacer es crear una AMI personalizada en función de su volumen. Esto implica crear una instantánea del volumen seguida de la construcción de la AMI:

  • Creación de una AMI de Linux a partir de una instantánea

En terraform, hay aws_ami especialmente para ese propósito.

El siguiente script de terraform ejemplifica el proceso en tres pasos :

  1. Creación de una instantánea de un volumen dado
  2. Creación de una AMI a partir de la instantánea
  3. Creación de una instancia desde la AMI
 provider "aws" { # your data } resource "aws_ebs_snapshot" "snapshot" { volume_id = "vol-0ff4363a40eb3357c" # <-- your EBS volume ID } resource "aws_ami" "my" { name = "my-custom-ami" virtualization_type = "hvm" root_device_name = "/dev/xvda" ebs_block_device { device_name = "/dev/xvda" snapshot_id = aws_ebs_snapshot.snapshot.id volume_type = "gp2" } } resource "aws_instance" "web" { ami = aws_ami.my.id instance_type = "t2.micro" # key_name = "<your-key-name>" tags = { Name = "InstanceFromCustomAMI" } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda