xci: Enable node provisioning and shuffle/rename stuff 81/31881/4
authorFatih Degirmenci <fatih.degirmenci@ericsson.com>
Mon, 27 Mar 2017 08:29:01 +0000 (10:29 +0200)
committerFatih Degirmenci <fatih.degirmenci@ericsson.com>
Mon, 27 Mar 2017 08:44:43 +0000 (10:44 +0200)
This change enables node provisioning using bifrost based on the chosen
flavor.

Other changes include
- move flavor specific stuff (playbooks, inventory, vars) into their own
folders so it is easier to copy them over.
- rename flavors and get rid of xci from them.
- introduce env-vars to keep variables that are not really user variables.

Please note that this patch contains empty files and so on due to still
trying to find best way to structurei things. Apart from this, there will
probably be lots of duplications here and there which will be taken care
of once things settle.

Change-Id: I04a5d422e5b018439bafea5e68e65255ae38d22b
Signed-off-by: Fatih Degirmenci <fatih.degirmenci@ericsson.com>
23 files changed:
prototypes/xci/config/env-vars [new file with mode: 0755]
prototypes/xci/config/pinned-versions
prototypes/xci/config/user-vars
prototypes/xci/file/aio/playbooks/configure-xcihost.yml [moved from prototypes/xci/file/configure-xci-aio.yml with 100% similarity]
prototypes/xci/file/aio/playbooks/inventory [new file with mode: 0644]
prototypes/xci/file/aio/var/ubuntu.yml [new file with mode: 0644]
prototypes/xci/file/ha/configure-targethosts.yml [moved from prototypes/xci/file/configure-xci-ha.yml with 100% similarity]
prototypes/xci/file/ha/playbooks/configure-xcihost.yml [moved from prototypes/xci/file/configure-xci-mini.yml with 100% similarity]
prototypes/xci/file/ha/playbooks/inventory [moved from prototypes/xci/file/configure-xci-noha.yml with 100% similarity]
prototypes/xci/file/ha/var/ubuntu.yml [moved from prototypes/xci/file/xci-aio-inventory with 100% similarity]
prototypes/xci/file/mini/configure-targethosts.yml [moved from prototypes/xci/file/xci-aio-vars.yml with 100% similarity]
prototypes/xci/file/mini/playbooks/configure-xcihost.yml [moved from prototypes/xci/file/xci-ha-inventory with 100% similarity]
prototypes/xci/file/mini/playbooks/inventory [moved from prototypes/xci/file/xci-ha-vars.yml with 100% similarity]
prototypes/xci/file/mini/var/ubuntu.yml [moved from prototypes/xci/file/xci-mini-inventory with 100% similarity]
prototypes/xci/file/noha/configure-targethosts.yml [moved from prototypes/xci/file/xci-mini-vars.yml with 100% similarity]
prototypes/xci/file/noha/playbooks/configure-xcihost.yml [moved from prototypes/xci/file/xci-noha-inventory with 100% similarity]
prototypes/xci/file/noha/playbooks/inventory [moved from prototypes/xci/file/xci-noha-vars.yml with 100% similarity]
prototypes/xci/file/noha/var/ubuntu.yml [new file with mode: 0644]
prototypes/xci/flavors/aio [moved from prototypes/xci/flavors/xci-aio.sh with 59% similarity]
prototypes/xci/flavors/ha [moved from prototypes/xci/flavors/xci-ha.sh with 57% similarity]
prototypes/xci/flavors/mini [moved from prototypes/xci/flavors/xci-mini.sh with 56% similarity]
prototypes/xci/flavors/noha [moved from prototypes/xci/flavors/xci-noha.sh with 56% similarity]
prototypes/xci/xci-deploy.sh

