diff options
21 files changed, 289 insertions, 98 deletions
diff --git a/xci/Vagrantfile b/Vagrantfile index d58ed62e..58b6368e 100644 --- a/xci/Vagrantfile +++ b/Vagrantfile @@ -22,7 +22,7 @@ Vagrant.configure(2) do |config| # Configure all VM specs. config.vm.provider "virtualbox" do |v| - v.memory = 8192 + v.memory = 16384 v.cpus = 8 end @@ -37,14 +37,17 @@ Vagrant.configure(2) do |config| config.vm.provision "shell"do |s| s.privileged = false s.inline = <<-SHELL + sudo apt-get update cd /vagrant export XCI_FLAVOR=${XCI_FLAVOR:-mini} export VM_CPU=${VM_CPU:-2} export VM_DISK=${VM_DISK:-40} export VM_MEMORY_SIZE=${VM_MEMORY_SIZE:-2048} export VM_DOMAIN_TYPE=qemu + export PATH=$PATH:$HOME/.local/bin + export OPNFV_RELENG_DEV_PATH=/vagrant [[ ! -e ${HOME}/.ssh/id_rsa ]] && ssh-keygen -q -P '' -f ${HOME}/.ssh/id_rsa - ./xci-deploy.sh + cd xci && ./xci-deploy.sh SHELL s.env = { "XCI_FLAVOR" => "#{ENV['XCI_FLAVOR']}", @@ -63,21 +66,24 @@ Vagrant.configure(2) do |config| config.vm.provision "shell" do |s| s.privileged = false s.inline = <<-SHELL + sudo yum update cd /vagrant - PART_START=$(parted /dev/sda --script unit MB print | awk '/^ 3 / {print $3}') - parted /dev/sda --script unit MB mkpart primary ${PART_START} 100% - parted /dev/sda --script set 4 lvm on - pvcreate /dev/sda4 - vgextend VolGroup00 /dev/sda4 - lvextend -l +100%FREE /dev/mapper/VolGroup00-LogVol00 - xfs_growfs /dev/mapper/VolGroup00-LogVol00 + PART_START=$(sudo parted /dev/sda --script unit MB print | awk '/^ 3 / {print $3}') + sudo parted /dev/sda --script unit MB mkpart primary ${PART_START} 100% + sudo parted /dev/sda --script set 4 lvm on + sudo pvcreate /dev/sda4 + sudo vgextend VolGroup00 /dev/sda4 + sudo lvextend -l +100%FREE /dev/mapper/VolGroup00-LogVol00 + sudo xfs_growfs /dev/mapper/VolGroup00-LogVol00 export XCI_FLAVOR=${XCI_FLAVOR:-mini} export VM_CPU=${VM_CPU:-2} export VM_DISK=${VM_DISK:-40} export VM_MEMORY_SIZE=${VM_MEMORY_SIZE:-2048} export VM_DOMAIN_TYPE=qemu + export PATH=$PATH:$HOME/.local/bin + export OPNFV_RELENG_DEV_PATH=/vagrant [[ ! -e ${HOME}/.ssh/id_rsa ]] && ssh-keygen -q -P '' -f ${HOME}/.ssh/id_rsa - ./xci-deploy.sh + cd xci && ./xci-deploy.sh SHELL s.env = { "XCI_FLAVOR" => "#{ENV['XCI_FLAVOR']}", @@ -95,20 +101,23 @@ Vagrant.configure(2) do |config| # NOTE(hwoarang) The parted version in Leap 42.2 can't do an online # partition resize so we must create a new one and attach it to the # btrfs filesystem. - s.privileged = true, + s.privileged = false s.inline = <<-SHELL + sudo zypper -n up -l cd /vagrant - echo -e 'd\n2\nn\np\n\n\n\nn\nw' | fdisk /dev/sda - PART_END=$(fdisk -l /dev/sda | grep ^/dev/sda2 | awk '{print $4}') - resizepart /dev/sda 2 $PART_END - btrfs fi resize max / + echo -e 'd\n2\nn\np\n\n\n\nn\nw' | sudo fdisk /dev/sda + PART_END=$(sudo fdisk -l /dev/sda | grep ^/dev/sda2 | awk '{print $4}') + sudo resizepart /dev/sda 2 $PART_END + sudo btrfs fi resize max / export XCI_FLAVOR=${XCI_FLAVOR:-mini} export VM_CPU=${VM_CPU:-2} export VM_DISK=${VM_DISK:-40} export VM_MEMORY_SIZE=${VM_MEMORY_SIZE:-2048} export VM_DOMAIN_TYPE=qemu + export PATH=$PATH:$HOME/.local/bin + export OPNFV_RELENG_DEV_PATH=/vagrant [[ ! -e ${HOME}/.ssh/id_rsa ]] && ssh-keygen -q -P '' -f ${HOME}/.ssh/id_rsa - ./xci-deploy.sh + cd xci && ./xci-deploy.sh SHELL end end @@ -120,20 +129,25 @@ Vagrant.configure(2) do |config| # NOTE(hwoarang) The parted version in Leap 42.3 can't do an online # partition resize so we must create a new one and attach it to the # btrfs filesystem. - s.privileged = true, + s.privileged = false s.inline = <<-SHELL + sudo zypper -n up -l cd /vagrant - echo -e 'd\n2\nn\np\n\n\n\nn\nw' | fdisk /dev/sda - PART_END=$(fdisk -l /dev/sda | grep ^/dev/sda2 | awk '{print $4}') - resizepart /dev/sda 2 $PART_END - btrfs fi resize max / + echo -e 'd\n2\nn\np\n\n\n\nn\nw' | sudo fdisk /dev/sda + PART_END=$(sudo fdisk -l /dev/sda | grep ^/dev/sda2 | awk '{print $4}') + sudo resizepart /dev/sda 2 $PART_END + sudo btrfs fi resize max / export XCI_FLAVOR=${XCI_FLAVOR:-mini} export VM_CPU=${VM_CPU:-2} export VM_DISK=${VM_DISK:-40} export VM_MEMORY_SIZE=${VM_MEMORY_SIZE:-2048} export VM_DOMAIN_TYPE=qemu + export PATH=$PATH:$HOME/.local/bin + export OPNFV_RELENG_DEV_PATH=/vagrant + # workaround for https://github.com/openSUSE/vagrant/pull/22 + sudo bash -c 'echo "127.0.0.1 localhost" >> /etc/hosts' [[ ! -e ${HOME}/.ssh/id_rsa ]] && ssh-keygen -q -P '' -f ${HOME}/.ssh/id_rsa - ./xci-deploy.sh + cd xci && ./xci-deploy.sh SHELL end end diff --git a/bifrost/scripts/bifrost-provision.sh b/bifrost/scripts/bifrost-provision.sh index dab55f74..d4d1f96a 100755 --- a/bifrost/scripts/bifrost-provision.sh +++ b/bifrost/scripts/bifrost-provision.sh @@ -16,7 +16,7 @@ BIFROST_HOME=$SCRIPT_HOME/.. ANSIBLE_INSTALL_ROOT=${ANSIBLE_INSTALL_ROOT:-/opt/stack} ENABLE_VENV="false" USE_DHCP="false" -USE_VENV="true" +USE_VENV="false" BUILD_IMAGE=true PROVISION_WAIT_TIMEOUT=${PROVISION_WAIT_TIMEOUT:-3600} @@ -81,12 +81,6 @@ else ANSIBLE=${HOME}/.local/bin/ansible-playbook fi -# Source Ansible -set +x +o nounset -$SCRIPT_HOME/env-setup.sh -ANSIBLE=$(which ansible-playbook) -set -x -o nounset - logs_on_exit() { $SCRIPT_HOME/collect-test-info.sh } diff --git a/bifrost/scripts/destroy-env.sh b/bifrost/scripts/destroy-env.sh index 87f792a5..f6eca4e3 100755 --- a/bifrost/scripts/destroy-env.sh +++ b/bifrost/scripts/destroy-env.sh @@ -19,12 +19,17 @@ rm -rf /opt/stack # HOME is normally set by sudo -H rm -rf ${HOME}/.config/openstack -# Delete all libvirt VMs and hosts from vbmc (look for a port number) -for vm in $(vbmc list | awk '/[0-9]/{{ print $2 }}'); do - virsh destroy $vm || true - virsh undefine $vm || true - vbmc delete $vm -done +# bifrost installs everything on venv so we need to look there if virtualbmc is not installed on the host. +if which vbmc &>/dev/null || { [[ -e /opt/stack/bifrost/bin/activate ]] && source /opt/stack/bifrost/bin/activate; }; then + # Delete all libvirt VMs and hosts from vbmc (look for a port number) + for vm in $(vbmc list | awk '/[0-9]/{{ print $2 }}'); do + virsh destroy $vm || true + virsh undefine $vm || true + vbmc delete $vm + done + which vbmc &>/dev/null || { [[ -e /opt/stack/bifrost/bin/activate ]] && deactivate; } +fi + # Destroy all XCI VMs if the previous operation failed [[ -n ${XCI_FLAVOR} ]] && \ for vm in ${TEST_VM_NODE_NAMES}; do diff --git a/xci/config/env-vars b/xci/config/env-vars index d8e71244..c399707b 100755 --- a/xci/config/env-vars +++ b/xci/config/env-vars @@ -17,10 +17,5 @@ export JOB_NAME=${JOB_NAME:-false} # Overall, it's better to use what OSA supports so we can use new features. export XCI_ANSIBLE_PIP_VERSION=2.3.2.0 export ANSIBLE_HOST_KEY_CHECKING=False -export DISTRO=${DISTRO:-ubuntu} -export DIB_OS_RELEASE=${DIB_OS_RELEASE:-xenial} -export DIB_OS_ELEMENT=${DIB_OS_ELEMENT:-ubuntu-minimal} -export DIB_OS_PACKAGES=${DIB_OS_PACKAGES:-"vlan,vim,less,bridge-utils,sudo,language-pack-en,iputils-ping,rsyslog,curl,python,debootstrap,ifenslave,ifenslave-2.6,lsof,lvm2,tcpdump,nfs-kernel-server,chrony,iptables"} -export EXTRA_DIB_ELEMENTS=${EXTRA_DIB_ELEMENTS:-"openssh-server"} # subject of the certificate export XCI_SSL_SUBJECT=${XCI_SSL_SUBJECT:-"/C=US/ST=California/L=San Francisco/O=IT/CN=xci.releng.opnfv.org"} diff --git a/xci/file/aio/configure-opnfvhost.yml b/xci/file/aio/configure-opnfvhost.yml index 708ad618..5ef19326 100644 --- a/xci/file/aio/configure-opnfvhost.yml +++ b/xci/file/aio/configure-opnfvhost.yml @@ -1,11 +1,17 @@ --- - hosts: opnfv remote_user: root - vars_files: + gather_facts: true + become: yes vars_files: - ../var/opnfv.yml roles: - role: remove-folders + +- hosts: opnfv + remote_user: root + vars_files: + - ../var/opnfv.yml - { role: clone-repository, project: "openstack/openstack-ansible", repo: "{{ OPENSTACK_OSA_GIT_URL }}", dest: "{{ OPENSTACK_OSA_PATH }}", version: "{{ OPENSTACK_OSA_VERSION }}" } tasks: - name: bootstrap ansible on opnfv host diff --git a/xci/file/ha/openstack_user_config.yml b/xci/file/ha/openstack_user_config.yml index 09fb734c..360aa5cb 100644 --- a/xci/file/ha/openstack_user_config.yml +++ b/xci/file/ha/openstack_user_config.yml @@ -9,6 +9,7 @@ used_ips: - "172.29.240.1,172.29.240.50" - "172.29.244.1,172.29.244.50" - "172.29.248.1,172.29.248.50" + - "172.29.236.222" global_overrides: internal_lb_vip_address: 172.29.236.222 diff --git a/xci/playbooks/configure-localhost.yml b/xci/playbooks/configure-localhost.yml index 2dfa0530..915d1959 100644 --- a/xci/playbooks/configure-localhost.yml +++ b/xci/playbooks/configure-localhost.yml @@ -9,20 +9,35 @@ ############################################################################## - hosts: localhost connection: local + become: yes vars_files: - - ../var/{{ ansible_os_family }}.yml - ../var/opnfv.yml + pre_tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml roles: - role: remove-folders + +- hosts: localhost + connection: local + vars_files: + - ../var/opnfv.yml + pre_tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml + roles: - { role: clone-repository, project: "opnfv/releng-xci", repo: "{{ OPNFV_RELENG_GIT_URL }}", dest: "{{ OPNFV_RELENG_PATH }}", version: "{{ OPNFV_RELENG_VERSION }}" } - { role: clone-repository, project: "openstack/openstack-ansible-openstack_openrc", repo: "{{ OPENSTACK_OSA_OPENRC_GIT_URL }}", dest: "{{ OPENSTACK_OSA_OPENRC_PATH }}", version: "master" } - hosts: localhost connection: local - gather_facts: false vars_files: - - ../var/{{ ansible_os_family }}.yml - ../var/opnfv.yml tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml - name: Synchronize local development releng-xci repository to XCI paths synchronize: src: "{{ OPNFV_RELENG_DEV_PATH }}" @@ -35,9 +50,11 @@ - hosts: localhost connection: local vars_files: - - ../var/{{ ansible_os_family }}.yml - ../var/opnfv.yml tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml - name: create log directory {{LOG_PATH}} file: path: "{{LOG_PATH}}" @@ -59,11 +76,12 @@ dest: "{{OPNFV_RELENG_PATH}}/xci/var" - hosts: localhost connection: local - gather_facts: false vars_files: - - ../var/{{ ansible_os_family }}.yml - ../var/opnfv.yml tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml - name: create certificate directory /etc/ssl/certs file: path: "/etc/ssl/certs" diff --git a/xci/playbooks/configure-opnfvhost.yml b/xci/playbooks/configure-opnfvhost.yml index d45c1be8..067a1176 100644 --- a/xci/playbooks/configure-opnfvhost.yml +++ b/xci/playbooks/configure-opnfvhost.yml @@ -9,21 +9,38 @@ ############################################################################## - hosts: opnfv remote_user: root + become: yes vars_files: - - ../var/{{ ansible_os_family }}.yml - ../var/flavor-vars.yml - ../var/opnfv.yml + pre_tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml roles: - role: remove-folders + +- hosts: opnfv + remote_user: root + vars_files: + - ../var/flavor-vars.yml + - ../var/opnfv.yml + pre_tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml + roles: - { role: clone-repository, project: "opnfv/releng-xci", repo: "{{ OPNFV_RELENG_GIT_URL }}", dest: "{{ OPNFV_RELENG_PATH }}", version: "{{ OPNFV_RELENG_VERSION }}" } - { 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: - - ../var/{{ ansible_os_family }}.yml - ../var/opnfv.yml tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml - name: Synchronize local development releng-xci repository to XCI paths synchronize: src: "{{ OPNFV_RELENG_DEV_PATH }}" @@ -44,9 +61,12 @@ - hosts: opnfv remote_user: root vars_files: - - ../var/{{ ansible_os_family }}.yml - ../var/flavor-vars.yml - ../var/opnfv.yml + pre_tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml roles: - role: configure-network tasks: @@ -132,13 +152,15 @@ shell: "/bin/cat {{ ansible_env.HOME }}/.ssh/id_rsa.pub >> ../file/authorized_keys" - hosts: opnfv - gather_facts: no remote_user: root vars_files: - - ../var/{{ ansible_os_family }}.yml - ../var/flavor-vars.yml - ../var/opnfv.yml - "{{ XCI_FLAVOR_ANSIBLE_FILE_PATH }}/user_variables.yml" + pre_tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml roles: - role: "openstack-ansible-openstack_openrc" tasks: diff --git a/xci/playbooks/configure-targethosts.yml b/xci/playbooks/configure-targethosts.yml index 88da1312..4cee1df8 100644 --- a/xci/playbooks/configure-targethosts.yml +++ b/xci/playbooks/configure-targethosts.yml @@ -10,8 +10,11 @@ - hosts: controller remote_user: root vars_files: - - ../var/{{ ansible_os_family }}.yml - ../var/flavor-vars.yml + pre_tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml roles: - role: configure-network # we need to force sync time with ntp or the nodes will be out of sync timewise @@ -20,8 +23,11 @@ - hosts: compute remote_user: root vars_files: - - ../var/{{ ansible_os_family }}.yml - ../var/flavor-vars.yml + pre_tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml roles: - role: configure-network # we need to force sync time with ntp or the nodes will be out of sync timewise @@ -29,6 +35,5 @@ - hosts: compute00 remote_user: root - # TODO: this role is for configuring NFS on xenial and adjustment needed for other distros roles: - role: configure-nfs diff --git a/xci/playbooks/provision-vm-nodes.yml b/xci/playbooks/provision-vm-nodes.yml index e9b8fa2d..81fc5755 100644 --- a/xci/playbooks/provision-vm-nodes.yml +++ b/xci/playbooks/provision-vm-nodes.yml @@ -9,22 +9,35 @@ ############################################################################## - hosts: localhost connection: local + gather_facts: true + become: yes 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 + +- hosts: localhost + connection: local + gather_facts: true + vars_files: + - ../var/opnfv.yml + pre_tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml + roles: - { role: clone-repository, project: "opnfv/releng-xci", 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 }}" } - hosts: localhost connection: local - gather_facts: false + gather_facts: true vars_files: - - ../var/{{ ansible_os_family }}.yml - ../var/opnfv.yml tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml - name: Synchronize local development bifrost repository to XCI paths # command module is much faster than the copy module synchronize: @@ -54,11 +67,13 @@ - hosts: localhost connection: local - gather_facts: false + gather_facts: true vars_files: - - ../var/{{ ansible_os_family }}.yml - ../var/opnfv.yml tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml - name: combine opnfv/releng-xci and openstack/bifrost scripts/playbooks copy: src: "{{ OPNFV_RELENG_PATH }}/bifrost/" @@ -68,21 +83,12 @@ connection: local become: yes vars_files: - - ../var/{{ ansible_os_family }}.yml - ../var/opnfv.yml tasks: + - name: Load distribution variables + include_vars: + file: ../var/{{ ansible_os_family }}.yml - name: destroy VM nodes created by previous deployment command: "/bin/bash ./scripts/destroy-env.sh" args: chdir: "{{ OPENSTACK_BIFROST_PATH }}" - -- hosts: localhost - connection: local - vars_files: - - ../var/{{ ansible_os_family }}.yml - - ../var/opnfv.yml - tasks: - - 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/xci/playbooks/roles/configure-network/files/network-config-suse b/xci/playbooks/roles/configure-network/files/network-config-suse new file mode 100755 index 00000000..1a9f1e7d --- /dev/null +++ b/xci/playbooks/roles/configure-network/files/network-config-suse @@ -0,0 +1,15 @@ +#!/bin/bash + +INTERFACE=$1 +ACTION=$4 + +if [[ $INTERFACE == "br-vlan" ]]; then + if [[ $ACTION == "pre-up" ]]; then + ip link add br-vlan-veth type veth peer name eth12 || true + ip link set br-vlan-veth up + ip link set eth12 up + else + ip link del br-vlan-veth || true + fi +fi + diff --git a/xci/playbooks/roles/configure-network/tasks/main.yml b/xci/playbooks/roles/configure-network/tasks/main.yml index df1580e5..126389d8 100644 --- a/xci/playbooks/roles/configure-network/tasks/main.yml +++ b/xci/playbooks/roles/configure-network/tasks/main.yml @@ -7,7 +7,11 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -# TODO: this role needs to be adjusted for different distros +- name: ensure glean rules are removed + file: + path: "/etc/udev/rules.d/99-glean.rules" + state: absent + - block: - name: configure modules lineinfile: @@ -19,10 +23,6 @@ modprobe: name: 8021q state: present - - name: ensure glean rules are removed - file: - path: "/etc/udev/rules.d/99-glean.rules" - state: absent - name: ensure interfaces.d folder is empty shell: "/bin/rm -rf /etc/network/interfaces.d/*" - name: ensure interfaces file is updated @@ -32,3 +32,42 @@ - name: restart network service shell: "/sbin/ifconfig {{ interface }} 0 && /sbin/ifdown -a && /sbin/ifup -a" when: ansible_os_family | lower == "debian" + +- block: + - name: Remove existing network configuration + file: + path: "/etc/sysconfig/network/{{ item }}" + state: absent + with_items: + - "ifcfg-eth0" + - "ifroute-eth0" + + - name: Configure networking on SUSE + template: + src: "{{ ansible_os_family | lower }}/suse.interface.j2" + dest: "/etc/sysconfig/network/ifcfg-{{ item.name }}" + with_items: + - { name: "{{ interface }}" } + - { name: "{{ interface }}.10", vlan_id: 10 } + - { name: "{{ interface }}.30", vlan_id: 30 } + - { name: "{{ interface }}.20", vlan_id: 20 } + - { name: "br-mgmt", bridge_ports: "{{ interface }}.10", ip: "{{ host_info[inventory_hostname].MGMT_IP }}/22" } + - { name: "br-vxlan", bridge_ports: "{{ interface }}.30", ip: "{{ host_info[inventory_hostname].VXLAN_IP }}/22" } + - { name: "br-vlan", bridge_ports: "{{ interface }}", ip: "{{ host_info[inventory_hostname].VLAN_IP }}/24" } + - { name: "br-storage", bridge_ports: "{{ interface }}.20", ip: "{{ host_info[inventory_hostname].STORAGE_IP }}/22" } + + - name: Add postup/postdown scripts on SUSE + copy: + src: "network-config-suse" + dest: "/etc/sysconfig/network/scripts/network-config-suse" + + - name: Configure routes on SUSE + template: + src: "{{ ansible_os_family | lower }}/suse.routes.j2" + dest: "/etc/sysconfig/network/ifroute-{{ item.name }}" + with_items: + - { name: "br-vlan", gateway: "192.168.122.1", route: "default" } + + - name: restart network service + shell: "/usr/sbin/wicked ifreload all" + when: ansible_os_family | lower == "suse" diff --git a/xci/playbooks/roles/configure-network/templates/suse/suse.interface.j2 b/xci/playbooks/roles/configure-network/templates/suse/suse.interface.j2 new file mode 100644 index 00000000..ffa418d4 --- /dev/null +++ b/xci/playbooks/roles/configure-network/templates/suse/suse.interface.j2 @@ -0,0 +1,17 @@ +STARTMODE='auto' +BOOTPROTO='static' +{% if item.vlan_id is defined %} +ETHERDEVICE={{ interface }} +VLAN_ID={{ item.vlan_id }} +{% endif %} +{% if item.bridge_ports is defined %} +BRIDGE='yes' +BRIDGE_FORWARDDELAY='0' +BRIDGE_STP=off +BRIDGE_PORTS={{ item.bridge_ports }} +{% endif %} +{% if item.ip is defined %} +IPADDR={{ item.ip }} +{% endif %} +PRE_UP_SCRIPT="compat:suse:network-config-suse" +POST_DOWN_SCRIPT="compat:suse:network-config-suse" diff --git a/xci/playbooks/roles/configure-network/templates/suse/suse.routes.j2 b/xci/playbooks/roles/configure-network/templates/suse/suse.routes.j2 new file mode 100644 index 00000000..7c868447 --- /dev/null +++ b/xci/playbooks/roles/configure-network/templates/suse/suse.routes.j2 @@ -0,0 +1 @@ +{{ item.route }} {{ item.gateway }} diff --git a/xci/playbooks/roles/configure-nfs/tasks/main.yml b/xci/playbooks/roles/configure-nfs/tasks/main.yml index 51a2d43a..25e81496 100644 --- a/xci/playbooks/roles/configure-nfs/tasks/main.yml +++ b/xci/playbooks/roles/configure-nfs/tasks/main.yml @@ -43,7 +43,13 @@ with_items: - "/images *(rw,sync,no_subtree_check,no_root_squash)" - "/volumes *(rw,sync,no_subtree_check,no_root_squash)" -- name: restart ubuntu xenial NFS service + +- name: Install the NFS server package + package: + name: "{{ nfs_server_package }}" + state: latest + +- name: restart NFS service service: name: "{{ nfs_server_service }}" state: restarted diff --git a/xci/playbooks/roles/configure-nfs/vars/debian.yml b/xci/playbooks/roles/configure-nfs/vars/debian.yml index 8d3c6561..cb3b2084 100644 --- a/xci/playbooks/roles/configure-nfs/vars/debian.yml +++ b/xci/playbooks/roles/configure-nfs/vars/debian.yml @@ -7,5 +7,5 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## - +nfs_server_package: "nfs-kernel-server" nfs_server_service: "nfs-kernel-server" diff --git a/xci/playbooks/roles/configure-nfs/vars/suse.yml b/xci/playbooks/roles/configure-nfs/vars/suse.yml new file mode 100644 index 00000000..01173d8a --- /dev/null +++ b/xci/playbooks/roles/configure-nfs/vars/suse.yml @@ -0,0 +1,11 @@ +--- +# 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 +############################################################################## +nfs_server_package: "nfs-kernel-server" +nfs_server_service: "nfs-server" diff --git a/xci/playbooks/roles/remove-folders/tasks/main.yml b/xci/playbooks/roles/remove-folders/tasks/main.yml index 425b8dbf..cb81dae9 100644 --- a/xci/playbooks/roles/remove-folders/tasks/main.yml +++ b/xci/playbooks/roles/remove-folders/tasks/main.yml @@ -17,5 +17,6 @@ - "{{ OPENSTACK_BIFROST_PATH }}" - "{{ OPENSTACK_OSA_PATH }}" - "{{ OPENSTACK_OSA_ETC_PATH }}" + - "{{ XCI_DEVEL_ROOT }}" - "{{ LOG_PATH }} " - "{{ OPNFV_SSH_HOST_KEYS_PATH }}" diff --git a/xci/playbooks/roles/synchronize-time/tasks/main.yml b/xci/playbooks/roles/synchronize-time/tasks/main.yml index 985c1515..cc73c447 100644 --- a/xci/playbooks/roles/synchronize-time/tasks/main.yml +++ b/xci/playbooks/roles/synchronize-time/tasks/main.yml @@ -7,16 +7,17 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -# TODO: this role needs to be adjusted for different distros -- block: - - name: restart chrony - service: - name: chrony - state: restarted - - name: synchronize time - shell: "chronyc -a 'burst 4/4' && chronyc -a makestep" - register: chrony_got_time - until: chrony_got_time.rc == 0 - retries: 5 - delay: 5 - when: ansible_distribution_release == "xenial" +- name: install chrony + package: + name: "chrony" + state: latest +- name: restart chrony + service: + name: chrony + state: restarted +- name: synchronize time + shell: "chronyc -a 'burst 4/4' && chronyc -a makestep" + register: chrony_got_time + until: chrony_got_time.rc == 0 + retries: 5 + delay: 5 diff --git a/xci/var/Suse.yml b/xci/var/Suse.yml index 9674ed2d..786a8751 100644 --- a/xci/var/Suse.yml +++ b/xci/var/Suse.yml @@ -7,5 +7,6 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -# this is placeholder and left blank intentionally to complete later on +# this is the interface the VM nodes are connected to libvirt network "default" +interface: "eth0" python_crypto_package_name: python-pycrypto diff --git a/xci/xci-deploy.sh b/xci/xci-deploy.sh index 5a01772f..19f2c18a 100755 --- a/xci/xci-deploy.sh +++ b/xci/xci-deploy.sh @@ -67,11 +67,35 @@ echo "-------------------------------------------------------------------------" #------------------------------------------------------------------------------- source file/install-ansible.sh -# There is no CentOS or openSUSE support at all -if [[ $OS_FAMILY != Debian ]]; then +# Make the VMs match the host. If we need to make this configurable +# then this logic has to be moved outside this file +case ${OS_FAMILY,,} in + # These should ideally match the CI jobs + debian) + export DIB_OS_RELEASE="${DIB_OS_RELEASE:-xenial}" + export DIB_OS_ELEMENT="${DIB_OS_ELEMENT:-ubuntu-minimal}" + export DIB_OS_PACKAGES="${DIB_OS_PACKAGES:-vlan,vim,less,bridge-utils,language-pack-en,iputils-ping,rsyslog,curl,iptables}" + export EXTRA_DIB_ELEMENTS="${EXTRA_DIB_ELEMENTS:-openssh-server}" + ;; + redhat) + export DIB_OS_RELEASE="${DIB_OS_RELEASE:-7}" + export DIB_OS_ELEMENT="${DIB_OS_ELEMENT:-centos-minimal}" + export DIB_OS_PACKAGES="${DIB_OS_PACKAGES:-vim,less,bridge-utils,iputils,rsyslog,curl,iptables}" + export EXTRA_DIB_ELEMENTS="${EXTRA_DIB_ELEMENTS:-openssh-server}" + ;; + suse) + export DIB_OS_RELEASE="${DIB_OS_RELEASE:-42.3}" + export DIB_OS_ELEMENT="${DIB_OS_ELEMENT:-opensuse-minimal}" + export DIB_OS_PACKAGES="${DIB_OS_PACKAGES:-vim,less,bridge-utils,iputils,rsyslog,curl,iptables}" + export EXTRA_DIB_ELEMENTS="${EXTRA_DIB_ELEMETS:-openssh-server}" + ;; +esac + +# There is no CentOS support at all +if [[ $OS_FAMILY == RedHat ]]; then echo "" - echo "Error: Sorry, only Ubuntu hosts are supported for now!" - echo "Error: CentOS7 and openSUSE Leap support is still work in progress." + echo "Error: Sorry, only Ubuntu and SUSE hosts are supported for now!" + echo "Error: CentOS 7 support is still work in progress." echo "" exit 1 fi @@ -91,7 +115,13 @@ fi echo "Info: Starting provisining VM nodes using openstack/bifrost" echo "-------------------------------------------------------------------------" cd $XCI_PATH/playbooks +# NOTE(hwoarang) we need newer ansible to work on the following playbook +sudo pip uninstall -y ansible || true +sudo -H pip uninstall -y ansible || true +sudo pip install ansible==${XCI_ANSIBLE_PIP_VERSION} ansible-playbook -i inventory provision-vm-nodes.yml +cd ${OPENSTACK_BIFROST_PATH} +bash ./scripts/bifrost-provision.sh echo "-----------------------------------------------------------------------" echo "Info: VM nodes are provisioned!" source $OPENSTACK_BIFROST_PATH/env-vars @@ -106,8 +136,11 @@ echo # - creates log directory # - copies flavor files such as playbook, inventory, and var file #------------------------------------------------------------------------------- + echo "Info: Configuring localhost for openstack-ansible" echo "-----------------------------------------------------------------------" +# NOTE(hwoarang) we need newer ansible to work on the OSA playbooks +sudo pip install --force-reinstall ansible==${XCI_ANSIBLE_PIP_VERSION} cd $XCI_PATH/playbooks ansible-playbook -i inventory configure-localhost.yml echo "-----------------------------------------------------------------------" |