Cette page est affichée en anglais. Une traduction française est en cours.
SkillsMay 9, 2026·3 min de lecture

Consul Template — Dynamic Configuration Rendering from HashiCorp Consul

A daemon that watches HashiCorp Consul and Vault for changes and renders Go templates into config files, then optionally reloads services.

Prêt pour agents

Cet actif peut être lu et installé directement par les agents

TokRepo expose une commande CLI universelle, un contrat d'installation, le metadata JSON, un plan selon l'adaptateur et le contenu raw pour aider les agents à juger l'adaptation, le risque et les prochaines actions.

Needs Confirmation · 64/100Policy : confirmer
Surface agent
Tout agent MCP/CLI
Type
Skill
Installation
Single
Confiance
Confiance : Established
Point d'entrée
Consul Template Overview
Commande CLI universelle
npx tokrepo install 05d09c45-4b80-11f1-9bc6-00163e2b0d79

Introduction

Consul Template is a standalone daemon from HashiCorp that queries Consul, Vault, and Nomad for live data, renders Go templates into configuration files, and optionally executes a reload command. It bridges the gap between dynamic service discovery and static config files.

What Consul Template Does

  • Watches Consul's service catalog and KV store for real-time changes
  • Renders Go templates into config files for Nginx, HAProxy, and any other service
  • Fetches secrets from HashiCorp Vault and injects them into rendered output
  • Executes a configurable command after rendering (e.g., systemctl reload nginx)
  • Supports multiple templates and destinations in a single daemon instance

Architecture Overview

Consul Template runs as a long-lived process that maintains blocking queries against the Consul HTTP API. When a watched value changes, it re-evaluates the associated Go template, writes the result to disk atomically, and fires the specified reload command. It uses a dependency graph to batch multiple near-simultaneous changes into a single render cycle, avoiding unnecessary restarts.

Self-Hosting & Configuration

  • Download a static binary from HashiCorp releases or install via package managers
  • Point -consul-addr at your Consul cluster and -vault-addr at Vault if using secrets
  • Define templates with -template="source:dest:command" on the CLI or in an HCL config file
  • Use -once for one-shot rendering in CI or -retry for persistent daemon mode
  • Run as a systemd service for production deployments

Key Features

  • Atomic file writes prevent services from reading partially rendered configs
  • Quiescence timers batch rapid changes to avoid reload storms
  • Native Vault integration for secret injection without custom scripts
  • Template functions for service health filtering, KV lookups, and environment variables
  • Supports Consul Connect service mesh metadata and intentions

Comparison with Similar Tools

  • confd — similar template rendering tool; Consul Template has deeper Consul and Vault integration
  • envsubst — simple environment variable substitution; Consul Template offers live watching and complex logic
  • Ansible templates — rendered at deploy time; Consul Template updates continuously at runtime
  • Consul Connect / Envoy — handles service mesh routing directly; Consul Template generates config files for legacy apps
  • gomplate — standalone Go template CLI; Consul Template adds the watching and reload loop

FAQ

Q: Can I use Consul Template without HashiCorp Consul? A: Consul is the primary data source. For Vault-only use cases, you can point it solely at Vault, but most deployments pair it with Consul.

Q: How does it handle rapid changes without thrashing restarts? A: It uses quiescence timers (min/max wait) to batch multiple changes into a single render-and-reload cycle.

Q: Is it safe to inject secrets into config files? A: Consul Template writes files with configurable permissions. Combine with short-lived Vault leases and restricted file ACLs for a secure setup.

Q: Can it render multiple templates? A: Yes. Define multiple -template flags or template blocks in the HCL config file. Each template can have its own reload command.

Sources

Fil de discussion

Connectez-vous pour rejoindre la discussion.
Aucun commentaire pour l'instant. Soyez le premier à partager votre avis.

Actifs similaires