Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

308
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!