diff --git a/prototypes/xci/config/env-vars b/prototypes/xci/config/env-vars
new file mode 100755 (executable)
index 0000000..106a179
--- /dev/null
@@ -0,0 +1,12 @@
+#-------------------------------------------------------------------------------
+# Do not change these settings if you are not developing for XCI Sandbox!
+#-------------------------------------------------------------------------------
+export OPNFV_RELENG_GIT_URL=https://gerrit.opnfv.org/gerrit/releng.git
+export OPENSTACK_BIFROST_GIT_URL=https://git.openstack.org/openstack/bifrost
+export OPENSTACK_OSA_GIT_URL=https://git.openstack.org/openstack/openstack-ansible
+export OPENSTACK_OSA_ETC_PATH=/etc/openstack_deploy
+export CLEAN_DIB_IMAGES=false
+export XCI_IP=192.168.122.2
+export XCI_ANSIBLE_PLAYBOOKS_PATH=$OPNFV_RELENG_PATH/prototypes/xci/file/$XCI_FLAVOR/playbooks
+export XCI_ANSIBLE_VARS_PATH=$OPNFV_RELENG_PATH/prototypes/xci/file/$XCI_FLAVOR/var
+export JOB_NAME=${JOB_NAME:-false}
index c81fcc3..2fe9eee 100755 (executable)
@@ -20,7 +20,7 @@
 #-------------------------------------------------------------------------------
 # use releng from master until the development work with the sandbox is complete
 export OPNFV_RELENG_VERSION="master"
-# HEAD of "stable/ocata" as of 24.03.2017 - verified by OPNFV CI
-export OPENSTACK_BIFROST_VERSION="a87f7ce6c8725b3bbffec7b2efa1e466796848a9"
-# HEAD of "stable/ocata" as of 24.03.2017 - verified by OPNFV CI
-export OPENSTACK_OSA_VERSION="4713cf45e11b4ebca9fbed25d1389854602213d8"
+# HEAD of "master" as of 27.03.2017 - verified by OPNFV CI
+export OPENSTACK_BIFROST_VERSION="7417ff36e4b5fc4e2a6ee7d9dddb7287be20c37d"
+# HEAD of "master" as of 27.03.2017 - verified by OPNFV CI
+export OPENSTACK_OSA_VERSION="baba7b317a5898cd73b4a11c4ce364c7e2d3d77f"
index bb2bfe1..f29dda6 100755 (executable)
@@ -1,36 +1,36 @@
-#-------------------------------------------------------------------------------
-# Set Paths to where git repositories of XCI Components will be cloned
-#-------------------------------------------------------------------------------
-# OPNFV XCI Sandbox is not verified to be used as non-root user as of yet so
-# changing these paths might break things.
-#-------------------------------------------------------------------------------
-export OPNFV_RELENG_PATH=/opt/releng
-export OPENSTACK_BIFROST_PATH=/opt/bifrost
-export OPENSTACK_OSA_PATH=/opt/openstack-ansible
-
 #-------------------------------------------------------------------------------
 # Set Deployment Flavor
 #-------------------------------------------------------------------------------
 # OPNFV XCI currently supports 4 different types of flavors:
-#   - all in one (aio) - xci-aio.sh: 1 VM which acts as controller and compute node
-#   - mini opnfv: 3 VMs, 1 xcimaster, 1 controller, and 1 compute nodes
-#   - noha: 4 VMs, 1 xcimaster, 1 controller, and 2 compute nodes
-#   - ha: 6 VMs, 1 xcimaster, 3 controllers, and 2 compute nodes
+#   - all in one (aio): 1 xci VM which acts as controller and compute node
+#   - mini: 3 VMs, 1 xci VM, 1 controller, and 1 compute nodes
+#   - noha: 4 VMs, 1 xci VM, 1 controller, and 2 compute nodes
+#   - ha: 6 VMs, 1 xci VM, 3 controllers, and 2 compute nodes
 #
 # Apart from having different number of nodes, CPU, RAM, and disk allocations
 # also differ from each other. Please take a look at the env-vars files for
 # each of these flavors.
 #
 # Examples:
-#   export XCI_FLAVOR="xci-aio"
+#   export XCI_FLAVOR="aio"
 # or
-#   export XCI_FLAVOR="xci-mini"
+#   export XCI_FLAVOR="mini"
 # or
-#   export XCI_FLAVOR="xci-noha"
+#   export XCI_FLAVOR="noha"
 # or
-#   export XCI_FLAVOR="xci-ha"
+#   export XCI_FLAVOR="ha"
 #-------------------------------------------------------------------------------
