# Copyright (c) 2018-2019 Intel Corporation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. --- - hosts: jumphost become: yes vars: virtual_environment: "{{ VIRTUAL_ENVIRONMENT | default(False) }}" nsb_dir: "{{ NSB_DIR | default('/opt/nsb_bin/') }}" pre_tasks: - name: Create NSB binaries directory, accessible to any user file: path: "{{ nsb_dir }}" state: directory owner: root mode: 0777 when: - installation_mode != inst_mode_container_pull roles: - add_repos_jumphost - install_dependencies_jumphost - { role: install_yardstick, when: installation_mode != inst_mode_container_pull } - { role: configure_uwsgi, when: installation_mode != inst_mode_container_pull } - { role: configure_nginx, when: installation_mode != inst_mode_container_pull } - { role: configure_gui, when: installation_mode != inst_mode_container_pull } - { role: download_trex, when: installation_mode != inst_mode_container_pull } - { role: install_trex, when: installation_mode != inst_mode_container_pull } - role: configure_rabbitmq install_mode: "{{ installation_mode }}" post_tasks: - service: name: nginx state: restarted when: installation_mode == inst_mode_baremetal - shell: uwsgi -i /etc/yardstick/yardstick.ini when: installation_mode == inst_mode_baremetal - name: Prepare baremetal and standalone servers hosts: yardstick-baremetal,yardstick-standalone become: yes vars_files: - roles/download_dpdk/defaults/main.yml environment: "{{ proxy_env }}" roles: - add_custom_repos - role: set_package_installer_proxy when: proxy_env is defined and proxy_env # can't update grub in chroot/docker - enable_hugepages_on_boot - enable_iommu_on_boot - enable_cpu_isolation_on_boot # needed for collectd plugins - increase_open_file_limits - install_image_dependencies - role: download_dpdk dpdk_version: "{{ dpdk_version_for_PROX }}" - role: install_dpdk dpdk_version: "{{ dpdk_version_for_PROX }}" - download_samplevnfs - role: install_samplevnf vnf_name: PROX - download_dpdk - install_dpdk - download_trex - install_trex - download_civetweb - install_civetweb - role: install_samplevnf vnf_name: UDP_Replay - role: install_samplevnf vnf_name: ACL - role: install_samplevnf vnf_name: FW - role: install_samplevnf vnf_name: CGNAPT # build shared DPDK for collectd only, required DPDK downloaded already - install_dpdk_shared - install_rabbitmq - download_intel_cmt_cat - install_intel_cmt_cat - download_pmu_tools - install_pmu_tools - download_collectd - install_collectd - docker - barometer_collectd - name: Prepare to build VM hosts: yardstick-standalone become: yes vars: img_prop_item: "{{ IMG_PROPERTY }}" img_arch: "{{ YARD_IMG_ARCH }}" environment: "{{ proxy_env }}" tasks: - file: dest: /tmp/ansible state: directory mode: 0755 - name: Copy ansible folder to remote DUT copy: src: "." dest: /tmp/ansible - name: Install DUT related packages apt: name: "{{ packages }}" vars: packages: - qemu-kvm - libvirt-bin - bridge-utils - fping - genisoimage # There is a bug with the easy install ansible module in Ubuntu 16.04 linux. # Refer https://github.com/ansible/ansible/issues/23534 - name: Install pip shell: easy_install -U pip when: - ansible_distribution == 'Ubuntu' - ansible_distribution_major_version|int <= 16 - name: Install python-pip action: "{{ ansible_pkg_mgr }} name=python-pip state=present" when: - ansible_distribution == 'Ubuntu' - ansible_distribution_major_version|int >= 17 - name: Update pip ansible docker pip: name: "ansible==2.5.5" # This is used as workaround as ansible doesn't support chroot on remote server - name: Run ansible on remote shell: "ansible-playbook -e OS_RELEASE={{ OS_RELEASE }} -e IMAGE_PROPERTY={{ IMAGE_PROPERTY }} -e YARD_IMAGE_ARCH={{ YARD_IMAGE_ARCH }} -i install-inventory.ini build_vm.yml -vv" args: chdir: "/tmp/ansible" - name: Add OpenStack variables, image hosts: jumphost vars: openrc_flag: false vars_files: - yardstick_config.yml pre_tasks: - name: Get information about external VM image stat: path: "{{ path_to_img }}" register: image_file_stat when: - path_to_img is defined - imgfile is not defined - set_fact: imgfile: "{{ path_to_img }}" when: - path_to_img is defined - imgfile is not defined - image_file_stat.stat.islnk is defined - not image_file_stat.stat.islnk - set_fact: openrc_flag: true when: - openrc_file is defined - imgfile is defined roles: - { role: convert_openrc, when: openrc_file is defined } - { role: clean_images, when: openrc_flag } - { role: clean_flavors, when: openrc_flag } - { role: create_samplevnfs_image, when: openrc_flag } environment: "{{ openrc | default({}) }}" - name: Start yardstick container on jumphost hosts: jumphost tasks: - name: Install docker needed to pull Yardstick container include_role: name: docker when: installation_mode == inst_mode_container_pull - name: Start yardstick container docker_container: name: yardstick pull: yes recreate: yes image: "{{ yardstick_docker_image|default('opnfv/yardstick:latest') }}" state: started restart_policy: always privileged: yes interactive: yes volumes: - "{{ openrc_file|default('/dev/null') }}:/etc/yardstick/openstack.creds:ro" - /var/run/docker.sock:/var/run/docker.sock - /etc/localtime:/etc/localtime:ro when: installation_mode == inst_mode_container_pull