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

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

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 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!