-export XCI_FLAVOR=${XCI_FLAVOR:-xci-mini}
+export XCI_FLAVOR=${XCI_FLAVOR:-aio}
+
+#-------------------------------------------------------------------------------
+# Set Paths to where git repositories of XCI Components will be cloned
+#-------------------------------------------------------------------------------
+# OPNFV XCI Sandbox is not verified to be used as non-root user as of yet so
+# changing these paths might break things.
+#-------------------------------------------------------------------------------
+export OPNFV_RELENG_PATH=/opt/releng
+export OPENSTACK_BIFROST_PATH=/opt/bifrost
+export OPENSTACK_OSA_PATH=/opt/openstack-ansible
 
 #-------------------------------------------------------------------------------
 # Configure some other stuff
@@ -41,4 +41,4 @@ export XCI_FLAVOR=${XCI_FLAVOR:-xci-mini}
 #   ANSIBLE_VERBOSITY="-v"
 # or
 #   ANSIBLE_VERBOSITY="-vvvv"
-export ANSIBLE_VERBOSITY=${ANSIBLE_VERBOSITY:-""}
+export ANSIBLE_VERBOSITY=${ANSIBLE_VERBOSITY-""}
diff --git a/prototypes/xci/file/aio/playbooks/inventory b/prototypes/xci/file/aio/playbooks/inventory
new file mode 100644 (file)
index 0000000..9283e51
--- /dev/null
@@ -0,0 +1,2 @@
+[xciaio]
+xciaio ansible_ssh_host=192.168.122.2
diff --git a/prototypes/xci/file/aio/var/ubuntu.yml b/prototypes/xci/file/aio/var/ubuntu.yml
new file mode 100644 (file)
index 0000000..3a041b1
--- /dev/null
@@ -0,0 +1,7 @@
+---
+OPENSTACK_OSA_GIT_URL: "{{ lookup('env','OPENSTACK_OSA_GIT_URL') }}"
+OPENSTACK_OSA_PATH: "{{ lookup('env','OPENSTACK_OSA_PATH') }}"
+OPENSTACK_OSA_VERSION: "{{ lookup('env','OPENSTACK_OSA_VERSION') }}"
+OPENSTACK_OSA_ETC_PATH: "{{ lookup('env','OPENSTACK_OSA_ETC_PATH') }}"
+XCI_IP: "{{ lookup('env','XCI_IP') }}"
+multi_host: "False"
diff --git a/prototypes/xci/file/noha/var/ubuntu.yml b/prototypes/xci/file/noha/var/ubuntu.yml
new file mode 100644 (file)
index 0000000..e69de29
similarity index 59%
rename from prototypes/xci/flavors/xci-aio.sh
rename to prototypes/xci/flavors/aio
index 9f9ea1b..48754e5 100644 (file)
@@ -1,8 +1,6 @@
 #-------------------------------------------------------------------------------
 # XCI Flavor Configuration
 #-------------------------------------------------------------------------------
-# This is the configuration for xci-aio.
-#
 # You are free to modify parts of the configuration to fit into your environment.
 # But before doing that, please ensure you checked other flavors to see if one
 # them can be used instead, saving you some time.
 # Configure VM Nodes
 #-------------------------------------------------------------------------------
 export TEST_VM_NUM_NODES=1
-export TEST_VM_NODE_NAMES=xciaio
+export TEST_VM_NODE_NAMES=xci
 export VM_DOMAIN_TYPE=kvm
 export VM_CPU=8
 export VM_DISK=80
-export VM_MEMORY_SIZE=12288
+export VM_MEMORY_SIZE=8192
 export VM_DISK_CACHE=unsafe
-
-#-------------------------------------------------------------------------------
-# Ansible Files for the Flavor
-#-------------------------------------------------------------------------------
-XCI_ANSIBLE_PLAYBOOK=$OPNFV_RELENG_PATH/prototypes/xci/file/configure-xci-aio.yml
-XCI_ANSIBLE_INVENTORY=$OPNFV_RELENG_PATH/prototypes/xci/file/xci-aio-inventory
-XCI_ANSIBLE_VARS=$OPNFV_RELENG_PATH/prototypes/xci/file/xci-aio-vars.yml
similarity index 57%
rename from prototypes/xci/flavors/xci-ha.sh
rename to prototypes/xci/flavors/ha
index 442432f..8a045a3 100644 (file)
@@ -1,8 +1,6 @@
 #-------------------------------------------------------------------------------
 # XCI Flavor Configuration
 #-------------------------------------------------------------------------------
