diff --git a/deployment/README.rst b/deployment/README.rst index 50f22eb4..10b30c6f 100644 --- a/deployment/README.rst +++ b/deployment/README.rst @@ -80,6 +80,7 @@ identity: - Controller All-in-one - Controller - Compute +- Storage These nodes are used to create the virtual machines and the network interfaces to setup the StarlingX system: @@ -88,9 +89,13 @@ to setup the StarlingX system: - 1 Controller - Setup Duplex - 2 Controllers -- Setup Standard Controller +- Setup Controller Storage - 2 Controllers - 2 Computes +- Setup Dedicated Storage + - 2 Controllers + - 2 Computes + - 2 Storages Directory: virtualbox ~~~~~~~~~~~~~~~~~~~~~ diff --git a/deployment/libvirt/README.rst b/deployment/libvirt/README.rst index 92399c24..69f71a1b 100644 --- a/deployment/libvirt/README.rst +++ b/deployment/libvirt/README.rst @@ -50,7 +50,8 @@ builds different StarlingX cloud configurations: - simplex - duplex -- standardcontroller +- controllerstorage +- dedicatedstorage You need an StarlingX ISO file for the installation. The script takes the configuration name with the ``-c`` option and the ISO file name with the diff --git a/deployment/libvirt/destroy_configuration.sh b/deployment/libvirt/destroy_configuration.sh index 5b9ec6e3..624a1ba8 100755 --- a/deployment/libvirt/destroy_configuration.sh +++ b/deployment/libvirt/destroy_configuration.sh @@ -30,11 +30,20 @@ DOMAIN_DIRECTORY=vms destroy_controller ${CONFIGURATION} ${CONTROLLER} -if ([ "$CONFIGURATION" == "standardcontroller" ]); then +if ([ "$CONFIGURATION" == "controllerstorage" ] || [ "$CONFIGURATION" == "dedicatedstorage" ]); then COMPUTE=${COMPUTE:-compute} COMPUTE_NODES_NUMBER=${COMPUTE_NODES_NUMBER:-1} for ((i=0; i<=$COMPUTE_NODES_NUMBER; i++)); do COMPUTE_NODE=${CONFIGURATION}-${COMPUTE}-${i} - destroy_compute $COMPUTE_NODE + destroy_node "compute" $COMPUTE_NODE + done +fi + +if ([ "$CONFIGURATION" == "dedicatedstorage" ]); then + STORAGE=${STORAGE:-storage} + STORAGE_NODES_NUMBER=${STORAGE_NODES_NUMBER:-1} + for ((i=0; i<=$STORAGE_NODES_NUMBER; i++)); do + STORAGE_NODE=${CONFIGURATION}-${STORAGE}-${i} + destroy_node "storage" ${STORAGE_NODE} done fi diff --git a/deployment/libvirt/functions.sh b/deployment/libvirt/functions.sh index 729a46f6..b460f301 100644 --- a/deployment/libvirt/functions.sh +++ b/deployment/libvirt/functions.sh @@ -4,7 +4,7 @@ usage() { echo "$0 [-h] [-c ] [-i ]" echo "" echo "Options:" - echo " -c: Configuration: simplex, duplex, standardcontroller" + echo " -c: Configuration: simplex, duplex, controllerstorage, dedicatedstorage" echo " -i: StarlingX ISO image" echo "" } @@ -13,7 +13,7 @@ usage_destroy() { echo "$0 [-h] [-c ]" echo "" echo "Options:" - echo " -c: Configuration: simplex, duplex, standardcontroller" + echo " -c: Configuration: simplex, duplex, controllerstorage, dedicatedstorage" echo "" } @@ -27,9 +27,9 @@ iso_image_check() { configuration_check() { local CONFIGURATION=$1 - if [ $CONFIGURATION != "simplex" ] && [ $CONFIGURATION != "duplex" ] && [ $CONFIGURATION != "standardcontroller" ]; then + if [ $CONFIGURATION != "simplex" ] && [ $CONFIGURATION != "duplex" ] && [ $CONFIGURATION != "controllerstorage" ] && [ $CONFIGURATION != "dedicatedstorage" ]; then echo "Please check your configuration name, available configurations:" - echo "simplex, duplex, standardcontroller" + echo "simplex, duplex, controllerstorage, dedicatedstorage" exit 1 fi } @@ -150,17 +150,19 @@ destroy_controller() { done } -# Create a Compute node -create_compute() { - local COMPUTE_NODE=$1 - local DOMAIN_FILE=${DOMAIN_DIRECTORY}/${COMPUTE_NODE}.xml - sudo qemu-img create -f qcow2 /var/lib/libvirt/images/${COMPUTE_NODE}-0.img 200G - sudo qemu-img create -f qcow2 /var/lib/libvirt/images/${COMPUTE_NODE}-1.img 200G - cp compute.xml ${DOMAIN_FILE} +# Create a Node +create_node() { + local IDENTITY=$1 + local NODE=$2 + local BRIDGE_INTERFACE=$3 + local DOMAIN_FILE=${DOMAIN_DIRECTORY}/${NODE}.xml + sudo qemu-img create -f qcow2 /var/lib/libvirt/images/${NODE}-0.img 200G + sudo qemu-img create -f qcow2 /var/lib/libvirt/images/${NODE}-1.img 200G + cp ${IDENTITY}.xml ${DOMAIN_FILE} sed -i -e " - s,NAME,${COMPUTE_NODE},; - s,DISK0,/var/lib/libvirt/images/${COMPUTE_NODE}-0.img,; - s,DISK1,/var/lib/libvirt/images/${COMPUTE_NODE}-1.img, + s,NAME,${NODE},; + s,DISK0,/var/lib/libvirt/images/${NODE}-0.img,; + s,DISK1,/var/lib/libvirt/images/${NODE}-1.img, s,%BR1%,${BRIDGE_INTERFACE}1, s,%BR2%,${BRIDGE_INTERFACE}2, s,%BR3%,${BRIDGE_INTERFACE}3, @@ -169,19 +171,20 @@ create_compute() { sudo virsh define ${DOMAIN_FILE} } -# Delete a Compute node -destroy_compute() { - local COMPUTE_NODE=$1 - local DOMAIN_FILE=$DOMAIN_DIRECTORY/$COMPUTE_NODE.xml - if virsh list --all --name | grep ${COMPUTE_NODE}; then - STATUS=$(virsh list --all | grep ${COMPUTE_NODE} | awk '{ print $3}') +# Delete a Node +destroy_node() { + local IDENTITY=$1 + local NODE=$2 + local DOMAIN_FILE=$DOMAIN_DIRECTORY/$NODE.xml + if virsh list --all --name | grep ${NODE}; then + STATUS=$(virsh list --all | grep ${NODE} | awk '{ print $3}') if ([ "$STATUS" == "running" ]) then - sudo virsh destroy ${COMPUTE_NODE} + sudo virsh destroy ${NODE} fi - sudo virsh undefine ${COMPUTE_NODE} - delete_disk /var/lib/libvirt/images/${COMPUTE_NODE}-0.img - delete_disk /var/lib/libvirt/images/${COMPUTE_NODE}-1.img + sudo virsh undefine ${NODE} + delete_disk /var/lib/libvirt/images/${NODE}-0.img + delete_disk /var/lib/libvirt/images/${NODE}-1.img [ -e ${DOMAIN_FILE} ] && delete_xml ${DOMAIN_FILE} fi } diff --git a/deployment/libvirt/setup_configuration.sh b/deployment/libvirt/setup_configuration.sh index 4c6f44a3..a149bcea 100755 --- a/deployment/libvirt/setup_configuration.sh +++ b/deployment/libvirt/setup_configuration.sh @@ -32,6 +32,8 @@ BRIDGE_INTERFACE=${BRIDGE_INTERFACE:-stxbr} CONTROLLER=${CONTROLLER:-controller} COMPUTE=${COMPUTE:-compute} COMPUTE_NODES_NUMBER=${COMPUTE_NODES_NUMBER:-1} +STORAGE=${STORAGE:-storage} +STORAGE_NODES_NUMBER=${STORAGE_NODES_NUMBER:-1} DOMAIN_DIRECTORY=vms bash ${SCRIPT_DIR}/destroy_configuration.sh -c $CONFIGURATION @@ -40,10 +42,17 @@ bash ${SCRIPT_DIR}/destroy_configuration.sh -c $CONFIGURATION create_controller $CONFIGURATION $CONTROLLER $BRIDGE_INTERFACE $ISOIMAGE -if ([ "$CONFIGURATION" == "standardcontroller" ]); then +if ([ "$CONFIGURATION" == "controllerstorage" ] || [ "$CONFIGURATION" == "dedicatedstorage" ]); then for ((i=0; i<=$COMPUTE_NODES_NUMBER; i++)); do COMPUTE_NODE=${CONFIGURATION}-${COMPUTE}-${i} - create_compute ${COMPUTE_NODE} + create_node "compute" ${COMPUTE_NODE} ${BRIDGE_INTERFACE} + done +fi + +if ([ "$CONFIGURATION" == "dedicatedstorage" ]); then + for ((i=0; i<=$STORAGE_NODES_NUMBER; i++)); do + STORAGE_NODE=${CONFIGURATION}-${STORAGE}-${i} + create_node "storage" ${STORAGE_NODE} ${BRIDGE_INTERFACE} done fi diff --git a/deployment/libvirt/storage.xml b/deployment/libvirt/storage.xml new file mode 100644 index 00000000..83f2cd0f --- /dev/null +++ b/deployment/libvirt/storage.xml @@ -0,0 +1,95 @@ + + NAME + 16777216 + 16777216 + 4 + + /machine + + + hvm + + + + + + + + Nehalem + + + + + + destroy + restart + destroy + + /usr/bin/qemu-system-x86_64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + libvirt-608ab5c8-8d11-4bdd-885f-f8b5fee12ff0 + +