diff --git a/cdist/conf/type/__consul/files/versions/0.4.1/cksum b/cdist/conf/type/__consul/files/versions/0.4.1/cksum new file mode 100644 index 00000000..edba1a68 --- /dev/null +++ b/cdist/conf/type/__consul/files/versions/0.4.1/cksum @@ -0,0 +1 @@ +428915666 15738724 consul diff --git a/cdist/conf/type/__consul/parameter/default/install-from b/cdist/conf/type/__consul/files/versions/0.4.1/source similarity index 100% rename from cdist/conf/type/__consul/parameter/default/install-from rename to cdist/conf/type/__consul/files/versions/0.4.1/source diff --git a/cdist/conf/type/__consul/files/versions/0.5.0/cksum b/cdist/conf/type/__consul/files/versions/0.5.0/cksum new file mode 100644 index 00000000..fe9888ae --- /dev/null +++ b/cdist/conf/type/__consul/files/versions/0.5.0/cksum @@ -0,0 +1 @@ +131560372 17734417 consul diff --git a/cdist/conf/type/__consul/files/versions/0.5.0/source b/cdist/conf/type/__consul/files/versions/0.5.0/source new file mode 100644 index 00000000..00a209a5 --- /dev/null +++ b/cdist/conf/type/__consul/files/versions/0.5.0/source @@ -0,0 +1 @@ +https://dl.bintray.com/mitchellh/consul/0.5.0_linux_amd64.zip diff --git a/cdist/conf/type/__consul/man.text b/cdist/conf/type/__consul/man.text index f91dcf5c..25d8565f 100644 --- a/cdist/conf/type/__consul/man.text +++ b/cdist/conf/type/__consul/man.text @@ -10,34 +10,28 @@ cdist-type__consul - install consul DESCRIPTION ----------- -Quick and dirty installation of the consul binary. -Note that the consul binary is downloaded on the server and then deployed using -the __file type. +Downloads and installs the consul binary from https://dl.bintray.com/mitchellh/consul. +Note that the consul binary is downloaded on the server (the machine running +cdist) and then deployed to the target host using the __file type. -Future ideas: -- get latest version info from https://checkpoint-api.hashicorp.com/v1/check/consul - - then download from - https://dl.bintray.com/mitchellh/consul/${current_version}_${os}_${arch}.zip -- install from given path to binary -- download from given url -- install from packet +REQUIRED PARAMETERS +------------------- +None. OPTIONAL PARAMETERS ------------------- -install-from:: - uri from where to download consul. This can be anything that curl understands. - If install-uri ends with .zip the downloaded file will be unziped and the - contained file deployed as the consul binary. If install-uri does not end in .zip - it is assumed to be the consul binary and will be deployed as is. - install-to:: where to install the binary. Defaults to /usr/local/bin/consul state:: either 'present' or 'absent'. Defaults to 'present' +version:: + which version of consul to install. See ./files/versions for a list of + supported versions. Defaults to the latest known version. + EXAMPLES -------- @@ -46,13 +40,9 @@ EXAMPLES # just install using defaults __consul -# download on the machine running cdist, then unzip, then upload to the target host +# specific version __consul \ - --install-from https://dl.bintray.com/mitchellh/consul/0.4.1_linux_amd64.zip - -# take binary from local folder on the machine running cdist -__consul \ - --install-from file:///cluster/adm/software/consul/bin/consul + --version 0.4.1 # install the consul binary to a specific location __consul \ diff --git a/cdist/conf/type/__consul/manifest b/cdist/conf/type/__consul/manifest index 321a3e4c..d32009c4 100755 --- a/cdist/conf/type/__consul/manifest +++ b/cdist/conf/type/__consul/manifest @@ -33,33 +33,22 @@ case "$os" in ;; esac +versions_dir="$__type/files/versions" +version="$(cat "$__object/parameter/version")" +version_dir="$versions_dir/$version" -state="$(cat "$__object/parameter/state")" -install_from="$(cat "$__object/parameter/install-from")" -install_to="$(cat "$__object/parameter/install-to")" - -if [ "$state" = "absent" ]; then - __file "$install_to" \ - --state absent - exit 0 +if [ ! -d "$version_dir" ]; then + echo "Unknown consul version '$version'. Expected one of:" >&2 + ls "$versions_dir" >&2 + exit 1 fi -case "$install_from" in - /*|file://*) - source="${install_from#*file://}" - ;; - *.zip) - mkdir "$__object/files" - source="$__object/files/consul" - # FIXME: need some persistent place to cache downloaded files - curl -s "$install_from" | unzip -p > "$source" - ;; - *) - echo "Do not know how to install from: $install_from" >&2 - exit 1 - ;; -esac - -__file "$install_to" \ - --owner root --group root --mode 755 \ - --source "$source" +__staged_file "$(cat "$__object/parameter/install-to")" \ + --source "$(cat "$version_dir/source")" \ + --cksum "$(cat "$version_dir/cksum")" \ + --fetch-command 'curl -s -L "%s"' \ + --prepare-command 'unzip -p "%s"' \ + --state "$(cat "$__object/parameter/state")" \ + --group root \ + --owner root \ + --mode 755 diff --git a/cdist/conf/type/__consul/parameter/default/version b/cdist/conf/type/__consul/parameter/default/version new file mode 100644 index 00000000..8f0916f7 --- /dev/null +++ b/cdist/conf/type/__consul/parameter/default/version @@ -0,0 +1 @@ +0.5.0 diff --git a/cdist/conf/type/__consul/parameter/optional b/cdist/conf/type/__consul/parameter/optional index 480f1bcd..ca68058b 100644 --- a/cdist/conf/type/__consul/parameter/optional +++ b/cdist/conf/type/__consul/parameter/optional @@ -1,3 +1,3 @@ -install-from install-to state +version