File entrypoint.sh of Package kvm-container

#!/bin/bash

#set -exuo pipefail

USER=tester
HOMEUSER=/home/${USER}
PS1NAME=VIRTU_BASE_CONTAINER
HPS1="\e[1;34m[\t]\e[1;31m \u@\h \e[1;32m${PS1NAME} \e[1;34m\w \e[m \n\e[1;31m#\e[m "

# check a process and run it if needed
check_process_and_run() {
        PROCESS=$1
        shift
        args="$@"
        # check number of line, if >=2 the process is running | ugly but enough for container
        TEST=`ps -ax | grep ${PROCESS} | wc -l`
        if [ ${TEST} -gt 1 ]; then
                echo "${PROCESS} is running"
        else
                ${PROCESS} "$@"
        fi
}

# add a user "tester"
create_user() {
    useradd --system -m -N -s /bin/bash ${USER} -G libvirt
    mkdir -p ${HOMEUSER}/.ssh
    touch ${HOMEUSER}/.ssh/authorized_keys
    chmod 700 ${HOMEUSER}/.ssh
    chmod 600 ${HOMEUSER}/.ssh/authorized_keys
    echo "export PS1='${HPS1}'" >> ${HOMEUSER}/.bashrc
    chown -R ${USER} ${HOMEUSER}

    # Simple password for tester user
    passwd tester <<EOF
opensuse
opensuse
EOF
    pwconv
}

root_password() {
# enable ssh login for root user, default password is opensuse
# FIXME 
passwd root <<EOF
opensuse
opensuse
EOF
}

# FIXME
# permit root login
# default port for ssh container access is 16022
configure_ssh() {
    echo -e "Port 16022\nPermitEmptyPasswords no\nPermitRootLogin yes" >> /etc/ssh/sshd_config
    /usr/sbin/sshd-gen-keys-start
    /usr/sbin/sshd -t -f /etc/ssh/sshd_config
    root_password
}

# shortcut for podman runlabel calls
if [ ! -z "$2" ];then
	if [ $(basename "$2") = 'label-install' ] || [ $(basename "$2") = 'label-uninstall' ];then
	    exec "$@"
	    exit 0
	elif [ $(basename "$2") = 'vmanager' ];then
		exec "virt-manager"
		exit 0
	else
	    echo "No parameter label-install, label-uninstall or virt-manager found!"
	    echo $@
	fi
fi

TEST=`grep tester /etc/passwd`
if [ -z "$TEST" ]; then
    create_user
else
    echo "User already present, skipping..."
fi

TEST=`grep 16022 /etc/ssh/sshd_config`
if [ -z "$TEST" ]; then
    configure_ssh
else
    echo "SSH already configured, skipping..."
fi

# Adjust PS1 for root user
if [ ! -f "/root/.bashrc" ]; then
    echo "export PS1='${HPS1}'" >> /root/.bashrc
else
    echo "PS1 for root already set, skipping..."
fi

LIBVIRTNET="/etc/libvirt/qemu/networks/default.xml"
if [ ! -f ${LIBVIRTNET} ]; then
# create a default for the VM
# PLEASE use virbr5 or adjust kvm-container.conf
    cat > ${LIBVIRTNET} <<EOF
<network>
  <name>default</name>
  <uuid>f243d94b-bd5b-415d-b4c7-ccb78ec3dc9e</uuid>
  <forward mode='nat'/>
  <bridge name='virbr5' stp='on' delay='0'/>
  <mac address='52:54:00:d0:61:e9'/>
  <ip address='192.168.10.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.10.2' end='192.168.10.254'/>
    </dhcp>
  </ip>
</network>
EOF
else
   echo "libvirtd default network already created, skipping..."
fi

# start all needed services
check_process_and_run /usr/sbin/sshd -f /etc/ssh/sshd_config -E /var/log/sshd.log
check_process_and_run virtlogd --daemon
check_process_and_run libvirtd --listen --daemon 
virsh net-start default

# use for devel
sleep infinity
openSUSE Build Service is sponsored by