aboutsummaryrefslogtreecommitdiffstats
path: root/ansible/install.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'ansible/install.yaml')
-rw-r--r--ansible/install.yaml224
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