45 lines
1.1 KiB
Bash
Executable file
45 lines
1.1 KiB
Bash
Executable file
#!/bin/sh
|
|
# Deploy to production.
|
|
#
|
|
# Usage:
|
|
# scripts/prod-deploy.sh # full deployment
|
|
# scripts/prod-deploy.sh <service> # targeted deployment
|
|
# scripts/prod-deploy.sh <service> --skip docker,apache
|
|
set -eu
|
|
|
|
INVENTORY=ansible/inventories/prod/hosts.ini
|
|
PLAYBOOK=ansible/playbooks/setup.yml
|
|
|
|
service=""
|
|
skip_tags=""
|
|
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
--skip)
|
|
skip_tags="$2"
|
|
shift 2
|
|
;;
|
|
-*)
|
|
echo "Unknown option: $1" >&2
|
|
exit 1
|
|
;;
|
|
*)
|
|
service="$1"
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -n "$service" ]; then
|
|
echo "==> Deploying to production: $service"
|
|
if [ -n "$skip_tags" ]; then
|
|
exec ansible-playbook -i "$INVENTORY" "$PLAYBOOK" --vault-password-file .vault-pass \
|
|
--tags "$service" --skip-tags "$skip_tags"
|
|
else
|
|
exec ansible-playbook -i "$INVENTORY" "$PLAYBOOK" --vault-password-file .vault-pass \
|
|
--tags "$service"
|
|
fi
|
|
else
|
|
echo "==> Full production deployment"
|
|
exec ansible-playbook -i "$INVENTORY" "$PLAYBOOK" --vault-password-file .vault-pass
|
|
fi
|