setup ovs create network flavor 93/36693/4
authorwutianwei <wutianwei1@huawei.com>
Tue, 27 Jun 2017 11:49:07 +0000 (19:49 +0800)
committerwutianwei <wutianwei1@huawei.com>
Fri, 30 Jun 2017 04:10:05 +0000 (12:10 +0800)
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>
12 files changed:
deploy/adapters/ansible/openstack/HA-ansible-multinodes.yml
deploy/adapters/ansible/roles/config-deployment/files/http.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/config-deployment/files/os-flavor/tasks/main.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/config-deployment/files/os-flavor/vars/main.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/config-deployment/files/setup-ovs.yml [new file with mode: 0644]
deploy/adapters/ansible/roles/config-deployment/tasks/main.yml
deploy/adapters/ansible/roles/config-deployment/templates/create-flavor.yml.j2 [new file with mode: 0644]
deploy/adapters/ansible/roles/config-deployment/templates/create-network.yml.j2 [new file with mode: 0644]
deploy/adapters/ansible/roles/config-deployment/templates/openstack_user_config.yml.j2
deploy/adapters/ansible/roles/config-deployment/templates/user_variables.yml
deploy/adapters/ansible/roles/openstack-post/tasks/main.yml
deploy/adapters/ansible/roles/setup-openvswitch/tasks/main.yml [new file with mode: 0644]

index 2a3e649..2979632 100644 (file)
 - 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 (file)
index 0000000..248fc06
--- /dev/null
@@ -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 (file)
index 0000000..03b5712
--- /dev/null
@@ -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 (file)
index 0000000..d9c36d4
--- /dev/null
@@ -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 (file)
index 0000000..1097240
--- /dev/null
@@ -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
index b069601..1269cd3 100644 (file)
   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 (file)
index 0000000..b33cd41
--- /dev/null
@@ -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 (file)
index 0000000..419b9b1
--- /dev/null
@@ -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 }}"
index 38e1478..2a24113 100644 (file)
@@ -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"
index 30b2c6b..16f78ff 100644 (file)
 # # 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 %}
index 882f488..d5182c9 100644 (file)
@@ -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 (file)
index 0000000..efe8745
--- /dev/null
@@ -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"