# Copyright (c) 2018 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: yardstick_dir: "{{ YARDSTICK_DIR | default('/home/opnfv/repos/yardstick') }}" 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 # 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: jumphost become: yes vars: img_prop_item: "{{ IMG_PROPERTY }}" img_arch: "{{ YARD_IMG_ARCH }}" tasks: - name: Include pre-build include_role: name: build_yardstick_image tasks_from: pre_build.yml when: - installation_mode != inst_mode_container - IMG_PROPERTY == 'nsb' or IMG_PROPERTY == 'normal' - name: Build VM in chroot hosts: chroot_image connection: chroot become: yes vars: img_property: "{{ IMG_PROPERTY }}" environment: "{{ proxy_env }}" tasks: - name: Include image build include_role: name: build_yardstick_image tasks_from: "cloudimg_modify_{{ img_property }}.yml" when: - installation_mode != inst_mode_container - IMG_PROPERTY == 'nsb' or IMG_PROPERTY == 'normal' - name: Clear up after VM is built hosts: jumphost become: yes tasks: - name: Include post-build include_role: name: build_yardstick_image tasks_from: post_build.yml when: - installation_mode != inst_mode_container - IMG_PROPERTY == 'nsb' or IMG_PROPERTY == 'normal' - 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 - /opt:/opt - /etc/localtime:/etc/localtime:ro when: installation_mode == inst_mode_container_pull