scale-catalog/jailman.sh
Kjeld Schouten-Lebbing cd5adfd94b
Jailman v1.1.0 (#24)
* set branch (+2 squashed commit)

Squashed commit:

[e322f24] remove placeholder

[8647131] palceholder

* Code cleanup and (primarily) consolidation (#21)

* set branch

* Exit 1 on iocage create failure

* - Move jailcreate to global function
- Remove Jailcreate.sh

* Add dataset creation function

* - add test script to test new global changes
- also create folder in jail with createmount

* fix

* make test executable

* more verbosity, fixing folder creation

* moving global dataset create

* move jails to new dataset-mount creation function

* remove test jail and test branch-ref

* Add Nextcloud (#22)

* Basic working nextcloud integration

* Enable persistent reinstall of Nextcloud

* prepare for dev merge

* Licence alert

* Add external database and integrated jail

* small improvements and update script

* Add mariadb to dev (#31)

* Working MariaDB config

* - Set ZFS settings for DB on Nextcloud and MariaDB
- Cleanup MariaDB

* prepare for dev merge

* Niceify Readme (#34)

* put content from master into it

* Some readme itteration

* more niceification

* [WIP} Wiki workflow test (#37)

introduce automatic wiki generation

* Add Bitwarden support (#35)

* Nextcloud-Cleanup for v1.1.0 (#40)

* Nextcloud cleanup
- add db-type sanity check
- remove some integrated db checks
- Move ssl to /config/ssl
- remove integrated databases

* slight default tweaking

* fix mariadb install bug

* QA cycle
2020-03-13 23:59:05 +01:00

173 lines
5.1 KiB
Bash
Executable File

#!/usr/local/bin/bash
# Important defines:
export SCRIPT_NAME=$(basename $(test -L "${BASH_SOURCE[0]}" && readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}"));
export SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd);
echo "Working directory for jailman.sh is: ${SCRIPT_DIR}"
#Includes
source ${SCRIPT_DIR}/global.sh
# Check for root privileges
if ! [ $(id -u) = 0 ]; then
echo "This script must be run with root privileges"
exit 1
fi
# Auto Update
BRANCH="dev"
gitupdate ${BRANCH}
# If no option is given, point to the help menu
if [ $# -eq 0 ]
then
echo "Missing options!"
echo "(run $0 -h for help)"
echo ""
exit 0
fi
# Go through the options and put the jails requested in an array
unset -v sub
while getopts ":i:r:u:d:g:h" opt
do
case $opt in
i ) installjails=("$OPTARG")
until [[ $(eval "echo \${$OPTIND}") =~ ^-.* ]] || [ -z $(eval "echo \${$OPTIND}") ]; do
installjails+=($(eval "echo \${$OPTIND}"))
OPTIND=$((OPTIND + 1))
done
;;
r ) redojails=("$OPTARG")
until [[ $(eval "echo \${$OPTIND}") =~ ^-.* ]] || [ -z $(eval "echo \${$OPTIND}") ]; do
redojails+=($(eval "echo \${$OPTIND}"))
OPTIND=$((OPTIND + 1))
done
;;
u ) updatejails=("$OPTARG")
until [[ $(eval "echo \${$OPTIND}") =~ ^-.* ]] || [ -z $(eval "echo \${$OPTIND}") ]; do
updateljails+=($(eval "echo \${$OPTIND}"))
OPTIND=$((OPTIND + 1))
done
;;
d ) destroyjails=("$OPTARG")
until [[ $(eval "echo \${$OPTIND}") =~ ^-.* ]] || [ -z $(eval "echo \${$OPTIND}") ]; do
deletejails+=($(eval "echo \${$OPTIND}"))
OPTIND=$((OPTIND + 1))
done
;;
g ) upgradejails=("$OPTARG")
until [[ $(eval "echo \${$OPTIND}") =~ ^-.* ]] || [ -z $(eval "echo \${$OPTIND}") ]; do
upgradejails+=($(eval "echo \${$OPTIND}"))
OPTIND=$((OPTIND + 1))
done
;;
h )
echo "Usage:"
echo "$0 -i "
echo "$0 -r "
echo "$0 -u "
echo "$0 -d "
echo "$0 -g "
echo ""
echo " -i to install jails, listed by name, space seperated like this: jackett plex sonarr"
echo " -r to reinstall jails, listed by name, space seperated like this: jackett plex sonarr"
echo " -u to update jails, listed by name, space seperated like this: jackett plex sonarr"
echo " -d to destroy jails, listed by name, space seperated like this: jackett plex sonarrt"
echo " -g to upgrade jails, listed by name, space seperated like this: jackett plex sonarr"
echo " -h help (this output)"
exit 0
;;
? ) echo "Error: Invalid option was specified -$OPTARG"
exit 0
;;
esac
done
# Parse the Config YAML
eval $(parse_yaml config.yml)
# Check and Execute requested jail destructions
if [ ${#destroyjails[@]} -eq 0 ]; then
echo "No jails to destroy"
else
echo "jails to destroy ${destroyjails[@]}"
for jail in "${destroyjails[@]}"
do
echo "destroying $jail"
iocage destroy -f $jail
done
fi
# Check and Execute requested jail Installs
if [ ${#installjails[@]} -eq 0 ]; then
echo "No jails to install"
else
echo "jails to install ${installjails[@]}"
for jail in "${installjails[@]}"
do
if [ -f "${SCRIPT_DIR}/jails/$jail/install.sh" ]
then
echo "Installing $jail"
jailcreate $jail && ${SCRIPT_DIR}/jails/$jail/install.sh
else
echo "Missing install script for $jail in ${SCRIPT_DIR}/jails/$jail/install.sh"
fi
done
fi
# Check and Execute requested jail Reinstalls
if [ ${#redojails[@]} -eq 0 ]; then
echo "No jails to ReInstall"
else
echo "jails to reinstall ${redojails[@]}"
for jail in "${redojails[@]}"
do
if [ -f "${SCRIPT_DIR}/jails/$jail/install.sh" ]
then
echo "Reinstalling $jail"
iocage destroy -f $jail && jailcreate $jail && ${SCRIPT_DIR}/jails/$jail/install.sh
else
echo "Missing install script for $jail in ${SCRIPT_DIR}/jails/$jail/update.sh"
fi
done
fi
# Check and Execute requested jail Updates
if [ ${#updatejails[@]} -eq 0 ]; then
echo "No jails to Update"
else
echo "jails to update ${updatejails[@]}"
for jail in "${updatejails[@]}"
do
if [ -f "${SCRIPT_DIR}/jails/$jail/update.sh" ]
then
echo "Updating $jail"
iocage update $jail
iocage exec $jail "pkg update && pkg upgrade -y" && ${SCRIPT_DIR}/jails/$jail/update.sh
iocage restart $jail
iocage start $jail
else
echo "Missing update script for $jail in ${SCRIPT_DIR}/jails/$jail/update.sh"
fi
done
fi
# Check and Execute requested jail Upgrades
if [ ${#upgradejails[@]} -eq 0 ]; then
echo "No jails to Upgrade"
else
echo "jails to update ${upgradejails[@]}"
for jail in "${upgradejails[@]}"
do
if [ -f "${SCRIPT_DIR}/jails/$jail/update.sh" ]
then
echo "Currently Upgrading is not yet included in this script."
else
echo "Missing update script for $jail in ${SCRIPT_DIR}/jails/$jail/update.sh"
fi
done
fi