scale-catalog/jailman.sh
Kjeld Schouten-Lebbing 4c09ea840c
The Birth of JailMan (#2)
* move ex (+25 squashed commit)

Squashed commit:

[e5e9c57] verb

[16b023f] exp

[e0299d9] easier

[67fcf93] no message

[404687f] different

[bd82e7c] test

[14b91d9] mod

[f2bb227] test again

[a9d5ad0] again

[0dcb106] with bash

[7324c15] more

[8ec72d5] another test

[0933fdc] again

[a5247df] test more

[ee61137] temp test

[c90aa90] add some more tests

[9f8e47a] make executable

[ac84788] rename part 2

[890c3ca] rename part 1

[f17e571] test create

[9bd8ecd] typo aqgain

[eb865a7] test2

[fb57e28] typo

[595d9e9] make executable

[5d1ae75] first steps

* test5 (+22 squashed commit)

Squashed commit:

[f059ada] tweaks

[5c325de] again

[9f59aa6] ip4

[9990a77] Standardised creation

[0a6fa7f] whoops

[620d07c] no message

[2a98559] error

[62e9c39] hmmm

[9f8e4df] no message

[d1e9025] puzzle

[73aa99b] substitution try 1

[117e75e] other sub

[7c080b0] more flexible

[a0778f4] testzoveel

[739a3bf] fix

[f881425] no message

[1962b83] oops

[994692c] no message

[b6dd2a2] test

[6713186] echo

[6d8d95a] test

[f8c3740] quote processing

* small update fix (+18 squashed commit)

Squashed commit:

[8f0c2aa] Basic update

[c44eae5] simplification

[b1e9314] define basic pkgs

[1a55a85] define global pkgs

[6829d30] dirtest

[5d2a215] checking for install script existance

[d936df3] 1

[fcc7403] hmm

[08e7e07] exit 0

[380da4d] jail interfaces

[634f12e] make all executable

[0f2728c] add first test jail

[8320d77] restructure individual install scripts

[752b375] Standardise

[cbab837] itterate through jails

[37ecc1d] if array is without elements

[0a9e899] moving it to arrays

[cc356ee] mockup jailman

* moving docs,fixing test thingy (+27 squashed commit)

Squashed commit:

[76e856b] rc.d pathing

[4e1b178] fixing some pathing bugs

[e9e9648] quotes

[7c5aa9e] test10 fixes

[e8858cc] sonarr first steps

[0cb1efe] exit on invalid option

[e3451da] exit on unknown option

[60a1f9c] exit

[0536c11] test idea

[81d3465] hmm

[cb3b935] work on h

[1311fea] enable help

[aa8d55a] space?

[5ef67e0] add comment to global

[61be2fa] Add commenting and in-script help

[aac8557] Testing broken config

[ecc1142] oops

[e0059be] condition fix

[9628297] Add check for missing network settings

[44be2bc] Creating DHCP option, working on default example config.

[b0fe910] Adding documentation, setting up Jackett

[0045b2b] strucutre

[fbe3d20] includes first

[a1b032d] gitupdate space

[1b503b5] update fix

[512f597] add update feature

[e9b8359] add initial upgrade script

* Create LICENSE (#1)

* to 30

* move back kms includes readme, add config.yml to gitignore, add kms to config.yml.example (+24 squashed commit)

Squashed commit:

[095aa36] added py ks to readme

[28526d8] Setup KMS

[82f7bfa] Exeuction fix

[89de700] finish organizr and setup first steps of kms

[0624952] Add dummy cert generation

[2583e39] slight nginx mod

[3b3da6a] fixed again

[7f5807b] Readme and fix for wrong copy

[6cab6ca] Make tautulli permanent and prepare organizr

[6801447] Tautulli setup, plex to permanent

[6198469] also fix update if

[49cff5d] if fix 2

[4c436c4] fixing plex if

[1adf56f] Add first go at plex support

[446dff6] fixing some linking and dataset creation

[6dee179] forgot to set yaml files

[4e767de] settings file is not needed at all

[8ff9d73] setup lidarr, begin setup for transmission

[8f8d9ee] Fixing wrong echo's, adding *arr to readme

[7aab5f0] lidarr test setup, making radarr final, yaml restructure

[3113f71] some dataset creation tweaks

[286437b] movies, much

[181cf3e] test setup

[6477b74] Sonarr done, radarr next

* set to master and make executable
2020-03-06 21:32:55 +01:00

171 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="master"
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"
${SCRIPT_DIR}/jailcreate.sh $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 && ${SCRIPT_DIR}/jailcreate.sh $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
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