From 5371004738b1430e56a3e7679284a5e822255d2e Mon Sep 17 00:00:00 2001 From: wutianwei Date: Tue, 27 Jun 2017 19:49:07 +0800 Subject: setup ovs create network flavor 1. replace the linuxbridge with openvswitch 2. create the network and flavors 3. fix the haproxy when public endpoint using http Change-Id: I6fe93d0c4d5305e5dcab8d2e6c628eb5fa23ab56 Signed-off-by: wutianwei --- .../ansible/openstack/HA-ansible-multinodes.yml | 12 +++-- .../ansible/roles/config-deployment/files/http.yml | 17 +++++++ .../files/os-flavor/tasks/main.yml | 17 +++++++ .../files/os-flavor/vars/main.yml | 45 ++++++++++++++++++ .../roles/config-deployment/files/setup-ovs.yml | 55 ++++++++++++++++++++++ .../ansible/roles/config-deployment/tasks/main.yml | 25 ++++++++++ .../templates/create-flavor.yml.j2 | 15 ++++++ .../templates/create-network.yml.j2 | 41 ++++++++++++++++ .../templates/openstack_user_config.yml.j2 | 14 +++++- .../config-deployment/templates/user_variables.yml | 20 ++++++++ .../ansible/roles/openstack-post/tasks/main.yml | 25 +++++----- .../ansible/roles/setup-openvswitch/tasks/main.yml | 14 ++++++ 12 files changed, 284 insertions(+), 16 deletions(-) create mode 100644 deploy/adapters/ansible/roles/config-deployment/files/http.yml create mode 100644 deploy/adapters/ansible/roles/config-deployment/files/os-flavor/tasks/main.yml create mode 100644 deploy/adapters/ansible/roles/config-deployment/files/os-flavor/vars/main.yml create mode 100644 deploy/adapters/ansible/roles/config-deployment/files/setup-ovs.yml create mode 100644 deploy/adapters/ansible/roles/config-deployment/templates/create-flavor.yml.j2 create mode 100644 deploy/adapters/ansible/roles/config-deployment/templates/create-network.yml.j2 create mode 100644 deploy/adapters/ansible/roles/setup-openvswitch/tasks/main.yml (limited to 'deploy/adapters') diff --git a/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml b/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml index 2a3e649a..29796323 100644 --- a/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml +++ b/deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml @@ -26,7 +26,11 @@ - hosts: localhost remote_user: root roles: - - config-deployment - - setup-host - - setup-infrastructure - - setup-openstack + - role: config-deployment + - role: setup-host + - role: setup-infrastructure + - role: setup-openstack + - role: setup-openvswitch + when: NEUTRON_MECHANISM_DRIVERS[0] == "openvswitch" or + NEUTRON_MECHANISM_DRIVERS[0] == "opendaylight" + - role: openstack-post diff --git a/deploy/adapters/ansible/roles/config-deployment/files/http.yml b/deploy/adapters/ansible/roles/config-deployment/files/http.yml new file mode 100644 index 00000000..248fc06d --- /dev/null +++ b/deploy/adapters/ansible/roles/config-deployment/files/http.yml @@ -0,0 +1,17 @@ +--- +- name: change https to http in haproxy configuratio + hosts: network_hosts + gather_facts: "{{ gather_facts | default(True) }}" + max_fail_percentage: 20 + user: root + tasks: + - name: change the haproxy configuration + shell: "sed -i 's/ssl crt.*//g' /etc/haproxy/haproxy.cfg; + sed -i 's/https$/http/g' /etc/haproxy/haproxy.cfg" + when: openstack_service_publicuri_proto == "http" + + - name: restart haproxy service + service: + name: haproxy + state: restarted + when: openstack_service_publicuri_proto == "http" diff --git a/deploy/adapters/ansible/roles/config-deployment/files/os-flavor/tasks/main.yml b/deploy/adapters/ansible/roles/config-deployment/files/os-flavor/tasks/main.yml new file mode 100644 index 00000000..03b57120 --- /dev/null +++ b/deploy/adapters/ansible/roles/config-deployment/files/os-flavor/tasks/main.yml @@ -0,0 +1,17 @@ +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD 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: create openstack flavors + shell: | + . /root/openrc; + openstack flavor create {{ item.name }} \ + --id {{ item.id }} --ram {{ item.ram }} \ + --disk {{ item.disk }} --vcpus {{ item.vcpus }} || true + with_items: "{{ flavors }}" diff --git a/deploy/adapters/ansible/roles/config-deployment/files/os-flavor/vars/main.yml b/deploy/adapters/ansible/roles/config-deployment/files/os-flavor/vars/main.yml new file mode 100644 index 00000000..d9c36d42 --- /dev/null +++ b/deploy/adapters/ansible/roles/config-deployment/files/os-flavor/vars/main.yml @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD 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 +############################################################################## +--- +flavors: + - id: 0 + name: m1.nano + vcpus: 1 + ram: 64 + disk: 1 + + - id: 1 + name: m1.tiny + vcpus: 1 + ram: 512 + disk: 1 + + - id: 2 + name: m1.small + vcpus: 1 + ram: 2048 + disk: 20 + + - id: 3 + name: m1.medium + vcpus: 2 + ram: 4096 + disk: 40 + + - id: 4 + name: m1.large + vcpus: 4 + ram: 8192 + disk: 80 + + - id: 5 + name: m1.xlarge + vcpus: 8 + ram: 16384 + disk: 160 diff --git a/deploy/adapters/ansible/roles/config-deployment/files/setup-ovs.yml b/deploy/adapters/ansible/roles/config-deployment/files/setup-ovs.yml new file mode 100644 index 00000000..10972401 --- /dev/null +++ b/deploy/adapters/ansible/roles/config-deployment/files/setup-ovs.yml @@ -0,0 +1,55 @@ +--- +- name: Installation and setup of Neutron + hosts: neutron_openvswitch_agent + gather_facts: "{{ gather_facts | default(True) }}" + max_fail_percentage: 20 + user: root + tasks: + - name: stop neutron-openvswitch-agent + service: + name: neutron-openvswitch-agent + state: stopped + + - name: change the openvswitch_agent.ini + lineinfile: + dest: /etc/neutron/plugins/ml2/openvswitch_agent.ini + insertafter: '^bridge_mappings' + line: "local_ip = {{ hostvars[inventory_hostname]['container_networks']['tunnel_address']['address'] }}" + when: + - inventory_hostname not in groups['nova_compute'] + + - name: change the openvswitch_agent.ini + lineinfile: + dest: /etc/neutron/plugins/ml2/openvswitch_agent.ini + regexp: '^bridge_mappings' + insertafter: '^bridge_mappings' + line: "local_ip = {{hostvars[inventory_hostname]['ansible_br_vxlan']['ipv4']['address']}}" + notify: + - Restart neutron-openvswitch-agent + when: + - inventory_hostname in groups['nova_compute'] + + - name: Setup br-provider + openvswitch_bridge: + bridge: br-provider + state: present + notify: + - Restart neutron-openvswitch-agent + when: + - inventory_hostname not in groups['nova_compute'] + + - name: Add port to br-provider + openvswitch_port: + bridge: br-provider + port: "eth12" + state: present + notify: + - Restart neutron-openvswitch-agent + when: + - inventory_hostname not in groups['nova_compute'] + + handlers: + - name: Restart neutron-openvswitch-agent + service: + name: neutron-openvswitch-agent + state: restarted diff --git a/deploy/adapters/ansible/roles/config-deployment/tasks/main.yml b/deploy/adapters/ansible/roles/config-deployment/tasks/main.yml index b0696010..1269cd3f 100644 --- a/deploy/adapters/ansible/roles/config-deployment/tasks/main.yml +++ b/deploy/adapters/ansible/roles/config-deployment/tasks/main.yml @@ -31,3 +31,28 @@ template: src: ansible.cfg dest: /opt/openstack-ansible/playbooks/ + +- name: copy setup-ovs.yml + copy: + src: setup-ovs.yml + dest: /opt/openstack-ansible/playbooks + +- name: copy flavor roles + copy: + src: os-flavor + dest: /etc/ansible/roles/ + +- name: generate create-network.yml + template: + src: create-network.yml.j2 + dest: /opt/openstack-ansible/playbooks/create-network.yml + +- name: generate create-flavor.yml + template: + src: create-flavor.yml.j2 + dest: /opt/openstack-ansible/playbooks/create-flavor.yml + +- name: copy http.yml + copy: + src: http.yml + dest: /opt/openstack-ansible/playbooks/http.yml diff --git a/deploy/adapters/ansible/roles/config-deployment/templates/create-flavor.yml.j2 b/deploy/adapters/ansible/roles/config-deployment/templates/create-flavor.yml.j2 new file mode 100644 index 00000000..b33cd414 --- /dev/null +++ b/deploy/adapters/ansible/roles/config-deployment/templates/create-flavor.yml.j2 @@ -0,0 +1,15 @@ +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD 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: Create flavor + hosts: utility_container[0] + max_fail_percentage: 20 + user: root + roles: + - os-flavor diff --git a/deploy/adapters/ansible/roles/config-deployment/templates/create-network.yml.j2 b/deploy/adapters/ansible/roles/config-deployment/templates/create-network.yml.j2 new file mode 100644 index 00000000..419b9b18 --- /dev/null +++ b/deploy/adapters/ansible/roles/config-deployment/templates/create-network.yml.j2 @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD 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: Create external network + hosts: utility_container[0] + max_fail_percentage: 20 + user: root + tasks: + - name: create external net + shell: | + . /root/openrc; + openstack network create --share --external \ + --provider-physical-network {{ public_net_info.provider_network }} \ + --provider-network-type {{ public_net_info.type }} {{ public_net_info.network }}; + when: {{ public_net_info.enable }} == True + and "{{ public_net_info.type }}" == "flat" + + - name: create external net + shell: | + . /root/openrc; + openstack network create --share --external \ + --network-segment {{ public_net_info.segment_id }} \ + --provider-network-type {{ public_net_info.type }} {{ public_net_info.network }}; + when: {{public_net_info.enable}} == True + and "{{ public_net_info.type }}" != "flat" + + - name: create external subnet + shell: | + . /root/openrc; + openstack subnet create --network "{{ public_net_info.network }}" \ + --allocation-pool \ + start={{ public_net_info.floating_ip_start }},end={{ public_net_info.floating_ip_end }} \ + --gateway "{{ public_net_info.external_gw }}" \ + --subnet-range "{{ public_net_info.floating_ip_cidr }}" \ + "{{ public_net_info.subnet }}" diff --git a/deploy/adapters/ansible/roles/config-deployment/templates/openstack_user_config.yml.j2 b/deploy/adapters/ansible/roles/config-deployment/templates/openstack_user_config.yml.j2 index 38e14784..2a24113b 100644 --- a/deploy/adapters/ansible/roles/config-deployment/templates/openstack_user_config.yml.j2 +++ b/deploy/adapters/ansible/roles/config-deployment/templates/openstack_user_config.yml.j2 @@ -37,16 +37,24 @@ global_overrides: range: "1:1000" net_name: "vxlan" group_binds: +{% if "linuxbridge" == NEUTRON_MECHANISM_DRIVERS[0] %} - neutron_linuxbridge_agent +{% else %} + - neutron_openvswitch_agent +{% endif %} - network: container_bridge: "br-vlan" container_type: "veth" container_interface: "eth12" host_bind_override: "eth12" type: "flat" - net_name: "flat" + net_name: "{{ public_net_info.provider_network }}" group_binds: +{% if "linuxbridge" == NEUTRON_MECHANISM_DRIVERS[0] %} - neutron_linuxbridge_agent +{% else %} + - neutron_openvswitch_agent +{% endif %} - network: container_bridge: "br-vlan" container_type: "veth" @@ -55,7 +63,11 @@ global_overrides: range: "1:1" net_name: "vlan" group_binds: +{% if "linuxbridge" == NEUTRON_MECHANISM_DRIVERS[0] %} - neutron_linuxbridge_agent +{% else %} + - neutron_openvswitch_agent +{% endif %} - network: container_bridge: "br-storage" container_type: "veth" diff --git a/deploy/adapters/ansible/roles/config-deployment/templates/user_variables.yml b/deploy/adapters/ansible/roles/config-deployment/templates/user_variables.yml index 30b2c6b2..16f78ff8 100644 --- a/deploy/adapters/ansible/roles/config-deployment/templates/user_variables.yml +++ b/deploy/adapters/ansible/roles/config-deployment/templates/user_variables.yml @@ -21,7 +21,27 @@ # # Debug and Verbose options. debug: false +openstack_service_publicuri_proto: http haproxy_keepalived_external_vip_cidr: "{{ public_vip.ip }}/32" haproxy_keepalived_internal_vip_cidr: "10.1.0.22/32" haproxy_keepalived_external_interface: br-vlan haproxy_keepalived_internal_interface: br-mgmt + +{% if "openvswitch" == NEUTRON_MECHANISM_DRIVERS[0] or + "opendaylight" == NEUTRON_MECHANISM_DRIVERS[0] + %} +openstack_host_specific_kernel_modules: + - name: "openvswitch" + pattern: "CONFIG_OPENVSWITCH=" + group: "network_hosts" + +neutron_plugin_type: ml2.ovs + +neutron_ml2_drivers_type: "local,flat,vlan,vxlan" + +neutron_provider_networks: + network_flat_networks: "*" + network_types: "vxlan" + network_vxlan_ranges: "1:1000" + network_mappings: "physnet:br-provider" +{% endif %} diff --git a/deploy/adapters/ansible/roles/openstack-post/tasks/main.yml b/deploy/adapters/ansible/roles/openstack-post/tasks/main.yml index 882f4884..d5182c95 100644 --- a/deploy/adapters/ansible/roles/openstack-post/tasks/main.yml +++ b/deploy/adapters/ansible/roles/openstack-post/tasks/main.yml @@ -7,14 +7,17 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## --- -- name: create openstack flavors - os_nova_flavor: - cloud: opnfv - state: present - flavorid: "{{ item.id }}" - name: "{{ item.name }}" - vcpus: "{{ item.vcpus }}" - ram: "{{ item.ram }}" - disk: "{{ item.disk }}" - with_items: "{{ flavors }}" - when: inventory_hostname == groups['controller'][0] +- name: create network + shell: "export ANSIBLE_LOG_PATH=/var/ansible/run/openstack_ocata-opnfv2/ansible.log; \ + cd /opt/openstack-ansible/playbooks; \ + openstack-ansible create-network.yml > /dev/null" + +- name: create flavor + shell: "export ANSIBLE_LOG_PATH=/var/ansible/run/openstack_ocata-opnfv2/ansible.log; \ + cd /opt/openstack-ansible/playbooks; \ + openstack-ansible create-flavor.yml > /dev/null" + +- name: change https to http + shell: "export ANSIBLE_LOG_PATH=/var/ansible/run/openstack_ocata-opnfv2/ansible.log; \ + cd /opt/openstack-ansible/playbooks; \ + openstack-ansible http.yml > /dev/null" diff --git a/deploy/adapters/ansible/roles/setup-openvswitch/tasks/main.yml b/deploy/adapters/ansible/roles/setup-openvswitch/tasks/main.yml new file mode 100644 index 00000000..efe8745b --- /dev/null +++ b/deploy/adapters/ansible/roles/setup-openvswitch/tasks/main.yml @@ -0,0 +1,14 @@ +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD 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: setup openvswitch + shell: "export ANSIBLE_LOG_PATH=/var/ansible/run/openstack_ocata-opnfv2/ansible.log; \ + cd /opt/openstack-ansible/playbooks; \ + openstack-ansible setup-ovs.yml \ + | tee -a /var/log/osa/ovs.log > /dev/null" -- cgit 1.2.3-korg