forked from ungleich-public/cdist
first attempt to make this type actually work
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
This commit is contained in:
parent
66ad275212
commit
44d57497e0
8 changed files with 33 additions and 50 deletions
1
cdist/conf/type/__consul/files/versions/0.4.1/cksum
Normal file
1
cdist/conf/type/__consul/files/versions/0.4.1/cksum
Normal file
|
@ -0,0 +1 @@
|
||||||
|
428915666 15738724 consul
|
1
cdist/conf/type/__consul/files/versions/0.5.0/cksum
Normal file
1
cdist/conf/type/__consul/files/versions/0.5.0/cksum
Normal file
|
@ -0,0 +1 @@
|
||||||
|
131560372 17734417 consul
|
1
cdist/conf/type/__consul/files/versions/0.5.0/source
Normal file
1
cdist/conf/type/__consul/files/versions/0.5.0/source
Normal file
|
@ -0,0 +1 @@
|
||||||
|
https://dl.bintray.com/mitchellh/consul/0.5.0_linux_amd64.zip
|
|
@ -10,34 +10,28 @@ cdist-type__consul - install consul
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
Quick and dirty installation of the consul binary.
|
Downloads and installs the consul binary from https://dl.bintray.com/mitchellh/consul.
|
||||||
Note that the consul binary is downloaded on the server and then deployed using
|
Note that the consul binary is downloaded on the server (the machine running
|
||||||
the __file type.
|
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
|
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::
|
install-to::
|
||||||
where to install the binary. Defaults to /usr/local/bin/consul
|
where to install the binary. Defaults to /usr/local/bin/consul
|
||||||
|
|
||||||
state::
|
state::
|
||||||
either 'present' or 'absent'. Defaults to 'present'
|
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
|
EXAMPLES
|
||||||
--------
|
--------
|
||||||
|
@ -46,13 +40,9 @@ EXAMPLES
|
||||||
# just install using defaults
|
# just install using defaults
|
||||||
__consul
|
__consul
|
||||||
|
|
||||||
# download on the machine running cdist, then unzip, then upload to the target host
|
# specific version
|
||||||
__consul \
|
__consul \
|
||||||
--install-from https://dl.bintray.com/mitchellh/consul/0.4.1_linux_amd64.zip
|
--version 0.4.1
|
||||||
|
|
||||||
# take binary from local folder on the machine running cdist
|
|
||||||
__consul \
|
|
||||||
--install-from file:///cluster/adm/software/consul/bin/consul
|
|
||||||
|
|
||||||
# install the consul binary to a specific location
|
# install the consul binary to a specific location
|
||||||
__consul \
|
__consul \
|
||||||
|
|
|
@ -33,33 +33,22 @@ case "$os" in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
versions_dir="$__type/files/versions"
|
||||||
|
version="$(cat "$__object/parameter/version")"
|
||||||
|
version_dir="$versions_dir/$version"
|
||||||
|
|
||||||
state="$(cat "$__object/parameter/state")"
|
if [ ! -d "$version_dir" ]; then
|
||||||
install_from="$(cat "$__object/parameter/install-from")"
|
echo "Unknown consul version '$version'. Expected one of:" >&2
|
||||||
install_to="$(cat "$__object/parameter/install-to")"
|
ls "$versions_dir" >&2
|
||||||
|
exit 1
|
||||||
if [ "$state" = "absent" ]; then
|
|
||||||
__file "$install_to" \
|
|
||||||
--state absent
|
|
||||||
exit 0
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$install_from" in
|
__staged_file "$(cat "$__object/parameter/install-to")" \
|
||||||
/*|file://*)
|
--source "$(cat "$version_dir/source")" \
|
||||||
source="${install_from#*file://}"
|
--cksum "$(cat "$version_dir/cksum")" \
|
||||||
;;
|
--fetch-command 'curl -s -L "%s"' \
|
||||||
*.zip)
|
--prepare-command 'unzip -p "%s"' \
|
||||||
mkdir "$__object/files"
|
--state "$(cat "$__object/parameter/state")" \
|
||||||
source="$__object/files/consul"
|
--group root \
|
||||||
# FIXME: need some persistent place to cache downloaded files
|
--owner root \
|
||||||
curl -s "$install_from" | unzip -p > "$source"
|
--mode 755
|
||||||
;;
|
|
||||||
*)
|
|
||||||
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"
|
|
||||||
|
|
1
cdist/conf/type/__consul/parameter/default/version
Normal file
1
cdist/conf/type/__consul/parameter/default/version
Normal file
|
@ -0,0 +1 @@
|
||||||
|
0.5.0
|
|
@ -1,3 +1,3 @@
|
||||||
install-from
|
|
||||||
install-to
|
install-to
|
||||||
state
|
state
|
||||||
|
version
|
||||||
|
|
Loading…
Reference in a new issue