From: Thierry Parmentelat Date: Fri, 24 Jan 2014 10:41:01 +0000 (+0100) Subject: one single simpler command to create build or test vms X-Git-Tag: before_libvirt_121~29 X-Git-Url: http://git.onelab.eu/?p=build.git;a=commitdiff_plain;h=2b80d206e5eb9eedbad5929919210a5f959ae897 one single simpler command to create build or test vms --- diff --git a/config.mlab/vtest.pkgs b/config.mlab/runtime.pkgs similarity index 100% rename from config.mlab/vtest.pkgs rename to config.mlab/runtime.pkgs diff --git a/config.planetlab/vtest.pkgs b/config.planetlab/runtime.pkgs similarity index 100% rename from config.planetlab/vtest.pkgs rename to config.planetlab/runtime.pkgs diff --git a/lbuild-initvm.sh b/lbuild-initvm.sh index 82793edc..a3ea8b23 100755 --- a/lbuild-initvm.sh +++ b/lbuild-initvm.sh @@ -19,9 +19,6 @@ DEFAULT_FCDISTRO=f20 DEFAULT_PLDISTRO=lxc DEFAULT_PERSONALITY=linux64 -COMMAND_LBUILD="lbuild-initvm.sh" -COMMAND_LTEST="ltest-initvm.sh" - ########## # constant PUBLIC_BRIDGE=br0 @@ -885,18 +882,21 @@ function failure () { function usage () { set +x - echo "Usage: $COMMAND_LBUILD [options] lxc-name" - echo "Usage: $COMMAND_LTEST [options] lxc-name" + echo "Usage: $COMMAND [options] lxc-name (aka build mode)" + echo "Usage: $COMMAND -n hostname [options] lxc-name (aka test mode)" echo "Description:" - echo " This command creates a fresh lxc instance, for building, or running a test myplc" + echo " This command creates a fresh lxc instance, for building, or running a test myplc" + echo "In its first form, spawned VM gets a private IP bridged with virbr0 over dhcp/nat" + echo "With the second form, spawned VM gets a public IP bridged on public bridge br0" + echo "" echo "Supported options" + echo " -n hostname - the hostname to use in container" echo " -f fcdistro - for creating the root filesystem - defaults to $DEFAULT_FCDISTRO" - echo " -d pldistro - defaults to $DEFAULT_PLDISTRO" + echo " -d pldistro - defaults to $DEFAULT_PLDISTRO - current support for fedoras debians ubuntus" echo " -p personality - defaults to $DEFAULT_PERSONALITY" - echo " -n hostname - the hostname to use in container - required with $COMMAND_LTEST" - echo " -r repo-url - used to populate yum.repos.d - required with $COMMAND_LTEST" - echo " -P pkgs_file - defines the set of extra pacakges" - echo " by default we use vtest.pkgs or devel.pkgs according to $COMMAND" + echo " -r repo-url - used to populate yum.repos.d - required in test mode" + echo " -P pkgs_file - defines a set of extra packages to install in guest" + echo " by default we use devel.pkgs (build mode) or runtime.pkgs (test mode)" echo " -v be verbose" exit 1 } @@ -912,27 +912,12 @@ function main () { exit 1 fi - case "$COMMAND" in - $COMMAND_LBUILD) - BUILD_MODE=true ;; - $COMMAND_LTEST) - TEST_MODE=true;; - *) - usage ;; - esac - - # the set of preinstalled packages - depends on vbuild or vtest - if [ -n "$BUILD_MODE" ] ; then - PREINSTALLED=devel.pkgs - else - PREINSTALLED=vtest.pkgs - fi - while getopts "f:d:p:n:r:P:v" opt ; do + while getopts "n:f:d:p:r:P:v" opt ; do case $opt in + n) GUEST_HOSTNAME=$OPTARG;; f) fcdistro=$OPTARG;; d) pldistro=$OPTARG;; p) personality=$OPTARG;; - n) GUEST_HOSTNAME=$OPTARG;; r) REPO_URL=$OPTARG;; P) PREINSTALLED=$OPTARG;; v) VERBOSE=true; set -x;; @@ -956,14 +941,29 @@ function main () { # check we've exhausted the arguments [[ -n "$@" ]] && usage + # BUILD_MODE is true unless we specified a hostname + [ -n "$GUEST_HOSTNAME" ] || BUILD_MODE=true + + # set default values [ -z "$fcdistro" ] && fcdistro=$DEFAULT_FCDISTRO [ -z "$pldistro" ] && pldistro=$DEFAULT_PLDISTRO [ -z "$personality" ] && personality=$DEFAULT_PERSONALITY + # the set of preinstalled packages - depends on mode + if [ -z "$PREINSTALLED"] ; then + if [ -n "$BUILD_MODE" ] ; then + PREINSTALLED=devel.pkgs + else + PREINSTALLED=runtime.pkgs + fi + fi + if [ -n "$BUILD_MODE" ] ; then + # we can now set GUEST_HOSTNAME safely [ -z "$GUEST_HOSTNAME" ] && GUEST_HOSTNAME=$lxc else - [[ -z "$GUEST_HOSTNAME" ]] && usage + # as this command can be used in other contexts, not specifying + # a repo is considered a warning # use -r none to get rid of this warning if [ "$REPO_URL" == "none" ] ; then REPO_URL="" @@ -989,8 +989,6 @@ function main () { # (build mode relies entirely on dhcp on the private subnet) if [ -z "$BUILD_MODE" ] ; then - [[ -z "GUEST_HOSTNAME" ]] && usage - create_bridge_if_needed GUEST_IP=$(gethostbyname $GUEST_HOSTNAME) diff --git a/ltest-initvm.sh b/ltest-initvm.sh deleted file mode 120000 index c63f1959..00000000 --- a/ltest-initvm.sh +++ /dev/null @@ -1 +0,0 @@ -lbuild-initvm.sh \ No newline at end of file