You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.1 KiB

7 years ago
#!/bin/bash -e
while test $# -gt 0; do
case "$1" in
(-h|--help) cat <<EOF
$0 [OPTIONS] FILES…
OPTIONS
-h, --help show this help
FILES…
List of stack names or yaml files to deploy. There must be yaml
files with the same name. The extension .yaml may be given or not.
DESCRIPTION
Deploys stack from yaml files. The stack name is identical to the
file name, but wihout path and without .yaml extendsion.
EXAMPLS
The following calls ado the same and deploy a local yaml file:
$0 yaml-file-name
$0 yaml-file-name.yaml
$0 ./yaml-file-name.yaml
Deploy three files from three sources:
$0 /path/to/file1/first.yaml /path/to/file2/second.yaml third
EOF
exit;;
(*) break;;
esac
if test $# -lt 1; then
echo "error: missing argument, try $0 --help" 1>&2
exit 1
fi
shift
done
7 years ago
for f in $*; do
f=${f%.yaml}
if ! test -e ${f}.yaml; then
echo "ERROR: no file ${f}.yaml" 1>&2
exit 1
fi
7 years ago
echo "... deploying ${f##*/}"
for d in $(sed -n 's,^ *source: \(/.*\),\1,p' ${f}.yaml); do
7 years ago
test -e $d || mkdir -p $d
done
7 years ago
docker stack deploy --compose-file ${f}.yaml ${f##*/}
7 years ago
done