export XCI_FLAVOR_ANSIBLE_FILE_PATH=$XCI_PATH/xci/file/$XCI_FLAVOR
export CI_LOOP=${CI_LOOP:-daily}
export JOB_NAME=${JOB_NAME:-false}
+# XCI_CACHE is a cache on localhost where repositories and scenarios are cloned.
export XCI_CACHE=${XCI_PATH}/.cache
+# OPNFV_XCI_CACHE is similar to XCI_CACHE but refers to the remote OPNFV host.
+export OPNFV_XCI_CACHE="/root/releng-xci/.cache"
export XCI_SCENARIOS_CACHE="${XCI_CACHE}/repos/scenarios"
export XCI_PLAYBOOKS=${XCI_PATH}/xci/playbooks
#-------------------------------------------------------------------------------
-# Paths where git repositories of XCI Components will be cloned
+# Paths where git repositories of XCI Components will be cloned on the OPNFV host
#-------------------------------------------------------------------------------
-export OPENSTACK_BIFROST_PATH="${XCI_CACHE}/repos/bifrost"
-export OPENSTACK_OSA_PATH="${XCI_CACHE}/repos/openstack-ansible"
+export OPENSTACK_OSA_PATH="${OPNFV_XCI_CACHE}/repos/openstack-ansible"
# Logging
export LOG_PATH=${LOG_PATH:-${XCI_PATH}/xci/logs}
vars_files:
- ../var/opnfv.yml
- roles:
- - role: clone-repository
- project: "openstack/openstack-ansible-openstack_openrc"
- repo: "{{ OPENSTACK_OSA_OPENRC_GIT_URL }}"
- dest: roles/openstack-ansible-openstack_openrc
- version: "master"
-
- tasks:
+ pre_tasks:
- name: Load distribution variables
include_vars:
file: ../var/{{ ansible_os_family }}.yml
state: absent
recurse: no
with_items:
- - "{{ OPENSTACK_BIFROST_PATH }}"
- - "{{ OPENSTACK_OSA_PATH }}"
- - "{{ OPENSTACK_OSA_ETC_PATH }}"
+ - "{{ XCI_CACHE }}/repos"
- "{{ LOG_PATH }} "
- "{{ OPNFV_SSH_HOST_KEYS_PATH }}"
+
+ roles:
+ - role: clone-repository
+ project: "openstack/openstack-ansible-openstack_openrc"
+ repo: "{{ OPENSTACK_OSA_OPENRC_GIT_URL }}"
+ dest: roles/openstack-ansible-openstack_openrc
+ version: "master"
+ - role: clone-repository
+ project: "openstack/openstack-ansible"
+ repo: "{{ OPENSTACK_OSA_GIT_URL }}"
+ dest: "{{ XCI_CACHE }}/repos/openstack-ansible"
+ version: "{{ OPENSTACK_OSA_VERSION }}"
+
+ tasks:
- name: create log directory {{LOG_PATH}}
file:
path: "{{LOG_PATH}}"
- name: generate self signed certificate
command: openssl req -new -nodes -x509 -subj "{{ XCI_SSL_SUBJECT }}" -days 3650 -keyout "/etc/ssl/private/xci.key" -out "/etc/ssl/certs/xci.crt" -extensions v3_ca
become: true
+ - name: Synchronize local development OSA repository to XCI paths
+ # command module is much faster than the copy module
+ synchronize:
+ src: "{{ OPENSTACK_OSA_DEV_PATH }}"
+ dest: "{{ XCI_CACHE }}/repos/openstack-ansible"
+ recursive: yes
+ delete: yes
+ when:
+ - OPENSTACK_OSA_DEV_PATH != ""
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-- hosts: opnfv
- remote_user: root
- vars_files:
- - ../var/opnfv.yml
- pre_tasks:
- - name: Load distribution variables
- include_vars:
- file: ../var/{{ ansible_os_family }}.yml
- file: ../file/{{ XCI_FLAVOR }}/flavor-vars.yml
-
- roles:
- - role: clone-repository
- project: "openstack/openstack-ansible"
- repo: "{{ OPENSTACK_OSA_GIT_URL }}"
- dest: "{{ OPENSTACK_OSA_PATH }}"
- version: "{{ OPENSTACK_OSA_VERSION }}"
-
- hosts: opnfv
remote_user: root
vars_files:
with_items:
- ../var/{{ ansible_os_family }}.yml
- ../file/{{ XCI_FLAVOR }}/flavor-vars.yml
+ - name: Set facts for remote deployment
+ set_fact:
+ remote_xci_path: "{{ ansible_env.HOME }}/releng-xci"
+ remote_xci_flavor_files: "{{ ansible_env.HOME }}/releng-xci/xci/file/{{ XCI_FLAVOR }}"
+ remote_xci_playbooks: "{{ ansible_env.HOME }}/releng-xci/xci/playbooks"
roles:
- - role: configure-network
+ - role: configure-network
tasks:
- name: generate SSH keys
src: "{{ ansible_env.HOME }}/.ssh/id_rsa.pub"
dest: "../file/authorized_keys"
flat: yes
- - name: Set facts for remote deployment
- set_fact:
- remote_xci_path: "{{ ansible_env.HOME }}/releng-xci"
- remote_xci_flavor_files: "{{ ansible_env.HOME }}/releng-xci/xci/file/{{ XCI_FLAVOR }}"
- remote_xci_playbooks: "{{ ansible_env.HOME }}/releng-xci/xci/playbooks"
- name: Copy releng-xci to remote host
synchronize:
src: "{{ XCI_PATH }}/"
include_vars:
file: ../var/{{ ansible_os_family }}.yml
roles:
- - { role: clone-repository, project: "opnfv/bifrost", repo: "{{ OPENSTACK_BIFROST_GIT_URL }}", dest: "{{ OPENSTACK_BIFROST_PATH }}", version: "{{ OPENSTACK_BIFROST_VERSION }}" }
+ - role: clone-repository
+ project: "opnfv/bifrost"
+ repo: "{{ OPENSTACK_BIFROST_GIT_URL }}"
+ dest: "{{ XCI_CACHE }}/repos/bifrost"
+ version: "{{ OPENSTACK_BIFROST_VERSION }}"
tasks:
- name: Load distribution variables
# command module is much faster than the copy module
synchronize:
src: "{{ OPENSTACK_BIFROST_DEV_PATH }}"
- dest: "{{ OPENSTACK_BIFROST_PATH }}"
+ dest: "{{ XCI_CACHE }}/repos/bifrost"
recursive: yes
delete: yes
when:
- name: combine opnfv/releng-xci and openstack/bifrost scripts/playbooks
copy:
src: "{{ XCI_PATH}}/bifrost/"
- dest: "{{ OPENSTACK_BIFROST_PATH }}"
+ dest: "{{ XCI_CACHE }}/repos/bifrost"
OPNFV_RELENG_GIT_URL: "{{ lookup('env','OPNFV_RELENG_GIT_URL') }}"
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_DEV_PATH: "{{ lookup('env','OPENSTACK_BIFROST_DEV_PATH') }}"
OPENSTACK_BIFROST_VERSION: "{{ lookup('env','OPENSTACK_BIFROST_VERSION') }}"
OPENSTACK_OSA_GIT_URL: "{{ lookup('env','OPENSTACK_OSA_GIT_URL') }}"
sudo -E bash ./scripts/destroy-env.sh
cd $XCI_PLAYBOOKS
ansible-playbook ${XCI_ANSIBLE_VERBOSITY} -i inventory provision-vm-nodes.yml
-cd ${OPENSTACK_BIFROST_PATH}
+cd ${XCI_CACHE}/repos/bifrost
bash ./scripts/bifrost-provision.sh
echo "-----------------------------------------------------------------------"
echo "Info: VM nodes are provisioned!"
echo "Info: Setting up target hosts for openstack-ansible"
echo "-----------------------------------------------------------------------"
ssh root@$OPNFV_HOST_IP "openstack-ansible ${XCI_ANSIBLE_VERBOSITY} \
- $OPENSTACK_OSA_PATH/playbooks/setup-hosts.yml | tee setup-hosts.log "
+ releng-xci/.cache/repos/openstack-ansible/playbooks/setup-hosts.yml | tee setup-hosts.log "
scp root@$OPNFV_HOST_IP:~/setup-hosts.log $LOG_PATH/setup-hosts.log
echo "-----------------------------------------------------------------------"
echo "Info: Set up target hosts for openstack-ansible successfuly"
#-------------------------------------------------------------------------------
echo "Info: Gathering facts"
echo "-----------------------------------------------------------------------"
-ssh root@$OPNFV_HOST_IP "cd $OPENSTACK_OSA_PATH/playbooks; \
+ssh root@$OPNFV_HOST_IP "cd releng-xci/.cache/repos/openstack-ansible/playbooks; \
ansible ${XCI_ANSIBLE_VERBOSITY} -m setup -a gather_subset=network,hardware,virtual all"
echo "-----------------------------------------------------------------------"
echo "-----------------------------------------------------------------------"
echo "xci: running ansible playbook setup-infrastructure.yml"
ssh root@$OPNFV_HOST_IP "openstack-ansible ${XCI_ANSIBLE_VERBOSITY} \
- $OPENSTACK_OSA_PATH/playbooks/setup-infrastructure.yml | tee setup-infrastructure.log"
+ releng-xci/.cache/repos/openstack-ansible/playbooks/setup-infrastructure.yml | tee setup-infrastructure.log"
scp root@$OPNFV_HOST_IP:~/setup-infrastructure.log $LOG_PATH/setup-infrastructure.log
echo "-----------------------------------------------------------------------"
# check the log to see if we have any error
# Apply SUSE fix until https://review.openstack.org/508154 is merged
if [[ ${OS_FAMILY,,} == "suse" ]]; then
ssh root@$OPNFV_HOST_IP "ansible --ssh-extra-args='-o StrictHostKeyChecking=no' \
- -i $OPENSTACK_OSA_PATH/playbooks/inventory/ galera_container -m shell \
+ -i releng-xci/.cache/repos/openstack-ansible/playbooks/inventory/ galera_container -m shell \
-a \"sed -i \\\"s@/var/run/mysqld/mysqld.sock@/var/run/mysql/mysql.sock@\\\" /etc/my.cnf\""
fi
ssh root@$OPNFV_HOST_IP "ansible --ssh-extra-args='-o StrictHostKeyChecking=no' \
- -i $OPENSTACK_OSA_PATH/playbooks/inventory/ galera_container -m shell \
+ -i releng-xci/.cache/repos/openstack-ansible/playbooks/inventory/ galera_container -m shell \
-a \"mysql -h localhost -e \\\"show status like '%wsrep_cluster_%';\\\"\" | tee galera.log"
scp root@$OPNFV_HOST_IP:~/galera.log $LOG_PATH/galera.log
echo "-----------------------------------------------------------------------"
echo "Info: Installing OpenStack on target hosts"
echo "-----------------------------------------------------------------------"
ssh root@$OPNFV_HOST_IP "openstack-ansible ${XCI_ANSIBLE_VERBOSITY} \
- $OPENSTACK_OSA_PATH/playbooks/setup-openstack.yml | tee opnfv-setup-openstack.log"
+ releng-xci/.cache/repos/openstack-ansible/playbooks/setup-openstack.yml | tee opnfv-setup-openstack.log"
scp root@$OPNFV_HOST_IP:~/opnfv-setup-openstack.log $LOG_PATH/opnfv-setup-openstack.log
echo "-----------------------------------------------------------------------"
# check the log to see if we have any error