diff options
Diffstat (limited to 'resources/ansible_roles')
20 files changed, 291 insertions, 93 deletions
diff --git a/resources/ansible_roles/ceph-info/tasks/main.yml b/resources/ansible_roles/ceph-info/tasks/main.yml index 04cc859c..cb10b4c1 100644 --- a/resources/ansible_roles/ceph-info/tasks/main.yml +++ b/resources/ansible_roles/ceph-info/tasks/main.yml @@ -9,6 +9,6 @@ --- -- include: cache.yml -- include: disk.yml -- include: network.yml +- import_tasks: cache.yml +- import_tasks: disk.yml +- import_tasks: network.yml diff --git a/resources/ansible_roles/openstack/defaults/main.yml b/resources/ansible_roles/openstack/defaults/main.yml index 3b83d6c0..261504ea 100644 --- a/resources/ansible_roles/openstack/defaults/main.yml +++ b/resources/ansible_roles/openstack/defaults/main.yml @@ -9,9 +9,11 @@ --- +image_url: https://cloud-images.ubuntu.com/releases/16.04/release-20180222/ubuntu-16.04-server-cloudimg-amd64-disk1.img +checksum: 027b3e9d219f0f6c17b5448ed67dc41e +temp_dir: /tmp/qtip + +flavor_name: qtip_flavor stack_name: qtip_stack image_name: qtip_image -flavor_name: m1.large -net_name: qtip_net -subnet_name: qtip_subnet -instance_name: qtip_vm
\ No newline at end of file +ansible_user: ubuntu diff --git a/resources/ansible_roles/openstack/tasks/main.yml b/resources/ansible_roles/openstack/tasks/main.yml index f4d3d18c..57942260 100644 --- a/resources/ansible_roles/openstack/tasks/main.yml +++ b/resources/ansible_roles/openstack/tasks/main.yml @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2017 ZTE Corporation and others. -# taseer94@gmail.com +# Copyright (c) 2018 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 @@ -9,14 +9,97 @@ --- +- name: Delete QTIP stack + os_stack: + name: "{{ stack_name }}" + state: absent + +- name: Delete QTIP keypair + os_keypair: + name: QtipKey + state: absent + +- name: Delete QTIP flavor + os_nova_flavor: + name: "{{ flavor_name }}" + state: absent + +- name: Delete qtip image + os_image: + name: "{{ image_name }}" + state: absent + +- name: Create temp directory for QTIP + file: + path: "{{ temp_dir }}" + state: directory + +- name: Clean the existing SSH keypair + file: + state: absent + path: "{{ temp_dir }}/{{ item }}" + with_items: + - QtipKey.pub + - QtipKey + +- name: Generate a SSH key for QTIP VM + shell: ssh-keygen -t rsa -N "" -f "{{ temp_dir }}/QtipKey" -q + +- name: Create QTIP keypair + os_keypair: + name: QtipKey + public_key_file: "{{ temp_dir }}/QtipKey.pub" + state: present + +- name: Create QTIP flavor + os_nova_flavor: + name: "{{ flavor_name }}" + ram: 2048 + vcpus: 3 + disk: 4 + state: present + +- name: Download image as qtip image + get_url: + url: "{{ image_url }}" + dest: "{{ temp_dir }}/{{ image_name }}.img" + checksum: "md5:{{ checksum }}" + when: image_url | search("https://") + +- name: Upload qtip image + os_image: + name: "{{ image_name }}" + container_format: bare + disk_format: qcow2 + state: present + filename: "{{ temp_dir }}/{{ image_name }}.img" + - name: create qtip stack os_stack: name: "{{ stack_name }}" state: present - template: heat_template.yml + template: "{{ heat_template }}" parameters: - image_name: "{{ image_name }}" - flavor_name: "{{ flavor_name }}" - net_name: "{{ net_name }}" - subnet_name: "{{ subnet_name }}" - instance_name: "{{ inst_name }}" + image: "{{ image_name }}" + flavor: "{{ flavor_name }}" + keypair: QtipKey + external_network: "{{ external_network }}" + register: stack + +- name: Wait 600s for vm connection to become reachable/usable + wait_for: + host: "{{ item.output_value }}" + port: 22 + timeout: 600 + search_regex: OpenSSH + with_items: "{{ stack.stack.outputs }}" + +- name: generating inventory file + template: + src: hosts.j2 + dest: ./hosts + +- name: generating ssh.cfg + template: + src: ssh.cfg.j2 + dest: ./ssh.cfg diff --git a/resources/ansible_roles/openstack/templates/heat_template.yml b/resources/ansible_roles/openstack/templates/heat_template.yml deleted file mode 100644 index ed5a3ab7..00000000 --- a/resources/ansible_roles/openstack/templates/heat_template.yml +++ /dev/null @@ -1,70 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation and others. -# taseer94@gmail.com -# 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 -############################################################################## - ---- - -heat_template_version: 2015-04-30 - -description: Simple template to deploy a single compute instance - -parameters: - image_name: - type: string - label: Image ID - description: Image to be used for compute instance - default: Ubuntu 16.04 x86_64 - flavor_name: - type: string - label: Instance Type - description: Type of instance (flavor) to be used - default: m1.large - net_name: - type: string - label: Test network name - description: The name of the stack's network - default: qtip_net - subnet_name: - type: string - label: Test subnet name - description: The name of the stack's subnet - default: qtip_subnet - instance_name: - type: string - label: Test VM name - description: The name of the spawned vm - default: qtip_vm - -resources: - private_net: - type: OS::Neutron::Net - properties: - name: { get_param: net_name } - - private_subnet: - type: OS::Neutron::Subnet - properties: - name: { get_param: subnet_name } - network_id: { get_resource: private_net } - cidr: 10.0.0.0/24 - - server1_port: - type: OS::Neutron::Port - properties: - network_id: { get_resource: private_net } - fixed_ips: - - subnet_id: { get_resource: private_subnet } - - my_instance: - type: OS::Nova::Server - properties: - name: { get_param: inst_name } - image: { get_param: image_name } - flavor: { get_param: flavor_name } - networks: - - port: { get_resource: server1_port } diff --git a/resources/ansible_roles/openstack/templates/hosts.j2 b/resources/ansible_roles/openstack/templates/hosts.j2 new file mode 100644 index 00000000..6756d2a2 --- /dev/null +++ b/resources/ansible_roles/openstack/templates/hosts.j2 @@ -0,0 +1,17 @@ +localhost ansible_connection=local + +[SUT:children] +compute + +[node-groups:children] +compute + +[node-groups:vars] +ansible_ssh_common_args=-F ./ssh.cfg + +[compute] +{% for item in stack.stack.outputs %} +{% if item.output_key == 'instance_ip' %} +{{item.output_value}} +{% endif %} +{% endfor %} diff --git a/resources/ansible_roles/openstack/templates/ssh.cfg.j2 b/resources/ansible_roles/openstack/templates/ssh.cfg.j2 new file mode 100644 index 00000000..c0a1f94e --- /dev/null +++ b/resources/ansible_roles/openstack/templates/ssh.cfg.j2 @@ -0,0 +1,11 @@ +# Connect to target node + +{% for item in stack.stack.outputs %} +{% if item.output_key == 'instance_ip' %} +Host {{ item.output_value }} + HostName {{ item.output_value }} + User {{ ansible_user }} + IdentityFile {{ temp_dir }}/QtipKey +{% endif %} + +{% endfor %} diff --git a/resources/ansible_roles/opnfv-testapi/tasks/main.yml b/resources/ansible_roles/opnfv-testapi/tasks/main.yml index 270ffb59..334e06f4 100644 --- a/resources/ansible_roles/opnfv-testapi/tasks/main.yml +++ b/resources/ansible_roles/opnfv-testapi/tasks/main.yml @@ -9,4 +9,4 @@ --- -- include: "{{ tasks }}.yml" +- include_tasks: "{{ tasks }}.yml" diff --git a/resources/ansible_roles/opnfv-testapi/tasks/report.yml b/resources/ansible_roles/opnfv-testapi/tasks/report.yml index 0633eafb..6db3a785 100644 --- a/resources/ansible_roles/opnfv-testapi/tasks/report.yml +++ b/resources/ansible_roles/opnfv-testapi/tasks/report.yml @@ -21,7 +21,7 @@ project_name: "{{ project_name }}" case_name: "{{ case_name }}" pod_name: "{{ pod_name }}" - installer: "{{ installer_type }}" + installer: "{{ installer_type_adapter[installer_type] }}" version: "{{ version }}" scenario: "{{ scenario }}" start_date: "{{ ansible_date_time.date }}" diff --git a/resources/ansible_roles/qtip-generator/defaults/main.yml b/resources/ansible_roles/qtip-generator/defaults/main.yml index 344feb54..6665d11f 100644 --- a/resources/ansible_roles/qtip-generator/defaults/main.yml +++ b/resources/ansible_roles/qtip-generator/defaults/main.yml @@ -16,6 +16,10 @@ installer_group: apex: apex-underclouds mcp: salt-master +network_group: + mcp: floating_net + apex: external + project_name: 'qtip-project' project_template: 'compute' diff --git a/resources/ansible_roles/qtip-generator/files/compute/group_vars/all.yml b/resources/ansible_roles/qtip-generator/files/compute/group_vars/all.yml index efb2bdb7..1b34fd69 100644 --- a/resources/ansible_roles/qtip-generator/files/compute/group_vars/all.yml +++ b/resources/ansible_roles/qtip-generator/files/compute/group_vars/all.yml @@ -21,3 +21,7 @@ installer_group: fuel: fuel-masters apex: apex-underclouds mcp: salt-master + +network_group: + mcp: floating_net + apex: external diff --git a/resources/ansible_roles/qtip-generator/files/compute/heat_template.yml b/resources/ansible_roles/qtip-generator/files/compute/heat_template.yml new file mode 100644 index 00000000..cb67e624 --- /dev/null +++ b/resources/ansible_roles/qtip-generator/files/compute/heat_template.yml @@ -0,0 +1,101 @@ +############################################################################## +# Copyright (c) 2018 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 +############################################################################## +heat_template_version: 2015-04-30 + +description: > + Used to run VMs for QTIP + +parameters: + image: + type: string + description: Name of the image + default: qtip_image + + flavor: + type: string + description: Name of flavor + default: qtip_flavor + + keypair: + type: string + description: Name of keypair + default: QtipKey + + external_network: + type: string + description: Name of the external network + +resources: + + network: + type: OS::Neutron::Net + properties: + name: qtip_net + + subnet: + type: OS::Neutron::Subnet + properties: + name: qtip_subnet + ip_version: 4 + cidr: 192.168.0.0/24 + network: { get_resource: network } + dns_nameservers: [8.8.8.8] + + management_router: + type: OS::Neutron::Router + properties: + name: qtip_router + external_gateway_info: + network: { get_param: external_network } + + management_router_interface: + type: OS::Neutron::RouterInterface + properties: + router: { get_resource: management_router } + subnet: { get_resource: subnet } + + floating_ip: + type: OS::Neutron::FloatingIP + properties: + floating_network: { get_param: external_network } + + floating_ip_association: + type: OS::Nova::FloatingIPAssociation + properties: + floating_ip: { get_resource: floating_ip } + server_id: { get_resource: qtip_instance } + + security_group: + type: OS::Neutron::SecurityGroup + properties: + name: qtip_security_group + rules: + - port_range_min: 22 + port_range_max: 5201 + protocol: tcp + - port_range_min: 22 + port_range_max: 5201 + protocol: udp + - protocol: icmp + + qtip_instance: + type: OS::Nova::Server + depends_on: [subnet] + properties: + name: { get_param: "OS::stack_name" } + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: keypair } + security_groups: [{ get_resource: security_group }] + networks: + - network: { get_resource: network } +outputs: + instance_ip: + description: The IP address of the instance + value: { get_attr: [floating_ip, floating_ip_address] } diff --git a/resources/ansible_roles/qtip-generator/files/compute/host_vars/localhost.yml b/resources/ansible_roles/qtip-generator/files/compute/host_vars/localhost.yml index cc587c69..7f339045 100644 --- a/resources/ansible_roles/qtip-generator/files/compute/host_vars/localhost.yml +++ b/resources/ansible_roles/qtip-generator/files/compute/host_vars/localhost.yml @@ -14,3 +14,9 @@ case_name: "{{ case_name|default('compute') }}" pod_name: "{{ pod_name|default('qtip-pod') }}" scenario: "{{ scenario|default('generic') }}" version: "{{ lookup('env','OPNFV_RELEASE')|default('master') }}" + +installer_type_adapter: + fuel: fuel + mcp: fuel + apex: apex + manual: manual
\ No newline at end of file diff --git a/resources/ansible_roles/qtip-generator/files/compute/run.yml b/resources/ansible_roles/qtip-generator/files/compute/run.yml index f8e71f0c..c166e488 100644 --- a/resources/ansible_roles/qtip-generator/files/compute/run.yml +++ b/resources/ansible_roles/qtip-generator/files/compute/run.yml @@ -18,6 +18,22 @@ - hosts: SUT +{% if sut == 'vnf' %} + gather_facts: no + pre_tasks: + + - name: check whether install python 2.x in remote target + become: yes + raw: test -e /usr/bin/python || (apt-get -y update && apt-get install -y python-minimal) + register: rs + # Sometimes vm's network is not ready, have to give some attempts to install packages + until: rs.stdout.find("Setting up python-minimal") != -1 + retries: 10 + delay: 10 + - name: gather facts + setup: +{% endif %} + roles: # prepare environment - { role: qtip, tasks: setup-node, tags: [setup] } diff --git a/resources/ansible_roles/qtip-generator/files/compute/setup.yml b/resources/ansible_roles/qtip-generator/files/compute/setup.yml index f5920c1f..c3e8f58e 100644 --- a/resources/ansible_roles/qtip-generator/files/compute/setup.yml +++ b/resources/ansible_roles/qtip-generator/files/compute/setup.yml @@ -10,13 +10,24 @@ # Prepare connection to SUT (System Under Test) --- + +{% if sut == 'vnf' %} +- hosts: localhost + gather_facts: no + roles: + - { role: openstack, external_network: {{ network_group[installer_type] }}, heat_template: heat_template.yml } + +{% elif sut == 'node' %} + {% if installer_type == 'manual' %} - hosts: localhost gather_facts: no tasks: - - debug: "msg='please add hosts to SUT group in `hosts` file manually.'" + - debug: "msg='please add hosts to SUT group in `hosts` file manually.'" + {% else %} - hosts: [{{ installer_group[installer_type] }}] roles: - - { role: qtip, tasks: generate-inventory } + - { role: qtip, tasks: generate-inventory } +{% endif %} {% endif %} diff --git a/resources/ansible_roles/qtip-generator/files/compute/teardown.yml b/resources/ansible_roles/qtip-generator/files/compute/teardown.yml index dc659930..e483d7f6 100644 --- a/resources/ansible_roles/qtip-generator/files/compute/teardown.yml +++ b/resources/ansible_roles/qtip-generator/files/compute/teardown.yml @@ -7,8 +7,12 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## + - hosts: SUT roles: # teardown environment - { role: qtip, tasks: teardown } + + + diff --git a/resources/ansible_roles/qtip-generator/files/doctor/group_vars/all.yml b/resources/ansible_roles/qtip-generator/files/doctor/group_vars/all.yml index 55d5b250..766520b9 100644 --- a/resources/ansible_roles/qtip-generator/files/doctor/group_vars/all.yml +++ b/resources/ansible_roles/qtip-generator/files/doctor/group_vars/all.yml @@ -1,3 +1,12 @@ +############################################################################## +# 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 +############################################################################## + {% raw %} doctor_project: doctor doctor_user: doctor diff --git a/resources/ansible_roles/qtip/tasks/generate-inventory.yml b/resources/ansible_roles/qtip/tasks/generate-inventory.yml index aee25260..8aa36294 100644 --- a/resources/ansible_roles/qtip/tasks/generate-inventory.yml +++ b/resources/ansible_roles/qtip/tasks/generate-inventory.yml @@ -11,7 +11,7 @@ --- -- include: "gather-facts-{{ installer_type }}.yml" +- include_tasks: "gather-facts-{{ installer_type }}.yml" - name: generating inventory file template: src=templates/hosts dest=./hosts diff --git a/resources/ansible_roles/qtip/tasks/install-deps.yml b/resources/ansible_roles/qtip/tasks/install-deps.yml index e9590f4b..81d054f6 100644 --- a/resources/ansible_roles/qtip/tasks/install-deps.yml +++ b/resources/ansible_roles/qtip/tasks/install-deps.yml @@ -8,4 +8,4 @@ ############################################################################## --- -- include: "install-deps-{{ ansible_os_family|lower }}.yml" +- include_tasks: "install-deps-{{ ansible_os_family|lower }}.yml" diff --git a/resources/ansible_roles/qtip/tasks/main.yml b/resources/ansible_roles/qtip/tasks/main.yml index 270ffb59..334e06f4 100644 --- a/resources/ansible_roles/qtip/tasks/main.yml +++ b/resources/ansible_roles/qtip/tasks/main.yml @@ -9,4 +9,4 @@ --- -- include: "{{ tasks }}.yml" +- include_tasks: "{{ tasks }}.yml" diff --git a/resources/ansible_roles/qtip/tasks/setup-node.yml b/resources/ansible_roles/qtip/tasks/setup-node.yml index af848f70..1fa7f9c4 100644 --- a/resources/ansible_roles/qtip/tasks/setup-node.yml +++ b/resources/ansible_roles/qtip/tasks/setup-node.yml @@ -26,4 +26,4 @@ path: "{{ qtip_workdir }}" state: directory -- include: install-deps.yml +- import_tasks: install-deps.yml |