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

233
Vistas
user_data no se ejecuta sobre la creación de instancias

He proporcionado un archivo .sh como user_data en mi script de Terraform:

 resource "aws_instance" "alpha-terraform"{ ami=var.amis[var.region] instance_type="t2.micro" vpc_security_group_ids=[aws_security_group.alpha-terraform-sg.id] user_data = file("user_data_bootstrap.sh") key_name = "alpha-terraform" tags={ type="alpha" purpose="terraform" } }

El archivo .sh contiene:

 #Jenkins Installation: sudo apt update sudo apt install openjdk-8-jdk --yes wget –q –O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add – sudo sh -c 'echo deb https://pkg.jenkins.io/debian binary/ >> /etc/apt/sources.list' sudo apt update sudo apt install Jenkins sudo systemctl status jenkins find /usr/lib/jvm/java-1.8* | head -n 3

Mi instancia se está creando correctamente. Sin embargo, creo que mis datos de usuario no se ejecutan. Puedo ver que los datos de usuario se copian en /var/lib/cloud/instance/ como user-data.txt y user-data.txt.i pero aún no se ejecutan.

¿Por qué sucede esto y cómo puedo depurarlo más?

Actualizar

Intenté acceder al servidor y ejecutar cada comando uno por uno, pero recibí el siguiente error al actualizar los paquetes apt:

 ubuntu@ip-172-31-52-**:~$ apt update Reading package lists... Done W: chmod 0700 of directory /var/lib/apt/lists/partial failed - SetupAPTPartialDirectory (1: Operation not permitted) E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied) E: Unable to lock directory /var/lib/apt/lists/ W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied) W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied) ubuntu@ip-172-31-52-**:~$ sudo apt update Reading package lists... Done E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable) E: Unable to lock directory /var/lib/apt/lists/
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Verifiqué el script en mi cuenta de sandbox.

Tuvo errores . La versión corregida es la siguiente:

 #!/bin/bash -xe #Jenkins Installation: apt update apt install openjdk-8-jdk --yes wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - echo "deb https://pkg.jenkins.io/debian binary/" >> /etc/apt/sources.list apt update apt install -y jenkins systemctl status jenkins find /usr/lib/jvm/java-1.8* | head -n 3

Los cambios fueron:

  • eliminación de sudo
  • fijación – a -
  • arreglando apt install Jenkins a apt install -y jenkins

Puedo confirmar que ahora funciona con terraform en la instancia de Ubuntu 18.04.

Al iniciar la instancia, jenkins está disponible en http://<instance-ip>:8080 :

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Denunciar

0

Te falta #!/bin/bash al principio del archivo. De la documentación :

Los scripts de shell de datos de usuario deben comenzar con #! caracteres y la ruta al intérprete que desea leer el script (comúnmente /bin/bash). Para obtener una excelente introducción a las secuencias de comandos de shell, consulte el CÓMO HACER la programación de BASH en el Proyecto de documentación de Linux ( tldp.org ).

over 4 years ago · Santiago Trujillo Denunciar

0

Preferiré el archivo de plantilla sobreel archivo donde tiene más control y también pasa la variable a los datos del usuario.

templatefile lee el archivo en la ruta dada y presenta su contenido como una plantilla utilizando un conjunto de variables de plantilla proporcionado donde file lee el contenido de un archivo en la ruta dada y lo devuelve como una cadena.

 templatefile(path, vars)
 data "template_file" "backend_cloud_init" { template = "${file("user_data_bootstrap.sh")}" vars = { JDK_VERSION = "openjdk-8-jdk" } }

luego use template_file en una sección de datos de usuario

 resource "aws_instance" "alpha-terraform"{ ami=var.amis[var.region] instance_type="t2.micro" vpc_security_group_ids=[aws_security_group.alpha-terraform-sg.id] user_data = "${data.template_file.backend_cloud_init.rendered}" key_name = "alpha-terraform" tags={ type="alpha" purpose="terraform" } }

Además, agregue el hashbang en el archivo con depuración

 #!/usr/bin/env bash set -x
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