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

280
Vistas
¿Puede Terraform establecer una variable desde un comando remote_exec?

Estoy tratando de construir un clúster Docker Swarm en AWS usando Terraform. Inicié con éxito un administrador de Swarm, pero estoy tratando de encontrar la mejor manera de pasar la clave de unión a los trabajadores (que se creará después del administrador).

Me gustaría alguna forma de ejecutar el comando docker swarm join-token worker -q que se puede configurar en una variable de Terraform. De esa manera, los trabajadores pueden tener un comando remote_exec, algo así como docker swarm join ${var.swarm_token} ${aws_instance.swarm-manager.private_ip}

¿Cómo puedo hacer esto?

Mi configuración está a continuación:

 resource "aws_instance" "swarm-manager" { ami = "${var.manager_ami}" instance_type = "${var.manager_instance}" tags = { Name = "swarm-manager${count.index + 1}" } provisioner "remote-exec" { inline = [ "sleep 30", "docker swarm init --advertise-addr ${aws_instance.swarm-manager.private_ip}" "docker swarm join-token worker -q" // This is the value I want to store as a variable/output/etc ] } }

Gracias

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

0

Puede usar una fuente de datos externa como complemento a su script de aprovisionamiento remoto.

Esto puede bombardear a sus administradores de enjambres y obtener el token después de que se aprovisionen.

Si tiene N administradores de enjambre, probablemente tendrá que hacerlo todo a la vez después de crear los administradores. Las fuentes de datos externas devuelven un mapa de cadenas simples, por lo que es necesario usar claves que le permitan seleccionar el resultado correcto para cada nodo, o devolver el conjunto completo como una cadena delimitada, y usar element() y split() para obtener el resultado correcto. artículo.

 resource "aws_instance" "swarm_manager" { ami = "${var.manager_ami}" instance_type = "${var.manager_instance}" tags = { Name = "swarm-manager${count.index + 1}" } provisioner "remote-exec" { inline = [ "sleep 30", "docker swarm init --advertise-addr ${aws_instance.swarm-manager.private_ip}" ] } } data "external" "swarm_token" { program = ["bash", "${path.module}/get_swarm_tokens.sh"] query = { swarms = ["${aws_instance.swarm_manager.*.private_ip}"] } } resource "aws_instance" "swarm_node" { count = "${var.swarm_size}" ami = "${var.node_ami}" tags = { Name = "swarm-node-${count.index}" } provisioner "remote-exec" { inline = [ "# Enrol me in the right swarm, distributed over swarms available", "./enrol.sh ${element(split("|", data.swarm_token.result.tokens), count.index)}" ] } }
about 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