You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
186 lines
6.4 KiB
186 lines
6.4 KiB
#!/bin/bash
|
|
|
|
readonly UNWANTED_PACKAGES_STRING="nginx node python haxe"
|
|
readonly MANDATORY_PACKAGES_STRING="wget apache2 make git imagemagick gettext libapache2-mod-neko mariadb-client sendemail libio-socket-ssl-perl libnet-ssleay-perl"
|
|
|
|
### CHECK
|
|
|
|
function check() {
|
|
PREFIX="recipe:cagettepei:check"
|
|
check_unwanted_packages || return 21
|
|
check_mandatory_packages || return 22
|
|
check_apache_modules || return 23
|
|
check_node8 || return 24
|
|
check_python2 || return 25
|
|
check_haxe3 || return 26
|
|
check_cagettepei_batch || return 35
|
|
check_cagettepei_timers || return 36
|
|
}
|
|
|
|
function check_apache_modules() {
|
|
lxc exec "$CONTAINER" -- bash <<EOF
|
|
set -Eeuo pipefail
|
|
test -L /etc/apache2/mods-enabled/neko.load
|
|
test -L /etc/apache2/mods-enabled/rewrite.load
|
|
true
|
|
EOF
|
|
}
|
|
|
|
function check_cagettepei_batch() {
|
|
lxc exec "$CONTAINER" -- bash <<EOF
|
|
set -Eeuo pipefail
|
|
test -f /var/www/cagettepei/cagettepei-batch
|
|
true
|
|
EOF
|
|
}
|
|
|
|
function check_cagettepei_timers() {
|
|
lxc exec "$CONTAINER" -- bash <<EOF
|
|
set -Eeuo pipefail
|
|
test -f /etc/systemd/system/cagettepei-batch-minute.service
|
|
test -f /etc/systemd/system/cagettepei-batch-minute.timer
|
|
test -f /etc/systemd/system/cagettepei-batch-day.service
|
|
test -f /etc/systemd/system/cagettepei-batch-day.timer
|
|
true
|
|
EOF
|
|
}
|
|
|
|
function check_node8() {
|
|
lxc exec "$CONTAINER" -- bash <<EOF
|
|
set -Eeuo pipefail
|
|
node --version | grep -q 'v8.17.0'
|
|
EOF
|
|
}
|
|
|
|
function check_python2() {
|
|
lxc exec "$CONTAINER" -- bash <<EOF
|
|
set -Eeuo pipefail
|
|
python --version 2>&1 | grep -q 'Python 2.7.18'
|
|
EOF
|
|
}
|
|
|
|
function check_haxe3() {
|
|
lxc exec "$CONTAINER" -- bash <<EOF
|
|
set -Eeuo pipefail
|
|
haxe -version 2>&1 | grep -q '3.4.7'
|
|
EOF
|
|
}
|
|
|
|
function check_unwanted_packages() {
|
|
lxc exec "$CONTAINER" -- bash <<EOF
|
|
set -Eeuo pipefail
|
|
mapfile -t PACKAGES <<< "$UNWANTED_PACKAGES_STRING"
|
|
for package in \${PACKAGES[@]}; do
|
|
! (dpkg -l "\$package" 2>/dev/null | grep -q ^ii)
|
|
done
|
|
true # useful because for might return last inexistant package
|
|
EOF
|
|
}
|
|
|
|
function check_mandatory_packages() {
|
|
lxc exec "$CONTAINER" -- bash <<EOF
|
|
set -Eeuo pipefail
|
|
mapfile -t PACKAGES <<< "$MANDATORY_PACKAGES_STRING"
|
|
for package in \${PACKAGES[@]}; do
|
|
dpkg-query -l "\$package" 2>/dev/null | grep -q ^ii
|
|
done
|
|
EOF
|
|
}
|
|
|
|
### INSTALL
|
|
|
|
function install() {
|
|
PREFIX="recipe:cagettepei:install"
|
|
: $PREFIX
|
|
|
|
launch_container "$CONTAINER"
|
|
echo "initializing CagettePéi ... "
|
|
|
|
echo -n "check unwanted packages..."
|
|
check_unwanted_packages
|
|
PREFIX="" echo "OK"
|
|
|
|
lxc exec "$CONTAINER" -- bash <<EOF
|
|
set -Eeuo pipefail
|
|
|
|
echo installing CagettePéi...
|
|
apt-get update
|
|
apt-get install -y $MANDATORY_PACKAGES_STRING
|
|
|
|
echo installing custom Node8...
|
|
wget https://nodejs.org/download/release/v8.17.0/node-v8.17.0-linux-x64.tar.gz -O /tmp/node-v8.17.0-linux-x64.tar.gz
|
|
tar -xzvf /tmp/node-v8.17.0-linux-x64.tar.gz -C /opt
|
|
chown root:root -R /opt/node-v8.17.0-linux-x64
|
|
ln -sf /opt/node-v8.17.0-linux-x64/bin/node /usr/local/bin/
|
|
ln -sf /opt/node-v8.17.0-linux-x64/bin/npm /usr/local/bin/
|
|
echo -n DONE
|
|
|
|
echo installing custom Python2 with pypy...
|
|
wget https://downloads.python.org/pypy/pypy2.7-v7.3.13-linux64.tar.bz2 -O /tmp/pypy2.7-v7.3.13-linux64.tar.bz2
|
|
apt install -y bzip2
|
|
bunzip2 -f /tmp/pypy2.7-v7.3.13-linux64.tar.bz2
|
|
tar -xvf /tmp/pypy2.7-v7.3.13-linux64.tar -C /opt
|
|
ln -sf /opt/pypy2.7-v7.3.13-linux64/bin/python /usr/local/bin/
|
|
ln -sf /opt/pypy2.7-v7.3.13-linux64/bin/python2 /usr/local/bin/
|
|
echo -n DONE
|
|
|
|
echo installing custom Haxe3...
|
|
wget https://github.com/HaxeFoundation/haxe/releases/download/3.4.7/haxe-3.4.7-linux64.tar.gz -O /tmp/haxe-3.4.7-linux64.tar.gz
|
|
tar -xzvf /tmp/haxe-3.4.7-linux64.tar.gz -C /opt
|
|
ln -sf /opt/haxe_20180221160843_bb7b827/haxe /usr/local/bin/
|
|
ln -sf /opt/haxe_20180221160843_bb7b827/haxelib /usr/local/bin/
|
|
echo -n DONE
|
|
|
|
systemctl stop apache2
|
|
rm -f /etc/apache2/sites-available/{000-default,default-ssl}.conf
|
|
rm -f /etc/apache2/sites-enabled/000-default.conf
|
|
rm -rf /var/www/html
|
|
sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
|
|
sed -i 's/^Listen 80$//' /etc/apache2/ports.conf
|
|
|
|
echo "prepare folder for cagettepei instances"
|
|
mkdir -p /var/www/cagettepei
|
|
|
|
echo "enable neko and rewrite apache2 modules"
|
|
a2enmod neko
|
|
a2enmod rewrite
|
|
EOF
|
|
|
|
echo -n "copy cagettepei-batch..."
|
|
lxc file push --uid 0 --gid 0 "$MIAOU_BASEDIR/templates/apps/cagettepei/cagettepei-batch" "$CONTAINER/var/www/cagettepei/cagettepei-batch"
|
|
lxc exec "$CONTAINER" -- chmod +x /var/www/cagettepei/cagettepei-batch
|
|
PREFIX="" echo "OK"
|
|
|
|
echo -n "copy cagettepei timers in systemd..."
|
|
lxc file push --uid 0 --gid 0 "$MIAOU_BASEDIR/templates/apps/cagettepei/systemd/cagettepei-batch-minute.service" "$CONTAINER/etc/systemd/system/cagettepei-batch-minute.service"
|
|
lxc file push --uid 0 --gid 0 "$MIAOU_BASEDIR/templates/apps/cagettepei/systemd/cagettepei-batch-minute.timer" "$CONTAINER/etc/systemd/system/cagettepei-batch-minute.timer"
|
|
lxc file push --uid 0 --gid 0 "$MIAOU_BASEDIR/templates/apps/cagettepei/systemd/cagettepei-batch-day.service" "$CONTAINER/etc/systemd/system/cagettepei-batch-day.service"
|
|
lxc file push --uid 0 --gid 0 "$MIAOU_BASEDIR/templates/apps/cagettepei/systemd/cagettepei-batch-day.timer" "$CONTAINER/etc/systemd/system/cagettepei-batch-day.timer"
|
|
PREFIX="" echo "OK"
|
|
|
|
echo -n "override apache2 service to launch cagettepei timers..."
|
|
lxc exec "$CONTAINER" -- bash -c "SYSTEMD_EDITOR=tee systemctl edit apache2 <<EOT
|
|
[Unit]
|
|
BindsTo = cagettepei-batch-minute.timer cagettepei-batch-day.timer
|
|
EOT"
|
|
PREFIX="" echo "OK"
|
|
|
|
echo "enable and start cagettepei timers in systemd..."
|
|
lxc exec "$CONTAINER" -- bash <<EOF
|
|
systemctl enable cagettepei-batch-minute.timer cagettepei-batch-day.timer
|
|
systemctl start cagettepei-batch-minute.timer cagettepei-batch-day.timer
|
|
EOF
|
|
PREFIX="" echo "OK"
|
|
}
|
|
|
|
### MAIN
|
|
|
|
. "$MIAOU_BASEDIR/lib/init.sh"
|
|
|
|
arg1_required "$@"
|
|
readonly CONTAINER="$1"
|
|
|
|
check || (
|
|
install
|
|
check
|
|
)
|