-# This is the configuration for xci-aio.
-#
 # You are free to modify parts of the configuration to fit into your environment.
 # But before doing that, please ensure you checked other flavors to see if one
 # them can be used instead, saving you some time.
 # Configure VM Nodes
 #-------------------------------------------------------------------------------
 export TEST_VM_NUM_NODES=6
-export TEST_VM_NODE_NAMES="xcimaster controller00 controller01 controller02 compute00 compute01"
+export TEST_VM_NODE_NAMES="xci controller00 controller01 controller02 compute00 compute01"
 export VM_DOMAIN_TYPE=kvm
 export VM_CPU=8
-export VM_DISK=100
+export VM_DISK=80
 export VM_MEMORY_SIZE=16384
 export VM_DISK_CACHE=unsafe
-
-#-------------------------------------------------------------------------------
-# Ansible Files for the Flavor
-#-------------------------------------------------------------------------------
-XCI_ANSIBLE_PLAYBOOK=$OPNFV_RELENG_PATH/prototypes/xci/file/configure-xci-ha.yml
-XCI_ANSIBLE_INVENTORY=$OPNFV_RELENG_PATH/prototypes/xci/file/xci-ha-inventory
-XCI_ANSIBLE_VARS=$OPNFV_RELENG_PATH/prototypes/xci/file/xci-ha-vars.yml
similarity index 56%
rename from prototypes/xci/flavors/xci-mini.sh
rename to prototypes/xci/flavors/mini
index 11048f6..44b015d 100644 (file)
@@ -1,8 +1,6 @@
 #-------------------------------------------------------------------------------
 # XCI Flavor Configuration
 #-------------------------------------------------------------------------------
-# This is the configuration for xci-aio.
-#
 # You are free to modify parts of the configuration to fit into your environment.
 # But before doing that, please ensure you checked other flavors to see if one
 # them can be used instead, saving you some time.
 # Configure VM Nodes
 #-------------------------------------------------------------------------------
 export TEST_VM_NUM_NODES=3
-export TEST_VM_NODE_NAMES="xcimaster controller00 compute00"
+export TEST_VM_NODE_NAMES="xci controller00 compute00"
 export VM_DOMAIN_TYPE=kvm
 export VM_CPU=8
-export VM_DISK=100
-export VM_MEMORY_SIZE=12288
+export VM_DISK=80
+export VM_MEMORY_SIZE=8192
 export VM_DISK_CACHE=unsafe
-
-#-------------------------------------------------------------------------------
-# Ansible Files for the Flavor
-#-------------------------------------------------------------------------------
-XCI_ANSIBLE_PLAYBOOK=$OPNFV_RELENG_PATH/prototypes/xci/file/configure-xci-mini.yml
-XCI_ANSIBLE_INVENTORY=$OPNFV_RELENG_PATH/prototypes/xci/file/xci-mini-inventory
-XCI_ANSIBLE_VARS=$OPNFV_RELENG_PATH/prototypes/xci/file/xci-mini-vars.yml
similarity index 56%
rename from prototypes/xci/flavors/xci-noha.sh
rename to prototypes/xci/flavors/noha
index 6a83f99..7f686e5 100644 (file)
@@ -1,8 +1,6 @@
 #-------------------------------------------------------------------------------
 # XCI Flavor Configuration
 #-------------------------------------------------------------------------------
-# This is the configuration for xci-aio.
-#
 # You are free to modify parts of the configuration to fit into your environment.
 # But before doing that, please ensure you checked other flavors to see if one
 # them can be used instead, saving you some time.
 # Configure VM Nodes
 #-------------------------------------------------------------------------------
 export TEST_VM_NUM_NODES=4
-export TEST_VM_NODE_NAMES="xcimaster controller00 compute00 compute01"
+export TEST_VM_NODE_NAMES="xci controller00 compute00 compute01"
 export VM_DOMAIN_TYPE=kvm
 export VM_CPU=8
-export VM_DISK=100
-export VM_MEMORY_SIZE=12288
+export VM_DISK=80
+export VM_MEMORY_SIZE=8192
 export VM_DISK_CACHE=unsafe
