From: Alexandru Avadanii Date: Mon, 17 Jul 2017 23:10:25 +0000 (+0000) Subject: ci/deploy.sh: Allow non-root deploys X-Git-Tag: opnfv-5.0.RC1~150^2 X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=commitdiff_plain;h=edcc8b696d9b249f2514c0322db90315465155c6;p=fuel.git ci/deploy.sh: Allow non-root deploys Currently, deploying Fuel@OPNFV requires the `ci/deploy.sh` to be ran as root user, for: - hypervisor access (virsh); - installing prerequisite packages; We can support non-root deploys if we relax above restriction into: - current user should have hypervisor access beforehand (new check added); - current user has passwordless sudo rights, for installing packages; Later, we should move the package installation out of the deploy script (`ci/deploy.sh`), making the whole deploy possible without sudo, only hypervisor access. After this change, the old way (sudo ci/deploy.sh) should work just like it used to before, so no regression/behavior change should be introduced with this. Change-Id: Ib2ea96aa7b6d67ba0606318407a8adeb51e6969d Signed-off-by: Alexandru Avadanii --- diff --git a/ci/deploy.sh b/ci/deploy.sh index a77dd0f88..2b7638efc 100755 --- a/ci/deploy.sh +++ b/ci/deploy.sh @@ -87,7 +87,7 @@ $(notify "Disabled input parameters (not yet supported with MCP):" 3) -i (disabled) .iso image to be deployed (needs to be provided in a URI style, it can be a local resource: file:// or a remote resource http(s)://) -$(notify "[NOTE] Root priviledges are needed for this script to run" 3) +$(notify "[NOTE] sudo & virsh priviledges are needed for this script to run" 3) Example: @@ -240,8 +240,13 @@ do esac done -if [[ $EUID -ne 0 ]]; then - notify "[ERROR] This script must be run as root\n" 1>&2 +if [[ "$(sudo whoami)" != 'root' ]]; then + notify "This script requires sudo rights\n" 1>&2 + exit 1 +fi + +if ! virsh list >/dev/null 2>&1; then + notify "This script requires hypervisor access\n" 1>&2 exit 1 fi @@ -269,9 +274,9 @@ pushd "${DEPLOY_DIR}" > /dev/null # scenario, etc. # Install required packages -[ -n "$(command -v apt-get)" ] && apt-get install -y \ +[ -n "$(command -v apt-get)" ] && sudo apt-get install -y \ git make rsync mkisofs curl virtinst cpu-checker qemu-kvm -[ -n "$(command -v yum)" ] && yum install -y \ +[ -n "$(command -v yum)" ] && sudo yum install -y \ git make rsync genisoimage curl virt-install qemu-kvm # Check scenario file existence