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

473
Vistas
¿Cómo usaría la 'estrofa de plantilla' de Nomad de Hashicorp para generar un archivo de configuración nginx a través del archivo de trabajo de Nomad?

Suponiendo que Consul y Nomad se han configurado para ejecutarse en un conjunto de recursos. ¿Cómo renderizaría un archivo de plantilla con el único propósito de generar, por ejemplo, un archivo 'default.conf' de Nginx?

Usando la configuración de estrofa de la plantilla a continuación, como ejemplo; Nomad no puede generar un 'archivo' default.conf; en su lugar, se crea un 'directorio' default.conf.

 template { source = "/path/to/tmp.ctmpl" destination = "folder/default.conf" change_mode = "restart" change_signal = "SIGINT" }

Me estoy perdiendo un truco o he entendido mal las funcionalidades de la 'estrofa de la plantilla'.

Uno de los problemas con la plantilla que genera un directorio en lugar de un archivo es que no puede montar un directorio en una ruta de archivo de configuración. Por lo tanto, ejecutar una tarea que utiliza el controlador de la ventana acoplable Nomad con la configuración de volumen ejemplar de la ventana acoplable da como resultado un error.

 volumes = ["/path/to/job/folder/default.conf:/etc/nginx/conf.d/default.conf" ]

¿O es imposible que la estrofa de la plantilla genere un archivo de configuración?

*Ps usando la versión 0.5.5 de Nomad**

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Acabo de armar un pequeño trabajo de Nomad que muestra este funcionamiento, por lo que es posible que tenga un pequeño error de configuración. Para permitirle ejecutar el trabajo usted mismo, lo he puesto a disposición como esencia aquí . En la misma esencia, tengo un nginx.conf que tiene nginx escucha en cualquier puerto que esté en el archivo de trabajo de Nomad.

Aquí está el trabajo de Nomad:

 job "nginx" { datacenters = ["dc1"] type = "service" group "cache" { count = 1 task "redis" { driver = "docker" config { image = "nginx:1.11.10" volumes = ["new/default.conf:/etc/nginx/conf.d/default.conf" ] network_mode = "host" } artifact { source = "https://gist.githubusercontent.com/dadgar/2dcf68ab5c49f7a36dcfe74171ca7936/raw/c287c16dbc9ddc16b18fa5c65a37ff25d2e0e667/nginx.conf" } template { source = "local/nginx.conf" destination = "new/default.conf" change_mode = "restart" } resources { network { mbits = 10 port "nginx" { static = 8080 } } } } } }

Luego puedo consultar esa dirección y ver que nginx está vinculado a ese puerto, por lo que la plantilla que se está montando funciona correctamente.

 $ curl http://127.0.0.1:8080 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>

Si observa la esencia, también muestro que el archivo se procesa y se monta correctamente.

¡Espero que esto te ayude! También asegúrese de consultar la página de la comunidad para obtener ayuda. Tenemos una sala Gitter y una lista de correo.

over 4 years ago · Santiago Trujillo Denunciar

0

Es mucho más fácil colocar la configuración generada en carpetas local o secrets en el directorio de trabajo del trabajo (directorio alloc). Estas carpetas estarán disponibles en el contenedor como /secrets y /local. No se requieren montajes de volumen.

over 4 years ago · Santiago Trujillo Denunciar

0

Terminé siguiendo la solución anterior basada en el siguiente error:

"¿Está intentando montar un directorio en un archivo (o viceversa)? Compruebe si existe la ruta de host especificada y si es del tipo esperado"

El siguiente fragmento es cómo hice que nginx funcionara como un proxy inverso para mi instancia de jenkins (todo basado en nómadas). Esta plantilla es parte de un trabajo multitarea, hecho de jenkins y nginx.

Espero que sea de alguna utilidad para alguien más en la misma situación que yo, durante los últimos días.

 task "nginx" { driver = "docker" resources { cpu = 75 memory = 75 } service { name = "jenkins-nginx" tags = ["urlprefix-/jenkins-nginx"] port = "http" check { name = "nginx port alive" type = "http" path = "/login" interval = "10s" timeout = "2s" } } template { change_mode = "restart" destination = "local/default.conf" data = <<EOH upstream jenkins { server {{ env "NOMAD_ADDR_jenkins" }}; } server { listen {{ env "NOMAD_PORT_http" }}; location / { proxy_redirect off; proxy_pass_header Server; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_set_header X-Accel-Buffering no; proxy_connect_timeout 5; proxy_http_version 1.1; proxy_read_timeout 240; proxy_intercept_errors on; keepalive_timeout 3600; proxy_set_header Connection ''; chunked_transfer_encoding off; proxy_buffering off; proxy_cache off; proxy_pass http://jenkins; } } EOH } config { image = "nginx" network_mode = "host" ports = ["http","https"] volumes = [ "local/default.conf:/etc/nginx/conf.d/default.conf" ] } }
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