From 7455eb762165d336e81ca901885dc9b45fa7cced Mon Sep 17 00:00:00 2001 From: Yujun Zhang Date: Wed, 19 Apr 2017 22:03:52 +0800 Subject: Create workspace by ansible playbook Change-Id: Ia79353e686240c5915e40b8202d3fdc289df2158 Signed-off-by: Yujun Zhang --- resources/roles/qtip-bootstrap/defaults/main.yml | 14 +++ .../roles/qtip-bootstrap/files/fixtures/case.json | 14 +++ .../roles/qtip-bootstrap/files/fixtures/pod.json | 6 ++ .../qtip-bootstrap/files/fixtures/project.json | 4 + .../roles/qtip-bootstrap/files/group_vars/all.yml | 13 +++ .../qtip-bootstrap/files/host_vars/localhost.yml | 16 +++ resources/roles/qtip-bootstrap/files/run.yml | 109 +++++++++++++++++++++ resources/roles/qtip-bootstrap/files/setup.yml | 64 ++++++++++++ resources/roles/qtip-bootstrap/tasks/main.yml | 25 +++++ .../roles/qtip-bootstrap/templates/ansible.cfg.j2 | 30 ++++++ resources/roles/qtip-bootstrap/templates/hosts.j2 | 3 + 11 files changed, 298 insertions(+) create mode 100644 resources/roles/qtip-bootstrap/defaults/main.yml create mode 100644 resources/roles/qtip-bootstrap/files/fixtures/case.json create mode 100644 resources/roles/qtip-bootstrap/files/fixtures/pod.json create mode 100644 resources/roles/qtip-bootstrap/files/fixtures/project.json create mode 100644 resources/roles/qtip-bootstrap/files/group_vars/all.yml create mode 100644 resources/roles/qtip-bootstrap/files/host_vars/localhost.yml create mode 100644 resources/roles/qtip-bootstrap/files/run.yml create mode 100644 resources/roles/qtip-bootstrap/files/setup.yml create mode 100644 resources/roles/qtip-bootstrap/tasks/main.yml create mode 100644 resources/roles/qtip-bootstrap/templates/ansible.cfg.j2 create mode 100644 resources/roles/qtip-bootstrap/templates/hosts.j2 (limited to 'resources/roles') diff --git a/resources/roles/qtip-bootstrap/defaults/main.yml b/resources/roles/qtip-bootstrap/defaults/main.yml new file mode 100644 index 00000000..10e464e4 --- /dev/null +++ b/resources/roles/qtip-bootstrap/defaults/main.yml @@ -0,0 +1,14 @@ +############################################################################## +# Copyright (c) 2017 ZTE Corporation 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 +############################################################################## + +installer: fuel +installer_master: fuel-master + +workspace: "./{{ installer }}-workspace" +qtip_package: ../.. diff --git a/resources/roles/qtip-bootstrap/files/fixtures/case.json b/resources/roles/qtip-bootstrap/files/fixtures/case.json new file mode 100644 index 00000000..22abc40f --- /dev/null +++ b/resources/roles/qtip-bootstrap/files/fixtures/case.json @@ -0,0 +1,14 @@ +{ + "run": "", + "name": "compute", + "ci_loop": "", + "tags": "", + "url": "", + "domains": "", + "dependencies": "", + "version": "", + "criteria": "", + "tier": "", + "blocking": "", + "description": "" +} \ No newline at end of file diff --git a/resources/roles/qtip-bootstrap/files/fixtures/pod.json b/resources/roles/qtip-bootstrap/files/fixtures/pod.json new file mode 100644 index 00000000..654b5828 --- /dev/null +++ b/resources/roles/qtip-bootstrap/files/fixtures/pod.json @@ -0,0 +1,6 @@ +{ + "details": "", + "role": "", + "name": "qtip-pod", + "mode": "" +} \ No newline at end of file diff --git a/resources/roles/qtip-bootstrap/files/fixtures/project.json b/resources/roles/qtip-bootstrap/files/fixtures/project.json new file mode 100644 index 00000000..ecd03e83 --- /dev/null +++ b/resources/roles/qtip-bootstrap/files/fixtures/project.json @@ -0,0 +1,4 @@ +{ + "name": "qtip", + "description": "Platform Performance Benchmarking" +} \ No newline at end of file diff --git a/resources/roles/qtip-bootstrap/files/group_vars/all.yml b/resources/roles/qtip-bootstrap/files/group_vars/all.yml new file mode 100644 index 00000000..933cffe5 --- /dev/null +++ b/resources/roles/qtip-bootstrap/files/group_vars/all.yml @@ -0,0 +1,13 @@ +############################################################################## +# Copyright (c) 2017 ZTE Corporation 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 +############################################################################## + +qtip_resources: ../../resources +qtip_reports: ./reports +qtip_fixtures: ./fixtures +qtip_dump: ./dump diff --git a/resources/roles/qtip-bootstrap/files/host_vars/localhost.yml b/resources/roles/qtip-bootstrap/files/host_vars/localhost.yml new file mode 100644 index 00000000..66aa5d0e --- /dev/null +++ b/resources/roles/qtip-bootstrap/files/host_vars/localhost.yml @@ -0,0 +1,16 @@ +############################################################################## +# Copyright (c) 2017 ZTE Corporation 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 +############################################################################## + +testapi_url: http://localhost:8000/api/v1 +project_name: qtip +case_name: compute +pod_name: qtip-pod +installer: fuel +version: master +scenario: demo diff --git a/resources/roles/qtip-bootstrap/files/run.yml b/resources/roles/qtip-bootstrap/files/run.yml new file mode 100644 index 00000000..696235c2 --- /dev/null +++ b/resources/roles/qtip-bootstrap/files/run.yml @@ -0,0 +1,109 @@ +############################################################################## +# Copyright (c) 2017 ZTE Corporation 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 +############################################################################## + +--- +# Execute compute benchmark plan and collect data +# - system information +# - test condition +# - performance metrics +- hosts: compute + tasks: + - name: check ssh connection + ping: + tags: [setup] + +- hosts: compute + roles: + - development-tools + tags: [setup] + +- hosts: compute + roles: + - unixbench + tags: [unixbench] + +- hosts: compute + tasks: + - name: collect system information + include: "{{ qtip_resources }}/metric/inxi.yaml" + - name: ssl metrics + include: "{{ qtip_resources }}/metric/openssl.yaml" + tags: [ssl] + - name: DPI metrics + include: "{{ qtip_resources }}/metric/nDPI.yaml" + vars: + nDPI_cwd: "{{ ansible_env.HOME }}/qtip/nDPI" + nDPI_file: "dpi.pcap" + tags: [dpi] + - name: memory metrics + include: "{{ qtip_resources }}/metric/ramspeed.yaml" + vars: + cwd: "{{ ansible_env.HOME }}/qtip/ramspeed" + tags: [mem] +- hosts: compute + tasks: + - name: calculate QPI of compute + calculate: + metrics: + ssl_rsa: "{{ openssl_rsa_metrics }}" + spec: "{{ qtip_resources }}/QPI/compute.yaml" + register: qpi_result + delegate_to: localhost + tags: [calculate] + +- hosts: localhost + tasks: + - name: aggregate QPI results from all tested nodes + aggregate: + group: compute + register: pod_result + +# Generate and publish report + +- hosts: localhost + tasks: + - name: create report folder + file: + path: "{{ qtip_reports }}" + state: directory + - name: create system information report + template: + src: "{{ qtip_resources }}/template/system-info.j2" + dest: "{{ qtip_reports }}/system-info" + - name: create qpi report + template: + src: "{{ qtip_resources }}/template/qpi-report.j2" + dest: "{{ qtip_reports }}/qpi-report" + tags: [report] + - name: create dpi metrics report + template: + src: "{{ qtip_resources }}/template/dpi-metrics.j2" + dest: "{{ qtip_reports }}/dpi-metrics" + tags: [report, dpi] + - name: push result to testapi + uri: + url: "{{ testapi_url }}/results" + body: "{{ item|to_json }}" + method: POST + body_format: json + status_code: 200 + with_items: + - + project_name: "{{ project_name }}" + case_name: "{{ case_name }}" + pod_name: "{{ pod_name }}" + installer: "{{ installer }}" + version: "{{ version }}" + scenario: "{{ scenario }}" + start_date: "{{ ansible_date_time.date }}" + stop_date: "{{ ansible_date_time.date }}" + criteria: "" + details: "{{ pod_result }}" + + tags: [testapi] diff --git a/resources/roles/qtip-bootstrap/files/setup.yml b/resources/roles/qtip-bootstrap/files/setup.yml new file mode 100644 index 00000000..fed5e9d9 --- /dev/null +++ b/resources/roles/qtip-bootstrap/files/setup.yml @@ -0,0 +1,64 @@ +############################################################################## +# Copyright (c) 2017 ZTE Corporation 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 +############################################################################## + +# Prepare connection to SUT (System Under Test) +- hosts: fuel-master + gather_facts: no + tasks: + - name: collect facts of fuel hosts + fuel: + - name: update inventory file + template: src={{ qtip_resources }}/template/hosts.j2 dest=./hosts + delegate_to: localhost + - name: update ssh.cfg file + template: src={{ qtip_resources }}/template/ssh.cfg.j2 dest=./ssh.cfg + delegate_to: localhost + +- hosts: apex-undercloud + gather_facts: no + + tasks: + - name: collect overcloud baremetal info + shell: . /root/stackrc && openstack baremetal list --fields instance_uuid properties provision_state --format json + register: baremetal_info + - name: collect overcloud server info + shell: . /root/stackrc && openstack server list --format json + register: server_info + - name: generate inventory + apex_generate_inventory: + baremetal_info: "{{ baremetal_info.stdout | from_json }}" + server_info: "{{ server_info.stdout | from_json }}" + - name: update inventory file + template: src={{ qtip_resources }}/template/hosts.j2 dest=./hosts + delegate_to: localhost + - name: update ssh.cfg file + template: src={{ qtip_resources }}/template/ssh.cfg.j2 dest=./ssh.cfg + delegate_to: localhost + +# Initialize testapi database +- hosts: localhost + tasks: + - name: create project and pod + uri: + url: "{{ testapi_url }}/{{item}}s" + method: POST + body: "{{ lookup('file', '{}/{}.json'.format(qtip_fixtures, item)) }}" + status_code: [200, 403] + body_format: json + with_items: + - project + - pod + - name: create cases + uri: + url: "{{ testapi_url }}/projects/qtip/cases" + method: POST + body: "{{ lookup('file', '{}/case.json'.format(qtip_fixtures)) }}" + status_code: [200, 403] + body_format: json + tags: [testapi] diff --git a/resources/roles/qtip-bootstrap/tasks/main.yml b/resources/roles/qtip-bootstrap/tasks/main.yml new file mode 100644 index 00000000..96d6c7d8 --- /dev/null +++ b/resources/roles/qtip-bootstrap/tasks/main.yml @@ -0,0 +1,25 @@ +############################################################################## +# Copyright (c) 2017 ZTE Corporation 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 +############################################################################## + +- name: copy initial files + synchronize: + src: "{{ item }}" + dest: "{{ workspace }}" + with_items: + - group_vars + - host_vars + - fixtures + +- name: generate default configuration + template: + src: "{{ item }}.j2" + dest: "{{ workspace }}/{{ item }}" + with_items: + - ansible.cfg + - hosts diff --git a/resources/roles/qtip-bootstrap/templates/ansible.cfg.j2 b/resources/roles/qtip-bootstrap/templates/ansible.cfg.j2 new file mode 100644 index 00000000..e7d76dd0 --- /dev/null +++ b/resources/roles/qtip-bootstrap/templates/ansible.cfg.j2 @@ -0,0 +1,30 @@ +# config file for ansible -- https://ansible.com/ +# =============================================== + +# nearly all parameters can be overridden in ansible-playbook +# or with command line flags. ansible will read ANSIBLE_CONFIG, +# ansible.cfg in the current working directory, .ansible.cfg in +# the home directory or /etc/ansible/ansible.cfg, whichever it +# finds first + +[defaults] + +# some basic default values... + +inventory = ./hosts +library = {{ qtip_package }}/qtip/ansible_library/ + +# set plugin path directories here, separate with colons +action_plugins = {{ qtip_package }}/qtip/ansible_library/plugins/action +#cache_plugins = /usr/share/ansible/plugins/cache +#callback_plugins = /usr/share/ansible/plugins/callback +#connection_plugins = /usr/share/ansible/plugins/connection +#lookup_plugins = /usr/share/ansible/plugins/lookup +#inventory_plugins = /usr/share/ansible/plugins/inventory +#vars_plugins = /usr/share/ansible/plugins/vars +filter_plugins = {{ qtip_package }}/qtip/ansible_library/plugins/filter +#test_plugins = /usr/share/ansible/plugins/test +#terminal_plugins = /usr/share/ansible/plugins/terminal +#strategy_plugins = /usr/share/ansible/plugins/strategy + +callback_whitelist = profile_tasks diff --git a/resources/roles/qtip-bootstrap/templates/hosts.j2 b/resources/roles/qtip-bootstrap/templates/hosts.j2 new file mode 100644 index 00000000..c4b985b3 --- /dev/null +++ b/resources/roles/qtip-bootstrap/templates/hosts.j2 @@ -0,0 +1,3 @@ +localhost ansible_connection=local + +{{ installer_master }} -- cgit 1.2.3-korg