{"id":13651553,"url":"https://github.com/voxpupuli/puppet-consul","last_synced_at":"2026-03-17T20:04:41.074Z","repository":{"id":16156839,"uuid":"18902797","full_name":"voxpupuli/puppet-consul","owner":"voxpupuli","description":"A Puppet Module to Manage Consul","archived":false,"fork":false,"pushed_at":"2026-03-06T09:15:33.000Z","size":1262,"stargazers_count":122,"open_issues_count":18,"forks_count":308,"subscribers_count":47,"default_branch":"master","last_synced_at":"2026-03-08T09:12:55.020Z","etag":null,"topics":["amazon-puppet-module","archlinux-puppet-module","bsd-puppet-module","centos-puppet-module","debian-puppet-module","fedora-puppet-module","freebsd-puppet-module","hacktoberfest","linux-puppet-module","oraclelinux-puppet-module","puppet","redhat-puppet-module","scientific-puppet-module","sles-puppet-module","ubuntu-puppet-module","windows-puppet-module"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/voxpupuli.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"open_collective":"vox-pupuli","github":"voxpupuli"}},"created_at":"2014-04-18T04:42:17.000Z","updated_at":"2025-12-29T19:15:33.000Z","dependencies_parsed_at":"2025-01-09T13:41:53.024Z","dependency_job_id":"a12c37be-4bbf-450e-8acf-99c6ef2c20ba","html_url":"https://github.com/voxpupuli/puppet-consul","commit_stats":{"total_commits":780,"total_committers":176,"mean_commits":4.431818181818182,"dds":0.8038461538461539,"last_synced_commit":"210cf2c7d3b24cfd3c027e794e1ca2789cbcbfbd"},"previous_names":["solarkennedy/puppet-consul"],"tags_count":52,"template":false,"template_full_name":null,"purl":"pkg:github/voxpupuli/puppet-consul","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-consul","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-consul/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-consul/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-consul/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/voxpupuli","download_url":"https://codeload.github.com/voxpupuli/puppet-consul/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-consul/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30630038,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T17:32:55.572Z","status":"ssl_error","status_checked_at":"2026-03-17T17:32:38.732Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amazon-puppet-module","archlinux-puppet-module","bsd-puppet-module","centos-puppet-module","debian-puppet-module","fedora-puppet-module","freebsd-puppet-module","hacktoberfest","linux-puppet-module","oraclelinux-puppet-module","puppet","redhat-puppet-module","scientific-puppet-module","sles-puppet-module","ubuntu-puppet-module","windows-puppet-module"],"created_at":"2024-08-02T02:00:50.463Z","updated_at":"2026-03-17T20:04:41.051Z","avatar_url":"https://github.com/voxpupuli.png","language":"Ruby","funding_links":["https://opencollective.com/vox-pupuli","https://github.com/sponsors/voxpupuli"],"categories":["Projects"],"sub_categories":["Provisioning"],"readme":"# puppet-consul\n\n[![Build Status](https://github.com/voxpupuli/puppet-consul/workflows/CI/badge.svg)](https://github.com/voxpupuli/puppet-consul/actions?query=workflow%3ACI)\n[![Release](https://github.com/voxpupuli/puppet-consul/actions/workflows/release.yml/badge.svg)](https://github.com/voxpupuli/puppet-consul/actions/workflows/release.yml)\n[![Puppet Forge](https://img.shields.io/puppetforge/v/puppet/consul.svg)](https://forge.puppetlabs.com/puppet/consul)\n[![Puppet Forge - downloads](https://img.shields.io/puppetforge/dt/puppet/consul.svg)](https://forge.puppetlabs.com/puppet/consul)\n[![Puppet Forge - endorsement](https://img.shields.io/puppetforge/e/puppet/consul.svg)](https://forge.puppetlabs.com/puppet/consul)\n[![Puppet Forge - scores](https://img.shields.io/puppetforge/f/puppet/consul.svg)](https://forge.puppetlabs.com/puppet/consul)\n[![puppetmodule.info docs](http://www.puppetmodule.info/images/badge.png)](http://www.puppetmodule.info/m/puppet-consul)\n[![Apache-2 License](https://img.shields.io/github/license/voxpupuli/puppet-consul.svg)](LICENSE)\n[![Donated by KyleAnderson](https://img.shields.io/badge/donated%20by-KyleAnderson-fb7047.svg)](#transfer-notice)\n\nThis module manages Consul servers and agents.\n\n- [Compatibility](#compatibility)\n  - [What This Module Affects](#what-this-module-affects)\n- [Usage](#usage)\n- [Web UI](#web-ui)\n- [Service Definition](#service-definition)\n- [Watch Definitions](#watch-definitions)\n- [Check Definitions](#check-definitions)\n- [Removing Service, Check and Watch definitions](#removing-service-check-and-watch-definitions)\n- [ACL Definitions](#acl-definitions)\n  - [Policy/Token system](#policytoken-system)\n  - [Legacy system](#legacy-system)\n- [Prepared Queries and Prepared Query Templates](#prepared-queries-and-prepared-query-templates)\n- [Key/Value Objects](#keyvalue-objects)\n- [Limitations](#limitations)\n- [Windows Experimental Support](#windows-experimental-support)\n- [Telemetry](#telemetry)\n- [Consul Template](#consul-template)\n- [Development](#development)\n\n## Compatibility\n\n**WARNING**: Backwards incompatible changes happen in order to more easily support\nnew versions of consul. Pin to the version that works for your setup!\n\n| Consul Version   | Recommended Puppet Module Version   |\n| ---------------- | ----------------------------------- |\n| \u003e= 1.11.x        | \u003e= 6.0.0                            |\n| 1.1.0-1.10.x     | 4.0.0-7.0.x                         |\n| 0.9-1.1.0        | \u003c= 3.4.2                            |\n| 0.8.x            | \u003c= 3.2.4                            |\n| 0.7.0            | \u003c= 2.1.1                            |\n| 0.6.0            | \u003c= 2.1.1                            |\n| 0.5.x            | 1.0.3                               |\n| 0.4.x            | 0.4.6                               |\n\n### What This Module Affects\n\n- Installs the consul daemon (via url or package)\n  - If installing from zip, you *must* ensure the unzip utility is available.\n  - If installing from docker, you *must* ensure puppetlabs-docker_platform module is available.\n  - If installing on windows, you *must* install the `puppetlabs/powershell` module.\n- Optionally installs a user to run it under\n  - *NOTE:* users enabling this and just starting with Consul should consider setting `manage_user_home_location` to `true`. It defaults to false for backwards compatibility.\n- Installs a configuration file (/etc/consul/config.json)\n- Manages the consul service via upstart, sysv, systemd, or nssm.\n- Optionally installs the Web UI\n\n## Usage\n\nTo set up a single consul server, with several agents attached:\nOn the server:\n\n```puppet\nclass { 'consul':\n  config_hash =\u003e {\n    'bootstrap_expect' =\u003e 1,\n    'data_dir'         =\u003e '/opt/consul',\n    'datacenter'       =\u003e 'east-aws',\n    'log_level'        =\u003e 'INFO',\n    'node_name'        =\u003e 'server',\n    'server'           =\u003e true,\n  },\n}\n```\n\nOn the agent(s):\n\n```puppet\nclass { 'consul':\n  config_hash =\u003e {\n    'data_dir'   =\u003e '/opt/consul',\n    'datacenter' =\u003e 'east-aws',\n    'log_level'  =\u003e 'INFO',\n    'node_name'  =\u003e 'agent',\n    'retry_join' =\u003e ['172.16.0.1'],\n  },\n}\n```\n\nDisable install and service components:\n\n```puppet\nclass { 'consul':\n  install_method =\u003e 'none',\n  init_style     =\u003e false,\n  manage_service =\u003e false,\n  config_hash =\u003e {\n    'data_dir'   =\u003e '/opt/consul',\n    'datacenter' =\u003e 'east-aws',\n    'log_level'  =\u003e 'INFO',\n    'node_name'  =\u003e 'agent',\n    'retry_join' =\u003e ['172.16.0.1'],\n  },\n}\n```\n\nInstall the (HashiCorp) packages:\n\n```puppet\nclass { 'consul':\n  install_method  =\u003e 'package',\n  manage_repo     =\u003e $facts['os']['name'] != 'Archlinux',\n  init_style      =\u003e 'unmanaged',\n  manage_data_dir =\u003e true,\n  manage_group    =\u003e false,\n  manage_user     =\u003e false,\n  config_dir      =\u003e '/etc/consul.d/',\n  config_hash     =\u003e {\n    'server'   =\u003e true,\n  },\n}\nsystemd::dropin_file { 'foo.conf':\n  unit           =\u003e 'consul.service',\n  content        =\u003e \"[Unit]\\nConditionFileNotEmpty=\\nConditionFileNotEmpty=/etc/consul.d/config.json\",\n  notify_service =\u003e true,\n}\n```\n\n## Web UI\n\nTo install and run the Web UI on the server, include `ui =\u003e true` in the\n`config_hash`. You may also want to change the `client_addr` to `0.0.0.0` from\nthe default `127.0.0.1`, for example:\n\n```puppet\nclass { 'consul':\n  config_hash =\u003e {\n    'bootstrap_expect' =\u003e 1,\n    'client_addr'      =\u003e '0.0.0.0',\n    'data_dir'         =\u003e '/opt/consul',\n    'datacenter'       =\u003e 'east-aws',\n    'log_level'        =\u003e 'INFO',\n    'node_name'        =\u003e 'server',\n    'server'           =\u003e true,\n    'ui'               =\u003e true,\n  },\n}\n```\n\nFor more security options, consider leaving the `client_addr` set to `127.0.0.1`\nand use with a reverse proxy:\n\n```puppet\n$aliases = ['consul', 'consul.example.com']\n\n# Reverse proxy for Web interface\ninclude 'nginx'\n\n$server_names = [$facts['networking']['fqdn'], $aliases]\n\nnginx::resource::vhost { $facts['networking']['fqdn']:\n  proxy       =\u003e 'http://127.0.0.1:8500',\n  server_name =\u003e $server_names,\n}\n```\n\n## Service Definition\n\nTo declare the availability of a service, you can use the `service` define. This\nwill register the service through the local consul client agent and optionally\nconfigure a health check to monitor its availability.\n\n```puppet\nconsul::service { 'redis':\n  checks  =\u003e [\n    {\n      args     =\u003e ['/usr/local/bin/check_redis.py'],\n      interval =\u003e '10s'\n    },\n  ],\n  port    =\u003e 6379,\n  tags    =\u003e ['master'],\n  meta    =\u003e {\n    SLA =\u003e '1'\n  },\n}\n```\n\nSee the service.pp docstrings for all available inputs.\n\nYou can also use `consul::services` which accepts a hash of services, and makes\nit easy to declare in hiera. For example:\n\n```yaml\nconsul::services:\n  service1:\n    address: \"%{facts.networking.ip}\"\n    checks:\n      - http: http://localhost:42/status\n        interval: 5s\n    port: 42\n    tags:\n      - \"foo:%{facts.custom.bar}\"\n    meta:\n      SLA: 1\n  service2:\n    address: \"%{facts.networking.ip}\"\n    checks:\n      - http: http://localhost:43/status\n        interval: 5s\n    port: 43\n    tags:\n      - \"foo:%{facts.custom.baz}\"\n    meta:\n      SLA: 4\n```\n\n## Watch Definitions\n\n```puppet\nconsul::watch { 'my_watch':\n  handler     =\u003e 'handler_path',\n  passingonly =\u003e true,\n  service     =\u003e 'serviceName',\n  service_tag =\u003e 'serviceTagName',\n  type        =\u003e 'service',\n}\n```\n\nSee the watch.pp docstrings for all available inputs.\n\nYou can also use `consul::watches` which accepts a hash of watches, and makes\nit easy to declare in hiera.\n\n## Check Definitions\n\n```puppet\nconsul::check { 'true_check':\n  interval =\u003e '30s',\n  args     =\u003e ['/bin/true'],\n}\n```\n\nSee the check.pp docstrings for all available inputs.\n\nYou can also use `consul::checks` which accepts a hash of checks, and makes\nit easy to declare in hiera.\n\n## Removing Service, Check and Watch definitions\n\nDo `ensure =\u003e absent` while removing existing service, check and watch\ndefinitions. This ensures consul will be reloaded via `SIGHUP`. If you have\n`purge_config_dir` set to `true` and simply remove the definition it will cause\nconsul to restart.\n\n## ACL Definitions\n\n### Policy/Token system\n\nStarting with version 1.4.0, a new ACL system was introduces separating rules (policies) from tokens.\n\nTokens and policies may be both managed by Puppet:\n\n```puppet\nconsul_policy {'test_policy':\n  description   =\u003e 'test description',\n  rules         =\u003e [\n    {\n      'resource'    =\u003e 'service_prefix',\n      'segment'     =\u003e 'test_service',\n      'disposition' =\u003e 'read'\n    },\n    {\n      'resource'    =\u003e 'key',\n      'segment'     =\u003e 'test_key',\n      'disposition' =\u003e 'write'\n    },\n  ],\n  acl_api_token =\u003e 'e33653a6-0320-4a71-b3af-75f14578e3aa',\n}\n\nconsul_token {'test_token':\n  accessor_id       =\u003e '7c4e3f11-786d-44e6-ac1d-b99546a1ccbd',\n  policies_by_name  =\u003e [\n   'test_policy'\n  ],\n  policies_by_id    =\u003e [\n    '652f27c9-d08d-412b-8985-9becc9c42fb2'\n  ],\n}\n```\n\nHere is an example to automatically create a policy and token for each host.\nFor development environments `acl_api_token` can be the bootstrap token. For production it should be a dedicated token with access to write/read from the acls.\n\n`accessor_id` must be provided. It is a uuid. It can be generated in several different ways.\n\n1. Statically generated and assigned to the resource. See `/usr/bin/uuidgen` on unix systems.\n2. Dynamically derived from the `$facts['dmi']['product']['uuid']` fact in puppet (useful when `consul_token` has 1:1 mapping to hosts).\n3. Dynamically derived from arbitrary string using `fqdn_uuid()` (useful for giving all instances of a resource unique id).\n\n```puppet\n  # Create ACL policy that allows nodes to update themselves and read others\n  consul_policy { $facts['networking']['hostname']:\n    description =\u003e \"${facts['networking']['hostname']}, generated by puppet\",\n    rules =\u003e [\n      {\n        'resource' =\u003e 'node',\n        'segment' =\u003e \"$facts['networking']['hostname']\",\n        'disposition' =\u003e 'write'\n      },\n      {\n        'resource' =\u003e 'node',\n        'segment' =\u003e '',\n        'disposition' =\u003e 'read'\n      }\n    ],\n    acl_api_token =\u003e $acl_api_token,\n  }\n\n  consul_token { $facts['networking']['hostname']:\n    accessor_id =\u003e fqdn_uuid($facts['networking']['hostname']),\n    policies_by_name =\u003e [\"${facts['networking']['hostname']}\"],\n    acl_api_token =\u003e $acl_api_token,\n  }\n ```\n\nPredefining token secret is supported by setting secret_id property.\n\nExternally created tokens and policies may be used by referencing them by ID (Token: accessor_id property, Policy: ID property, linking: policies_by_id property)\n\n### Legacy system\n\n```puppet\nconsul_acl { 'ctoken':\n  ensure =\u003e 'present',\n  rules  =\u003e {\n    'key' =\u003e {\n      'test' =\u003e {\n        'policy' =\u003e 'read'\n      },\n    },\n  },\n  type   =\u003e 'client',\n}\n```\n\nDo not use duplicate names, and remember that the ACL ID (a read-only property for this type)\nis used as the token for requests, not the name\n\nOptionally, you may supply an `acl_api_token`.  This will allow you to create\nACLs if the anonymous token doesn't permit ACL changes (which is likely).\nThe api token may be the master token, another management token, or any\nclient token with sufficient privileges.\n\n**NOTE:** This module currently cannot parse ACL tokens generated through means\nother than this module. Don't mix Puppet and Non-puppet ACLs for best results!\n(pull requests welcome to allow it to co-exist with ACLs generated with normal HCL)\n\n## Prepared Queries and Prepared Query Templates\n\n```puppet\nconsul_prepared_query { 'consul':\n  ensure               =\u003e 'present',\n  service_name         =\u003e 'consul',\n  service_failover_n   =\u003e 1,\n  service_failover_dcs =\u003e [ 'dc1', 'dc2' ],\n  service_only_passing =\u003e true,\n  service_tags         =\u003e [ 'tag1', 'tag2' ],\n  service_meta         =\u003e { 'version' =\u003e '1.2.3' },\n  ttl                  =\u003e 10,\n}\n```\n\nor a prepared query template:\n\n```puppet\nconsul_prepared_query { 'consul':\n  ensure               =\u003e 'present',\n  service_name         =\u003e 'consul',\n  service_name         =\u003e 'consul-${match(1)}' # lint:ignore:single_quote_string_with_variables\n  service_failover_n   =\u003e 1,\n  service_failover_dcs =\u003e [ 'dc1', 'dc2' ],\n  service_only_passing =\u003e true,\n  service_tags         =\u003e [ '${match(2)}' ], # lint:ignore:single_quote_string_with_variables\n  node_meta            =\u003e { 'is_virtual' =\u003e 'false' },\n  template             =\u003e true,\n  template_regexp      =\u003e '^consul-(.*)-(.*)$',\n  template_type        =\u003e 'name_prefix_match',\n}\n```\n\n## Key/Value Objects\n\nExample:\n\n```puppet\nconsul_key_value { 'key/path':\n  ensure     =\u003e 'present',\n  value      =\u003e 'myvaluestring',\n  flags      =\u003e 12345,\n  datacenter =\u003e 'dc1',\n}\n```\n\nThis provider allows you to manage key/value pairs. It tries to be smart in two ways:\n\n1. It caches the data accessible from the kv store with the specified acl token.\n2. It does not update the key if the value \u0026 flag are already correct.\n\nThese parameters are mandatory when using `consul_key_value`:\n\n- `name` Name of the key/value object. Path in key/value store.\n- `value` value of the key.\n\nThe optional parameters only need to be specified if you require changes from default behaviour.\n\n- `flags` {Integer} an opaque unsigned integer that can be attached to each entry. Clients can choose to use this however makes sense for their application. Default is `0`.\n- `acl\\_api_token` {String} Token for accessing the ACL API. Default is `''`.\n- `datacenter` {String} Use the key/value store in specified datacenter. If `''` (default) it will use the datacenter of the Consul agent at the HTTP address.\n- `protocol` {String} protocol to use. Either `'http'` (default) or `'https'`.\n- `port` {Integer} consul port. Defaults to `8500`.\n- `hostname` {String} consul hostname. Defaults to `'localhost'`.\n- `api_tries` {Integer} number of tries when contacting the Consul REST API. Timeouts are not retried because a timeout already takes long. Defaults to `3`.\n\n## Limitations\n\nDepends on the JSON gem, or a modern ruby. (Ruby 1.8.7 is not officially supported)\nCurrent versions of puppetserver are new enough (2.0.3 \u0026 greater are known to work).\n\n## Windows Experimental Support\n\nWindows service does no longer need [NSSM] to host the service. Consul will be installed as a native windows service using build-in sc.exe. The following caveats apply:\n\n- By defult eveything will be installed into `c:\\ProgramData\\Consul\\` and `$consul::config_hash['data_dir']` will default point to that location, so you don't need that in your `config_hash`\n- The service user needs `logon as a service` permission to run things as a service(not yet supported by this module). therefore will `consul::manage_user` and `consul::manage_group` be default `false`.\n- consul::user will default be `NT AUTHORITY\\NETWORK SERVICE` (Has by default `logon as a service` permission).\n- consul::group will default be `Administrators`\n\nExample:\n\n```puppet\nclass { 'consul':\n  config_hash =\u003e {\n    'bootstrap_expect' =\u003e 1,\n    'datacenter'       =\u003e 'dc1',\n    'log_level'        =\u003e 'INFO',\n    'node_name'        =\u003e 'server',\n    'server'           =\u003e true,\n  },\n}\n```\n\n## Telemetry\n\nThe Consul agent collects various runtime metrics about the performance of different libraries and subsystems. These metrics are aggregated on a ten second interval and are retained for one minute.\n\nTo view this data, you must send a signal to the Consul process: on Unix, this is USR1 while on Windows it is BREAK. Once Consul receives the signal, it will dump the current telemetry information to the agent's stderr.\n\nThis telemetry information can be used for debugging or otherwise getting a better view of what Consul is doing.\n\nExample:\n\n```puppet\nclass { 'consul':\n  config_hash =\u003e {\n    'bootstrap_expect' =\u003e 1,\n    'data_dir'         =\u003e '/opt/consul',\n    'datacenter'       =\u003e 'east-aws',\n    'log_level'        =\u003e 'INFO',\n    'node_name'        =\u003e 'server',\n    'server'           =\u003e true,\n    'telemetry' =\u003e {\n      'statsd_address' =\u003e 'localhost:9125',\n      'prefix_filter' =\u003e [\n        '+consul.client.rpc',\n        '+consul.client.rpc.exceeded',\n        '+consul.acl.cache_hit',\n        '+consul.acl.cache_miss',\n        '+consul.dns.stale_queries',\n        '+consul.raft.state.leader',\n        '+consul.raft.state.candidate',\n        '+consul.raft.apply',\n        '+consul.raft.commitTime',\n        '+consul.raft.leader.dispatchLog',\n        '+consul.raft.replication.appendEntries',\n        '+consul.raft.leader.lastContact',\n        '+consul.rpc.accept_conn',\n        '+consul.catalog.register',\n        '+consul.catalog.deregister',\n        '+consul.kvs.apply',\n        '+consul.leader.barrier',\n        '+consul.leader.reconcile',\n        '+consul.leader.reconcileMember',\n        '+consul.leader.reapTombstones',\n        '+consul.rpc.raft_handoff',\n        '+consul.rpc.request_error',\n        '+consul.rpc.request',\n        '+consul.rpc.query',\n        '+consul.rpc.consistentRead',\n        '+consul.memberlist.msg.suspect',\n        '+consul.serf.member.flap',\n        '+consul.serf.events',\n        '+consul.session_ttl.active',\n      ],\n    },\n  },\n}\n```\n\nThe metrics for the consul system you can look them in the Official Consul Site with all the description for every metric.\nUrl: https://www.consul.io/docs/agent/telemetry.html\n\n## Consul Template\n\n[Consul Template](https://github.com/hashicorp/consul-template) is a piece of\nsoftware to dynamically write out config files using templates that are populated\nwith values from Consul. This module does not configure consul template. See\n[gdhbashton/consul_template](https://github.com/gdhbashton/puppet-consul_template) for\na module that can do that.\n\n## Development\n\nOpen an [issue](https://github.com/voxpupuli/puppet-consul/issues) or\n[fork](https://github.com/voxpupuli/puppet-consul/fork) and open a\n[Pull Request](https://github.com/voxpupuli/puppet-consul/pulls)\n\n## Transfer Notice\n\nThis module was originally authored by [solarkennedy](http://github.com/solarkennedy).\nThe maintainer preferred that Vox Pupuli take ownership of the module for future improvement and maintenance.\nExisting pull requests and issues were transferred over, please fork and continue to contribute here instead of KyleAnderson.\n\nPreviously: https://github.com/solarkennedy/puppet-consul\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-consul","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoxpupuli%2Fpuppet-consul","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-consul/lists"}