scale-catalog/global.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

126 lines
3.1 KiB
Bash
Executable File

#!/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
echo "script updated"
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