start working on supporting different versions of consul-template

Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
This commit is contained in:
Steven Armstrong 2015-02-24 23:59:06 +01:00
parent 2677130e0c
commit 3c720640dd
9 changed files with 65 additions and 16 deletions

View File

@ -0,0 +1 @@
1356006333 8496656 consul-template

View File

@ -0,0 +1 @@
https://github.com/hashicorp/consul-template/releases/download/v0.6.5/consul-template_0.6.5_linux_amd64.tar.gz

View File

@ -10,8 +10,11 @@ cdist-type__consul_template - manage the consul-template service
DESCRIPTION DESCRIPTION
----------- -----------
Installs consul-template, generates a global config file and creates directory Downloads and installs the consul-template binary from
for per template config files. https://github.com/hashicorp/consul-template/releases/download/.
Generates a global config file and creates directory for per template config files.
Note that the consul-template binary is downloaded on the server (the machine running
cdist) and then deployed to the target host using the __file type.
REQUIRED PARAMETERS REQUIRED PARAMETERS
@ -28,14 +31,21 @@ batch-size::
consul:: consul::
the location of the Consul instance to query (may be an IP address or FQDN) with port. the location of the Consul instance to query (may be an IP address or FQDN) with port.
Defaults to 'localhost:8500'. Defaults to 'localhost:8500'.
install-to::
where to install the binary. Defaults to /usr/local/bin/consul-template
max-stale:: max-stale::
the maximum staleness of a query. If specified, Consul will distribute work among all the maximum staleness of a query. If specified, Consul will distribute work among all
servers instead of just the leader. servers instead of just the leader.
retry:: retry::
the amount of time to wait if Consul returns an error when communicating the amount of time to wait if Consul returns an error when communicating
with the API. with the API.
state::
either 'present' or 'absent'. Defaults to 'present'
token:: token::
the Consul API token. the Consul API token.
version::
which version of consul-template to install. See ./files/versions for a list of
supported versions. Defaults to the latest known version.
wait:: wait::
the minimum(:maximum) to wait before rendering a new template to disk and the minimum(:maximum) to wait before rendering a new template to disk and
triggering a command, separated by a colon (:). If the optional maximum triggering a command, separated by a colon (:). If the optional maximum
@ -57,6 +67,11 @@ EXAMPLES
__consul_template \ __consul_template \
--consul consul.service.consul:8500 \ --consul consul.service.consul:8500 \
--retry 30s --retry 30s
# specific version
__consul_template \
--version 0.6.5 \
--retry 30s
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------

View File

@ -24,7 +24,10 @@ os=$(cat "$__global/explorer/os")
case "$os" in case "$os" in
centos|redhat) centos|redhat)
# whitelist safeguard # whitelist safeguard
: service_onchange='service consul-template status >/dev/null && service consul-template reload || true' \
;;
archlinux)
service_onchange="systemctl status consul-template >/dev/null && systemctl reload consul-template || true"
;; ;;
*) *)
echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2 echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2
@ -33,7 +36,30 @@ case "$os" in
;; ;;
esac esac
state="present" versions_dir="$__type/files/versions"
version="$(cat "$__object/parameter/version")"
version_dir="$versions_dir/$version"
if [ ! -d "$version_dir" ]; then
echo "Unknown consul-template version '$version'. Expected one of:" >&2
ls "$versions_dir" >&2
exit 1
fi
state="$(cat "$__object/parameter/state")"
install_to="$(cat "$__object/parameter/install-to")"
__staged_file "$install_to" \
--source "$(cat "$version_dir/source")" \
--cksum "$(cat "$version_dir/cksum")" \
--fetch-command 'curl -s -L "%s"' \
--prepare-command 'tar -xzf "%s"; cat consul-template_*/consul-template' \
--state "$state" \
--group root \
--owner root \
--mode 755
conf_dir="/etc/consul-template/conf.d" conf_dir="/etc/consul-template/conf.d"
conf_file="config.hcl" conf_file="config.hcl"
template_dir="/etc/consul-template/template" template_dir="/etc/consul-template/template"
@ -48,17 +74,6 @@ require="__directory/etc/consul-template" \
--owner root --group root --mode 750 --owner root --group root --mode 750
__staged_file /usr/local/bin/consul-template \
--source https://github.com/hashicorp/consul-template/releases/download/v0.6.5/consul-template_0.6.5_linux_amd64.tar.gz \
--cksum '1356006333 8496656 consul-template' \
--fetch-command 'curl -s -L "%s"' \
--prepare-command 'tar -xzf "%s"; cat consul-template_*/consul-template' \
--state present \
--group root \
--owner root \
--mode 755
# Generate hcl config file # Generate hcl config file
( (
for param in $(ls "$__object/parameter/"); do for param in $(ls "$__object/parameter/"); do
@ -82,7 +97,7 @@ require="__directory${conf_dir}" \
__config_file "${conf_dir}/${conf_file}" \ __config_file "${conf_dir}/${conf_file}" \
--owner root --group root --mode 640 \ --owner root --group root --mode 640 \
--state "$state" \ --state "$state" \
--onchange 'service consul-template status >/dev/null && service consul-template reload || true' \ --onchange "$service_onchange" \
--source - --source -
@ -118,4 +133,12 @@ case "$os" in
export require="__file/etc/init/${service}.conf" export require="__file/etc/init/${service}.conf"
__start_on_boot "$service" --state "$state" __start_on_boot "$service" --state "$state"
;; ;;
archlinux)
__file "/lib/systemd/system/${service}.service" \
--owner root --group root --mode 0555 \
--state "$state" \
--source "$__type/files/${service}.systemd"
export require="__file/lib/systemd/system/${service}.service"
__start_on_boot "$service" --state "$state"
;;
esac esac

View File

@ -0,0 +1 @@
/usr/local/bin/consul-template

View File

@ -0,0 +1 @@
present

View File

@ -0,0 +1 @@
0.6.5

View File

@ -1,7 +1,10 @@
auth auth
batch-size batch-size
consul consul
install-to
max-stale max-stale
retry retry
state
token token
version
wait wait

View File

@ -0,0 +1,3 @@
- add support for --install-to in init-system files/templates
- add support for latest version 0.7.0
- config file format has changed