#!/usr/bin/env sh set -e usage() { printf '%s\n' "Usage:" printf '$ %s\n' "$0 [--help]" printf '$ %s\n' "$0 [--dry] os" printf '$ %s\n' "$0 [--dry] base" printf '$ %s\n' "$0 [--dry] firewall" printf '$ %s\n' "$0 [--dry] ssh" printf '$ %s\n' "$0 [--dry] docker" printf '$ %s\n' "$0 [--dry] docker_config" printf '$ %s\n' "$0 [--dry] users [--init]" printf '$ %s\n' "$0 [--dry] reboot" printf '$ %s\n' "$0 [--dry] services [--down] [SINGLE_SERVICE]" } install_modules() { if [ -z "$(ansible-galaxy collection list community.general 2>/dev/null)" ]; then ansible-galaxy collection install community.general fi } BASE_CMD="ansible-playbook playbook.yml --ask-vault-pass --ask-become-pass" cd "$(dirname "$0")" || exit 255 if [ "$1" = "--dry" ]; then EXEC="echo" shift else EXEC="eval" fi if [ "$#" -gt 0 ]; then TAG="$1" shift fi case $TAG in "") install_modules; $EXEC "$BASE_CMD" ;; os|base|firewall|ssh|docker|docker_config) install_modules; $EXEC "$BASE_CMD --tags '$TAG'" ;; users) install_modules if [ "$1" = "--init" ]; then $EXEC "$BASE_CMD --user root --tags '$TAG'" else $EXEC "$BASE_CMD --tags '$TAG'" fi ;; reboot) install_modules; $EXEC "$BASE_CMD --tags '$TAG' --extra-vars 'do_reboot=true'" ;; services) install_modules if [ "$1" = "--down" ]; then DOWN=1 shift fi if [ -z "$DOWN" ] && [ -n "$1" ]; then VARS="single_service=$1" elif [ -n "$DOWN" ] && [ -z "$1" ]; then VARS="stop=true" elif [ -n "$DOWN" ] && [ -n "$1" ]; then VARS='{"stop": true, "single_service": "'$1'"}' fi $EXEC "$BASE_CMD --tags '$TAG' $(test -z "$VARS" || echo "--extra-vars '$VARS'")" ;; --help) usage ;; *) usage >&2; exit 1 ;; esac