-
-#-------------------------------------------------------------------------------
-# Ansible Files for the Flavor
-#-------------------------------------------------------------------------------
-XCI_ANSIBLE_PLAYBOOK=$OPNFV_RELENG_PATH/prototypes/xci/file/configure-xci-mini.yml
-XCI_ANSIBLE_INVENTORY=$OPNFV_RELENG_PATH/prototypes/xci/file/xci-mini-inventory
-XCI_ANSIBLE_VARS=$OPNFV_RELENG_PATH/prototypes/xci/file/xci-mini-vars.yml
index 34149f2..401c098 100755 (executable)
@@ -4,6 +4,12 @@ set -o nounset
 set -o pipefail
 set -o xtrace
 
+# This script must run as root
+if [[ $(whoami) != "root" ]]; then
+    echo "Error: This script must be run as root!"
+    exit 1
+fi
+
 # find where are we
 XCI_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 
@@ -14,4 +20,57 @@ source $XCI_PATH/config/pinned-versions
 source $XCI_PATH/config/user-vars
 
 # source flavor configuration
-source $XCI_PATH/flavors/$XCI_FLAVOR.sh
+source $XCI_PATH/flavors/$XCI_FLAVOR
+
+# source xci configuration
+source $XCI_PATH/config/env-vars
+
+# log info to console
+echo "Info: Starting XCI Deployment"
+echo "Info: Deployment parameters"
+echo "-------------------------------------------------------------------------"
+echo "xci flavor: $XCI_FLAVOR"
+echo "opnfv/releng version: $OPNFV_RELENG_VERSION"
+echo "openstack/bifrost version: $OPENSTACK_BIFROST_VERSION"
+echo "openstack/openstack-ansible version: $OPENSTACK_OSA_VERSION"
+echo "-------------------------------------------------------------------------"
+
+#-------------------------------------------------------------------------------
+# Cleanup the leftovers from the previous deployment
+#-------------------------------------------------------------------------------
+echo "Info: Cleaning up the previous deployment"
+$XCI_PATH/../bifrost/scripts/destroy-env.sh > /dev/null 2>&1
+/bin/rm -rf /opt/releng /opt/bifrost /opt/openstack-ansible /opt/stack
+
+#-------------------------------------------------------------------------------
+# Clone the repositories and checkout the versions
+#-------------------------------------------------------------------------------
+echo "Info: Cloning repositories and checking out versions"
+git clone --quiet $OPNFV_RELENG_GIT_URL $OPNFV_RELENG_PATH && \
+    cd $OPNFV_RELENG_PATH
+echo "Info: Cloned opnfv/releng. HEAD currently points at"
+echo "      $(git show --oneline -s --pretty=format:'%h - %s (%cr) <%an>')"
+git clone --quiet $OPENSTACK_BIFROST_GIT_URL $OPENSTACK_BIFROST_PATH && \
+    cd $OPENSTACK_BIFROST_PATH
+echo "Info: Cloned openstack/bifrost. HEAD currently points at"
+echo "      $(git show --oneline -s --pretty=format:'%h - %s (%cr) <%an>')"
+
+#-------------------------------------------------------------------------------
+# Combine opnfv and upstream scripts/playbooks
+#-------------------------------------------------------------------------------
+echo "Info: Combining opnfv/releng and opestack/bifrost scripts/playbooks"
+/bin/cp -rf $OPNFV_RELENG_PATH/prototypes/bifrost/* $OPENSTACK_BIFROST_PATH/
+
+#-------------------------------------------------------------------------------
+# Start provisioning VM nodes
+#-------------------------------------------------------------------------------
+echo "Info: Starting provisining VM nodes using openstack/bifrost"
+echo "      This might take between 10 to 20 minutes depending on the flavor and the host"
+echo "-------------------------------------------------------------------------"
+cd $OPENSTACK_BIFROST_PATH
+STARTTIME=$(date +%s)
+./scripts/bifrost-provision.sh
+ENDTIME=$(date +%s)
+echo "-----------------------------------------------------------------------"
+echo "Info: VM nodes are provisioned!"
+echo "Info: It took $(($ENDTIME - $STARTTIME)) seconds to provising the VM nodes"