Theo Chatzimichos d05fd1
#!/bin/bash
Theo Chatzimichos d05fd1
Theo Chatzimichos f6d741
# See the description at the help()
Theo Chatzimichos d05fd1
Theo Chatzimichos dcff80
set -e
Theo Chatzimichos dcff80
Theo Chatzimichos dcff80
if [[ $(whoami) != 'root' ]]; then
Theo Chatzimichos dcff80
    if [[ -f /usr/bin/sudo ]]; then
a5a5f7
        SUDO='/usr/bin/sudo'
a5a5f7
    else
a5a5f7
        echo 'Please install sudo first, or run this script as root'
a5a5f7
        exit 1
a5a5f7
    fi
Theo Chatzimichos dcff80
fi
Theo Chatzimichos dcff80
fa45db
help() {
Theo Chatzimichos f6d741
    echo "Prepares the CI runner or workstation environment to run highstate or show_highstate tests"
fa45db
    echo
fa45db
    echo "Arguments:"
fa45db
    echo
Theo Chatzimichos f6d741
    echo "-p <pkg1,pkg2> Comma-separated list of additional packages to be installed"
Theo Chatzimichos 759754
    echo "-i <instance>  Choose gitlab instance. Choices: opensuse, suse"
Theo Chatzimichos 15a116
    echo "-o <OS>        OPTIONAL: Specify different OS. Examples: \"Leap,42,3\", \"SLES,12,3\""
Theo Chatzimichos 759754
    echo "-g             OPTIONAL: Make preparation for show_highstate"
Theo Chatzimichos 759754
    echo "-s             OPTIONAL: Include secrets files (disabed because CI runner can't decrypt them due to lack of GPG key)"
fa45db
    echo
fa45db
}
fa45db
fa45db
[[ $1 == '--help' ]] && help && exit
fa45db
Theo Chatzimichos 759754
#source /etc/os-release
Theo Chatzimichos 754b1a
SECRETS="False"
Theo Chatzimichos 759754
#REPO_URL=${PRETTY_NAME// /_}
Theo Chatzimichos 754b1a
Theo Chatzimichos 15a116
while getopts p:i:o:gsh arg; do
fa45db
    case ${arg} in
Theo Chatzimichos f6d741
        p) PKG=(${OPTARG//,/ }) ;;
Theo Chatzimichos 759754
        i) INSTANCE=${OPTARG} ;;
Theo Chatzimichos 15a116
        o) OS=(${OPTARG//,/ }) ;;
Theo Chatzimichos a452cb
        g) HIGHSTATE=1 ;;
Theo Chatzimichos 754b1a
        s) SECRETS="True" ;;
fa45db
        h) help && exit ;;
fa45db
        *) help && exit 1 ;;
fa45db
    esac
fa45db
done
fa45db
Theo Chatzimichos 759754
[[ -z $INSTANCE ]] && help && exit 1
Theo Chatzimichos a452cb
[[ -n $HIGHSTATE ]] && HIGHSTATE_PKGS=( git python3-PyYAML )
Theo Chatzimichos a452cb
Theo Chatzimichos 759754
if [[ $INSTANCE == 'opensuse' ]]; then
Theo Chatzimichos 759754
    DOMAIN='infra.opensuse.org'
Theo Chatzimichos 759754
    SALT_CLUSTER='opensuse'
Theo Chatzimichos 759754
    VIRT_CLUSTER='atreju'
Theo Chatzimichos 759754
    #$SUDO zypper -q ar -p 100 -fG http://download.opensuse.org/repositories/openSUSE:/infrastructure/${REPO_URL}/ openSUSE:infrastructure > /dev/null 2>&1
Theo Chatzimichos 759754
    CERT_PKG='ca-certificates-freeipa-opensuse'
Theo Chatzimichos 759754
elif [[ $INSTANCE == 'suse' ]]; then
Theo Chatzimichos 759754
    DOMAIN='suse.de'
Theo Chatzimichos 759754
    SALT_CLUSTER='suse_internal'
Theo Chatzimichos 759754
    VIRT_CLUSTER='morla'
Theo Chatzimichos 759754
    #$SUDO zypper -q ar -p 100 -fG http://download.nue.suse.com/ibs/SUSE:/CA/${REPO_URL}/ SUSE:CA > /dev/null 2>&1
Theo Chatzimichos 759754
    CERT_PKG='ca-certificates-suse'
Theo Chatzimichos 759754
fi
Theo Chatzimichos 759754
Theo Chatzimichos 759754
#$SUDO zypper -qn in --no-recommends salt python3-pygit2 $CERT_PKG ${HIGHSTATE_PKGS[@]} ${PKG[@]}
Theo Chatzimichos dcff80
$SUDO rm -rf /srv/{salt,pillar}
Theo Chatzimichos dcff80
$SUDO ln -s $PWD/salt /srv/salt
Theo Chatzimichos dcff80
$SUDO ln -s $PWD/pillar /srv/pillar
d86aca
ID=$(hostname -f)
Christian Boltz daee9f
printf "grains:\n  city: nuremberg\n  country: de\n  hostusage: test\n  reboot_safe: no\n  salt_cluster: $SALT_CLUSTER\n  virt_cluster: $VIRT_CLUSTER\n" > pillar/id/${ID//./_}.sls
Theo Chatzimichos a452cb
if [[ -n $HIGHSTATE ]]; then
Theo Chatzimichos a452cb
    ROLES=$(bin/get_roles.py -o yaml)
Theo Chatzimichos 15a116
    [[ -n $OS ]] && OS_GRAINS="osfullname: ${OS[0]}\nosmajorrelease: ${OS[1]}\nosrelease_info: [${OS[1]}, ${OS[2]}]\n"
Theo Chatzimichos 15a116
    printf "city:\ncountry:\ndomain: $DOMAIN\ninclude_secrets: $SECRETS\n$OS_GRAINS$ROLES\nsalt_cluster: $SALT_CLUSTER\nvirt_cluster:\nvirtual:\n" > /etc/salt/grains
Theo Chatzimichos 818e20
fi