diff options
Diffstat (limited to 'ansible/install.yaml')
-rw-r--r-- | ansible/install.yaml | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/ansible/install.yaml b/ansible/install.yaml new file mode 100644 index 000000000..a78a11f68 --- /dev/null +++ b/ansible/install.yaml @@ -0,0 +1,224 @@ +# 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 |