diff --git a/testingtoolchain/machinectl.sh b/testingtoolchain/machinectl.sh index c26ef8f..cc3eb55 100755 --- a/testingtoolchain/machinectl.sh +++ b/testingtoolchain/machinectl.sh @@ -1,7 +1,10 @@ #!/bin/bash set -e set -u -set -x + +# small library for output +. "$(dirname $0)/out.sh" + # questo coso assume che si usa machinectl # questa macchina e' una debian pulita @@ -14,25 +17,66 @@ testmachine=wwwd8-test-$(date +%y%m%d%H%M%S) conf="$(dirname $0)/../config.sh" [[ -f "$conf" ]] && . "$conf" + machineexists() { machinectl list-images|awk '{ print $1 }'|egrep -q "^${1}\$" } +inm() { + # execute command IN Machine + machine=$1 + shift 1 + systemd-nspawn --setenv='DEBIAN_FRONTEND=noninteractive' -D "/var/lib/machines/${machine}" "$@" +} + # intermediate creation END {{{1 if ! machineexists "$intermediate"; then if ! machineexists "$sourcemachine"; then + progress "Creating source machine" debootstrap "/var/lib/machines/${sourcemachine}" + ok "Source machine created ($sourcemachine)" fi machinectl clone "${sourcemachine}" "${intermediate}" fi +progress "Setting up intermediate machine $intermediate" +cat < /var/lib/machines/${intermediate}/etc/gitconfig +[transfer] + fsckobjects = true +[fetch] + fsckobjects = true +[receive] + fsckObjects = true +EOF +cat < /var/lib/machines/${intermediate}/etc/apt/apt.conf.d/default.conf +APT::Default-Release "jessie"; +EOF +if [[ ! -f /var/lib/machines/${intermediate}/etc/apt/sources.list.d/stretch.list ]]; then + cat < /var/lib/machines/${intermediate}/etc/apt/sources.list.d/stretch.list + deb http://ftp.debian.org/debian stretch main +EOF + inm $intermediate apt-get update +fi # those are idempotent, so... -systemd-nspawn --setenv='DEBIAN_FRONTEND=noninteractive' -D "/var/lib/machines/${intermediate}" /usr/bin/apt-get -y install apache2 libapache2-mod-php5 php5-gd mariadb-server -systemd-nspawn --setenv='DEBIAN_FRONTEND=noninteractive' -D "/var/lib/machines/${intermediate}" /usr/sbin/a2enmod rewrite -systemd-nspawn --setenv='DEBIAN_FRONTEND=noninteractive' -D "/var/lib/machines/${intermediate}" /usr/sbin/a2enmod php5 -systemd-nspawn --setenv='DEBIAN_FRONTEND=noninteractive' -D "/var/lib/machines/${intermediate}" /bin/mkdir -p /mig +inm $intermediate /usr/bin/apt-get -y install apache2 libapache2-mod-php5 php5-gd mariadb-server git +inm $intermediate /usr/bin/apt-get -y install -t stretch composer +inm $intermediate /usr/sbin/a2enmod rewrite +inm $intermediate /usr/sbin/a2enmod php5 +inm $intermediate /bin/mkdir -p /mig +progress "Installation of Drush" +inm $intermediate /usr/bin/composer global require drush/drush:8.0.3 +if ! inm $intermediate /usr/bin/test -x /root/.composer/vendor/bin/drush; then + error Cannot install drush + exit 1 +else + ln -sf /root/.composer/vendor/bin/drush /usr/bin/drush + ok "Drush installed" +fi +ok "Intermediate machine $intermediate set up" # intermediate creation END }}}1 machinectl clone "${intermediate}" "${testmachine}" +progress "deploying on ${testmachine}" systemd-nspawn -D "/var/lib/machines/${testmachine}" --bind-ro="$(readlink -f $(dirname $0)/../):/mig" /mig/deploy/deploy.sh +ok "all done" # vim: set fdm=marker: diff --git a/testingtoolchain/out.sh b/testingtoolchain/out.sh new file mode 100644 index 0000000..c8bec5a --- /dev/null +++ b/testingtoolchain/out.sh @@ -0,0 +1,17 @@ +# output utilities + +tp() { + tput "$@" +} + +error() { + echo "$(tp bold)$(tp setaf 1)$*$(tp sgr0)" >&2 +} + +progress() { + echo "[$(tp setaf 3)DOING$(tp sgr0)] $(tp sgr0)$*" +} + +ok() { + echo "[$(tp bold)$(tp setaf 2)DONE$(tp sgr0)] $(tp sgr0)$*" +}