vagrant centos8 and freebsd

This commit is contained in:
Olof Hagsand 2020-06-08 13:07:34 +00:00
parent ab73794292
commit 46738d4b37
4 changed files with 64 additions and 76 deletions

View file

@ -19,11 +19,13 @@ if [ $# -eq 2 ]; then
else
destroy=false
fi
host=$(echo "$box"|awk -F'/' '{print $2}')
dir=$box
# XXX: ad-hoc to get (linus) release from boxname
# XXX: ad-hoc to get (linux) release from boxname
# using lsb_release is too heavyweight in many cases
release=$(echo "$host" | grep -io "[a-z]*" | head -1 | tr '[:upper:]' '[:lower:]')
wwwuser=www-data
# example box="freebsd/FreeBSD-12.1-STABLE"
test -d $dir || mkdir -p $dir
@ -64,8 +66,11 @@ case $system in
$sshcmd sudo pkg install -y git gmake bash
# cligen
$sshcmd sudo pkg install -y bison flex
# clixon
$sshcmd sudo pkg install -y fcgi-devkit nginx # FreeBSD
# Add www user for nginx
if [ ! $($sshcmd id -u $wwwuser) ]; then
$sshcmd sudo pw useradd $wwwuser -d /nonexistent -s /usr/sbin/nologin
fi
$sshcmd sudo pkg install -y fcgi-devkit nginx
;;
Linux)
case $release in
@ -75,6 +80,9 @@ case $system in
# cligen
$sshcmd sudo yum install -y bison flex
# clixon
if [ ! $($sshcmd id -u $wwwuser) ]; then
$sshcmd sudo useradd -M $wwwuser
fi
$sshcmd sudo yum install -y fcgi-devel nginx
# clixon utilities
$sshcmd sudo yum install -y libcurl-devel
@ -82,6 +90,7 @@ case $system in
opensuse) # opensuse42
# clixon
$sshcmd sudo zypper install -y nginx
# XXX: no fastcgi package?
;;
*)
;;
@ -93,29 +102,31 @@ case $system in
esac
# Hide all complex nginx config in sub-script
. ./nginx.sh $dir $idfile $port
. ./nginx.sh $dir $idfile $port $wwwuser
# Setup cligen and clixon
# This is a script generated at the original host, then copied to the target and run there.
# 'EOF' means dont expand $
cat<<'EOF' > $dir/setup.sh
#!/usr/bin/env bash
set -eux # x
if [ $# -ne 1 ]; then
echo "usage: $0 <release>"
if [ $# -ne 2 ]; then
echo "usage: $0 <release> <wwwuser>"
exit -1
fi
release=$1
wwwuser=$2
# create user & group
if [ ! $(id -u clicon) ]; then
if [ $release = "freebsd" ]; then
sudo pw useradd clicon;
sudo pw useradd clicon -d /nonexistent -s /usr/sbin/nologin;
sudo pw group mod clicon -m vagrant;
sudo pw group mod clicon -m www;
sudo pw group mod clicon -m $wwwuser;
else
sudo useradd clicon;
sudo usermod -a -G clicon vagrant;
sudo usermod -a -G clicon nginx; # nginx?
sudo usermod -a -G clicon $wwwuser;
fi
fi
@ -144,10 +155,10 @@ cd src/clixon
git pull
if [ $release = "freebsd" ]; then
LDFLAGS=-L/usr/local/lib ./configure --with-wwwuser=www --enable-optyangs
LDFLAGS=-L/usr/local/lib ./configure --with-cligen=/usr/local --enable-optyangs
else
# Problems with su not having "sbin" in path on centos when when we run tests later
./configure --sbindir=/usr/sbin --libdir=/usr/lib --with-wwwuser=nginx --enable-optyangs
./configure --sbindir=/usr/sbin --libdir=/usr/lib --enable-optyangs
fi
$MAKE clean
$MAKE -j10
@ -160,18 +171,15 @@ sudo ldconfig
cd test
echo "#!/usr/bin/env bash" > ./site.sh
if [ $release = "freebsd" ]; then
echo "wwwuser=www" >> ./site.sh
echo "make=gmake" >> ./site.sh
echo 'SKIPLIST="test_api.sh"' >> ./site.sh
else
echo "wwwuser=nginx" >> ./site.sh
echo "make=gmake" >> ./site.sh
echo 'SKIPLIST="test_api.sh"' >> ./site.sh
fi
EOF
chmod a+x $dir/setup.sh
# config and setup cligen and clixon
$scpcmd $dir/setup.sh vagrant@127.0.0.1:
$sshcmd ./setup.sh $release
$sshcmd ./setup.sh $release $wwwuser
# Run tests
$sshcmd "(cd src/cligen/test; ./sum.sh)"