Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

234
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda