aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwutianwei <wutianwei1@huawei.com>2017-06-27 19:49:07 +0800
committerwutianwei <wutianwei1@huawei.com>2017-06-30 12:10:05 +0800
commit5371004738b1430e56a3e7679284a5e822255d2e (patch)
tree036ee67714b08a7cc62e35deda0ef66a889ec6a0
parent7107ed60659e23863ffcd227600bf741489f24d8 (diff)
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 <wutianwei1@huawei.com>
-rw-r--r--deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml12
-rw-r--r--deploy/adapters/ansible/roles/config-deployment/files/http.yml17
-rw-r--r--deploy/adapters/ansible/roles/config-deployment/files/os-flavor/tasks/main.yml17
-rw-r--r--deploy/adapters/ansible/roles/config-deployment/files/os-flavor/vars/main.yml45
-rw-r--r--deploy/adapters/ansible/roles/config-deployment/files/setup-ovs.yml55
-rw-r--r--deploy/adapters/ansible/roles/config-deployment/tasks/main.yml25
-rw-r--r--deploy/adapters/ansible/roles/config-deployment/templates/create-flavor.yml.j215
-rw-r--r--deploy/adapters/ansible/roles/config-deployment/templates/create-network.yml.j241
-rw-r--r--deploy/adapters/ansible/roles/config-deployment/templates/openstack_user_config.yml.j214
-rw-r--r--deploy/adapters/ansible/roles/config-deployment/templates/user_variables.yml20
-rw-r--r--deploy/adapters/ansible/roles/openstack-post/tasks/main.yml25
-rw-r--r--deploy/adapters/ansible/roles/setup-openvswitch/tasks/main.yml14
12 files changed, 284 insertions, 16 deletions
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"