summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFatih Degirmenci <fatih.degirmenci@ericsson.com>2017-03-31 15:02:16 +0200
committerFatih Degirmenci <fatih.degirmenci@ericsson.com>2017-03-31 16:34:44 +0200
commite40c112a8127e2601e0e98e00598010120c8d41a (patch)
treead9a33982dfd187f06b0e26fdf91e135976ae6be
parenta2b9b34651438563c5f677faa56d9cf61b09674d (diff)
xci: Create playbook to destroy, create and provision VM nodes
This change moves preparation (cloning repos, combining opnfv/bifrost with openstack/bifrost), destroying and creating VM nodes from the script into a separate playbook. This requires the host to have ansible installed. The version of ansible to install using pip currently matches to what bifrost uses but it is hardcoded and needs to be fixed properly. The reason for having this as a playbook to simplify the script and increase the reuse. This playbook will be used for - developer sandbox - periodic bifrost jobs to run against latest on given branch and promoting bifrost sha1 to pin later on - daily jobs to run using pinned versions of bifrost Change-Id: I033f12290dfea19d4c74be80eea7203211c0369e Signed-off-by: Fatih Degirmenci <fatih.degirmenci@ericsson.com>
-rwxr-xr-xprototypes/xci/config/env-vars3
-rw-r--r--prototypes/xci/playbooks/provision-vm-nodes.yml32
-rw-r--r--prototypes/xci/playbooks/roles/remove-folders/tasks/main.yml1
-rw-r--r--prototypes/xci/var/opnfv.yml4
-rwxr-xr-xprototypes/xci/xci-deploy.sh33
5 files changed, 44 insertions, 29 deletions
diff --git a/prototypes/xci/config/env-vars b/prototypes/xci/config/env-vars
index 1bb553b60..e2976a0a2 100755
--- a/prototypes/xci/config/env-vars
+++ b/prototypes/xci/config/env-vars
@@ -10,6 +10,9 @@ export CLEAN_DIB_IMAGES=false
export OPNFV_HOST_IP=192.168.122.2
export XCI_FLAVOR_ANSIBLE_FILE_PATH=$OPNFV_RELENG_PATH/prototypes/xci/file/$XCI_FLAVOR
export JOB_NAME=${JOB_NAME:-false}
+# TODO: this currently matches to bifrost ansible version
+# there is perhaps better way to do this
+export XCI_ANSIBLE_PIP_VERSION=2.1.5.0
export ANSIBLE_HOST_KEY_CHECKING=False
export DISTRO=${DISTRO:-ubuntu}
export DIB_OS_RELEASE=${DIB_OS_RELEASE:-xenial}
diff --git a/prototypes/xci/playbooks/provision-vm-nodes.yml b/prototypes/xci/playbooks/provision-vm-nodes.yml
new file mode 100644
index 000000000..9a32d0bfc
--- /dev/null
+++ b/prototypes/xci/playbooks/provision-vm-nodes.yml
@@ -0,0 +1,32 @@
+---
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2017 Ericsson AB and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+- hosts: localhost
+ remote_user: root
+ vars_files:
+ - ../var/{{ ansible_os_family }}.yml
+ - ../var/opnfv.yml
+ roles:
+ # using these roles here ensures that we can reuse this playbook in different context
+ - role: remove-folders
+ - { role: clone-repository, project: "opnfv/releng", repo: "{{ OPNFV_RELENG_GIT_URL }}", dest: "{{ OPNFV_RELENG_PATH }}", version: "{{ OPNFV_RELENG_VERSION }}" }
+ - { role: clone-repository, project: "opnfv/bifrost", repo: "{{ OPENSTACK_BIFROST_GIT_URL }}", dest: "{{ OPENSTACK_BIFROST_PATH }}", version: "{{ OPENSTACK_BIFROST_VERSION }}" }
+ tasks:
+ - name: combine opnfv/releng and openstack/bifrost scripts/playbooks
+ copy:
+ src: "{{ OPNFV_RELENG_PATH }}/prototypes/bifrost/"
+ dest: "{{ OPENSTACK_BIFROST_PATH }}"
+ - name: destroy VM nodes created by previous deployment
+ command: "/bin/bash ./scripts/destroy-env.sh"
+ args:
+ chdir: "{{ OPENSTACK_BIFROST_PATH }}"
+ - name: create and provision VM nodes for the flavor {{ XCI_FLAVOR }}
+ command: "/bin/bash ./scripts/bifrost-provision.sh"
+ args:
+ chdir: "{{ OPENSTACK_BIFROST_PATH }}"
diff --git a/prototypes/xci/playbooks/roles/remove-folders/tasks/main.yml b/prototypes/xci/playbooks/roles/remove-folders/tasks/main.yml
index fb321dfde..ac8c0f7dc 100644
--- a/prototypes/xci/playbooks/roles/remove-folders/tasks/main.yml
+++ b/prototypes/xci/playbooks/roles/remove-folders/tasks/main.yml
@@ -14,6 +14,7 @@
recurse: no
with_items:
- "{{ OPNFV_RELENG_PATH }}"
+ - "{{ OPENSTACK_BIFROST_PATH }}"
- "{{ OPENSTACK_OSA_PATH }}"
- "{{ OPENSTACK_OSA_ETC_PATH }}"
- "{{ LOG_PATH }} "
diff --git a/prototypes/xci/var/opnfv.yml b/prototypes/xci/var/opnfv.yml
index 174d9b3bf..dd3761bd1 100644
--- a/prototypes/xci/var/opnfv.yml
+++ b/prototypes/xci/var/opnfv.yml
@@ -10,10 +10,14 @@
OPNFV_RELENG_GIT_URL: "{{ lookup('env','OPNFV_RELENG_GIT_URL') }}"
OPNFV_RELENG_PATH: "{{ lookup('env','OPNFV_RELENG_PATH') }}"
OPNFV_RELENG_VERSION: "{{ lookup('env','OPNFV_RELENG_VERSION') }}"
+OPENSTACK_BIFROST_GIT_URL: "{{ lookup('env','OPENSTACK_BIFROST_GIT_URL') }}"
+OPENSTACK_BIFROST_PATH: "{{ lookup('env','OPENSTACK_BIFROST_PATH') }}"
+OPENSTACK_BIFROST_VERSION: "{{ lookup('env','OPENSTACK_BIFROST_VERSION') }}"
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_ANSIBLE_PIP_VERSION: "{{ lookup('env','XCI_ANSIBLE_PIP_VERSION') }}"
XCI_FLAVOR: "{{ lookup('env','XCI_FLAVOR') }}"
XCI_FLAVOR_ANSIBLE_FILE_PATH: "{{ lookup('env','XCI_FLAVOR_ANSIBLE_FILE_PATH') }}"
LOG_PATH: "{{ lookup('env','LOG_PATH') }}"
diff --git a/prototypes/xci/xci-deploy.sh b/prototypes/xci/xci-deploy.sh
index 277206dc7..c5cfab36d 100755
--- a/prototypes/xci/xci-deploy.sh
+++ b/prototypes/xci/xci-deploy.sh
@@ -36,41 +36,16 @@ echo "openstack/openstack-ansible version: $OPENSTACK_OSA_VERSION"
echo "-------------------------------------------------------------------------"
#-------------------------------------------------------------------------------
-# Cleanup the leftovers from the previous deployment
+# install ansible on localhost
#-------------------------------------------------------------------------------
-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
-
-#-------------------------------------------------------------------------------
-# 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/
+pip install ansible==$XCI_ANSIBLE_PIP_VERSION
#-------------------------------------------------------------------------------
# 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)
+cd $XCI_PATH/playbooks
+ansible-playbook $ANSIBLE_VERBOSITY -i inventory provision-vm-nodes.yml
echo "-----------------------------------------------------------------------"
echo "Info: VM nodes are provisioned!"
-echo "Info: It took $(($ENDTIME - $STARTTIME)) seconds to provising the VM nodes"