Deploy Script Using Case¶
This script is meant to be used for varnish, but can be adapted for anything.
#!/bin/bash
## deploy-varnish.sh
## deploy default.vcl and/or reload varnish daemon on all hosts
if [ $# -lt 1 ]
then
echo "Usage : $0 {deploy|deployall|reload|reloadall}"
exit 1
fi
case "$1" in
deploy)
while read -r host
do
cat conf/default.vcl | ssh $host 'sudo /bin/sh -c "cat > /etc/varnish/default.vcl"'
done < <(head -n1 hosts)
echo "deployed config to $host"
;;
deployall)
while read -r host
do
cat conf/default.vcl | ssh $host 'sudo /bin/sh -c "cat > /etc/varnish/default.vcl"'
done < hosts
echo "deployed config to all hosts"
;;
reload)
while read -r host
do
ssh $host 'sudo /bin/sh -c "/etc/init.d/varnishd reload || /etc/init.d/varnish reload"'
echo "reloaded varnishd on $host"
done < <(head -n1 hosts)
;;
reloadall)
read -r -p "Are you sure? [Y/n] " response
if [[ $response == "y" || $response == "Y" || $response == "yes" || $response == "Yes" ]]
then
while read -r host
do
ssh $host 'sudo /bin/sh -c "/etc/init.d/varnishd reload || /etc/init.d/varnish reload"'
done < hosts
echo "reloaded varnishd on all hosts"
else
echo "Abort!"
fi
;;
esac