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

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

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

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

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