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.
56 lines
1.1 KiB
56 lines
1.1 KiB
#!/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 |
|
|
|
for f in $*; do |
|
f=${f%.yaml} |
|
if ! test -e ${f}.yaml; then |
|
echo "ERROR: no file ${f}.yaml" 1>&2 |
|
exit 1 |
|
fi |
|
echo "... deploying ${f##*/}" |
|
for d in $(sed -n 's,^ *source: \(/.*\),\1,p' ${f}.yaml); do |
|
test -e $d || mkdir -p $d |
|
done |
|
docker stack deploy --compose-file ${f}.yaml ${f##*/} |
|
done
|
|
|