scale-catalog/global.sh

126 lines
3.1 KiB
Bash
Raw Normal View History

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 20:32:55 +00:00
#!/usr/local/bin/bash
# shellcheck disable=SC1003
# yml Parser function
# Based on https://gist.github.com/pkuczynski/8665367
parse_yaml() {
local prefix=$2
local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034')
sed -ne "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \
-e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" $1 |
awk -F$fs '{
indent = length($1)/2;
vname[indent] = $2;
for (i in vname) {if (i > indent) {delete vname[i]}}
if (length($3) > 0) {
vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])("_")}
printf("export %s%s%s=\"%s\"\n", "'$prefix'",vn, $2, $3);
}
}'
}
# automatic update function
gitupdate() {
echo "checking for updates using Branch: $1"
git fetch
git update-index -q --refresh
CHANGED=$(git diff --name-only origin/$1)
if [ ! -z "$CHANGED" ];
then
echo "script requires update"
git reset --hard
git checkout $1
git pull
2020-04-06 21:40:09 +00:00
echo "script updated, please restart the script manually"
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 20:32:55 +00:00
exit 1
else
echo "script up-to-date"
fi
}
jailcreate() {
echo "Checking config..."
jailname="${1}"
jailpkgs="${1}_pkgs"
jailinterfaces="${1}_interfaces"
jailip4="${1}_ip4_addr"
jailgateway="${1}_gateway"
jaildhcp="${1}_dhcp"
setdhcp=${!jaildhcp}
if [ -z "${!jailinterfaces}" ]; then
jailinterfaces="vnet0:bridge0"
else
jailinterfaces=${!jailinterfaces}
fi
if [ -z "${setdhcp}" ] && [ -z "${!jailip4}" ] && [ -z "${!jailgateway}" ]; then
echo 'no network settings specified in config.yml, defaulting to dhcp="on"'
setdhcp="on"
fi
if [ -z "${!jailname}" ]; then
echo "ERROR, jail not defined in config.yml"
exit 1
else
echo "Creating jail for $1"
pkgs="$(sed 's/[^[:space:]]\{1,\}/"&"/g;s/ /,/g' <<<"${global_jails_pkgs} ${!jailpkgs}")"
echo '{"pkgs":['${pkgs}']}' > /tmp/pkg.json
if [ "${setdhcp}" == "on" ]
then
if ! iocage create -n "${1}" -p /tmp/pkg.json -r ${global_jails_version} interfaces="${jailinterfaces}" dhcp="on" vnet="on" allow_raw_sockets="1" boot="on"
then
echo "Failed to create jail"
exit 1
fi
else
if ! iocage create -n "${1}" -p /tmp/pkg.json -r ${global_jails_version} interfaces="${jailinterfaces}" ip4_addr="vnet0|${!jailip4}" defaultrouter="${!jailgateway}" vnet="on" allow_raw_sockets="1" boot="on"
then
echo "Failed to create jail"
exit 1
fi
fi
rm /tmp/pkg.json
echo "creating jail config directory"
createmount $1 ${global_dataset_config}
createmount $1 ${global_dataset_config}/$1 /config
echo "Jail creation completed for $1"
fi
}
# $1 = jail name
# $2 = Dataset
# $3 = Target mountpoint
# $4 = fstab prefernces
createmount() {
if [ -z "$2" ] ; then
echo "ERROR: No Dataset specified to create and/or mount"
exit 1
else
if [ ! -d "/mnt/$2" ]; then
echo "Dataset does not exist... Creating... $2"
zfs create $2
else
echo "Dataset already exists, skipping creation of $2"
fi
if [ -n "$1" ] && [ -n "$3" ]; then
iocage exec $1 mkdir -p $3
if [ -n "$4" ]; then
iocage fstab -a $1 /mnt/$2 $3 $4
else
iocage fstab -a $1 /mnt/$2 $3 nullfs rw 0 0
fi
else
echo "No Jail Name or Mount target specified, not mounting dataset"
fi
fi
}
export -f createmount