diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index 99386df044068f23cb34036fda7ee6387eccd390..10b29c889b486849b356d7e5005472be40791092 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -155,7 +155,7 @@ bifrost_network_interface: "{{ network_interface }}" dns_interface: "{{ network_interface }}" tunnel_interface_address: "{{ hostvars[inventory_hostname]['ansible_' + tunnel_interface]['ipv4']['address'] }}" -# Valid options are [ openvswitch, linuxbridge, vmware_nsxv, vmware_dvs, opendaylight ] +# Valid options are [ openvswitch, linuxbridge, vmware_nsxv, vmware_nsxv3, vmware_dvs, opendaylight ] neutron_plugin_agent: "openvswitch" # Valid options are [ internal, infoblox ] diff --git a/ansible/roles/neutron/defaults/main.yml b/ansible/roles/neutron/defaults/main.yml index e645cd57da9806e5314f7d6ef75052aeb3a30596..4418b6698e97c45b20733d1989a4fc77ab4ea96b 100644 --- a/ansible/roles/neutron/defaults/main.yml +++ b/ansible/roles/neutron/defaults/main.yml @@ -80,7 +80,7 @@ neutron_services: container_name: "neutron_dhcp_agent" image: "{{ neutron_dhcp_agent_image_full }}" privileged: True - enabled: "{{ neutron_plugin_agent != 'vmware_nsxv' }}" + enabled: "{{ neutron_plugin_agent not in [ 'vmware_nsxv', 'vmware_nsxv3' ] }}" group: "neutron-dhcp-agent" host_in_groups: "{{ inventory_hostname in groups['neutron-dhcp-agent'] }}" volumes: @@ -93,7 +93,7 @@ neutron_services: container_name: "neutron_l3_agent" image: "{{ neutron_l3_agent_image_full }}" privileged: True - enabled: "{{ neutron_plugin_agent not in ['vmware_nsxv', 'vmware_dvs'] and not enable_opendaylight_l3 | bool }}" + enabled: "{{ neutron_plugin_agent not in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_dvs'] and not enable_opendaylight_l3 | bool }}" host_in_groups: >- {{ inventory_hostname in groups['neutron-l3-agent'] @@ -110,7 +110,7 @@ neutron_services: container_name: "neutron_lbaas_agent" image: "{{ neutron_lbaas_agent_image_full }}" privileged: True - enabled: "{{ enable_neutron_lbaas | bool and neutron_plugin_agent not in ['vmware_nsxv', 'vmware_dvs'] }}" + enabled: "{{ enable_neutron_lbaas | bool and neutron_plugin_agent not in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_dvs'] }}" group: "neutron-lbaas-agent" host_in_groups: "{{ inventory_hostname in groups['neutron-lbaas-agent'] }}" volumes: @@ -122,7 +122,7 @@ neutron_services: container_name: "neutron_sriov_agent" image: "{{ neutron_sriov_agent_image_full }}" privileged: True - enabled: "{{ enable_neutron_sriov | bool and neutron_plugin_agent != 'vmware_nsxv' }}" + enabled: "{{ enable_neutron_sriov | bool and neutron_plugin_agent not in ['vmware_nsxv', 'vmware_nsxv3' ] }}" host_in_groups: "{{ inventory_hostname in groups['compute'] }}" volumes: - "{{ node_config_directory }}/neutron-sriov-agent/:{{ container_config_directory }}/:ro" @@ -133,7 +133,7 @@ neutron_services: container_name: "neutron_metadata_agent" image: "{{ neutron_metadata_agent_image_full }}" privileged: True - enabled: "{{ neutron_plugin_agent != 'vmware_nsxv' }}" + enabled: "{{ neutron_plugin_agent not in [ 'vmware_nsxv', 'vmware_nsxv3' ] }}" host_in_groups: >- {{ inventory_hostname in groups['neutron-metadata-agent'] @@ -149,7 +149,7 @@ neutron_services: container_name: "neutron_bgp_dragent" image: "{{ neutron_bgp_dragent_image_full }}" privileged: True - enabled: "{{ enable_neutron_bgp_dragent | bool and neutron_plugin_agent not in ['vmware_nsxv', 'vmware_dvs'] }}" + enabled: "{{ enable_neutron_bgp_dragent | bool and neutron_plugin_agent not in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_dvs'] }}" group: "neutron-bgp-dragent" host_in_groups: "{{ inventory_hostname in groups['neutron-bgp-dragent'] }}" volumes: @@ -336,6 +336,18 @@ vmware_nsxv_spoofguard_enabled: "false" vmware_nsxv_metadata_initializer: "false" vmware_nsxv_edge_ha: "false" +#################### +# VMware NSXV3 +#################### +nsxv3_metadata_proxy: "metadata proxy uuid" +nsxv3_dhcp_profile: "dhcp service uuid" +nsxv3_native_dhcp_metadata: "true" +nsxv3_api_user: "user" +nsxv3_api_managers: "127.0.0.1" +nsxv3_default_tier0_router: "tier0 router uuid" +nsxv3_default_vlan_tz: "vlan TZ uuid" +nsxv3_default_overlay_tz: "overlay TZ uuid" + #################### # VMware DVS #################### diff --git a/ansible/roles/neutron/tasks/config.yml b/ansible/roles/neutron/tasks/config.yml index 45ad4f98a77e3cb9000b672bd9c029ede0426243..983a55ed9046fcf0a33cf897c53f2d3819102c32 100644 --- a/ansible/roles/neutron/tasks/config.yml +++ b/ansible/roles/neutron/tasks/config.yml @@ -341,7 +341,7 @@ when: - neutron_server.enabled | bool - neutron_server.host_in_groups | bool - - neutron_plugin_agent in ['vmware_nsxv', 'vmware_dvs'] + - neutron_plugin_agent in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_dvs'] notify: - "Restart {{ service_name }} container" diff --git a/ansible/roles/neutron/templates/neutron-server.json.j2 b/ansible/roles/neutron/templates/neutron-server.json.j2 index dc6a7317ddb3efcc063f090a25f007701f8d4341..4c6627ca2add42f071579bc242513aed45fbb887 100644 --- a/ansible/roles/neutron/templates/neutron-server.json.j2 +++ b/ansible/roles/neutron/templates/neutron-server.json.j2 @@ -1,5 +1,5 @@ { - "command": "neutron-server --config-file /etc/neutron/neutron.conf {% if neutron_plugin_agent in ['openvswitch', 'linuxbridge', 'opendaylight'] %} --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-file /etc/neutron/neutron_lbaas.conf --config-file /etc/neutron/neutron_vpnaas.conf {% elif neutron_plugin_agent in ['vmware_nsxv', 'vmware_dvs'] %} --config-file /etc/neutron/plugins/vmware/nsx.ini {% endif %} --config-file /etc/neutron/fwaas_driver.ini", + "command": "neutron-server --config-file /etc/neutron/neutron.conf {% if neutron_plugin_agent in ['openvswitch', 'linuxbridge', 'opendaylight'] %} --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-file /etc/neutron/neutron_lbaas.conf --config-file /etc/neutron/neutron_vpnaas.conf {% elif neutron_plugin_agent in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_dvs'] %} --config-file /etc/neutron/plugins/vmware/nsx.ini {% endif %} --config-file /etc/neutron/fwaas_driver.ini", "config_files": [ { "source": "{{ container_config_directory }}/neutron.conf", @@ -45,12 +45,12 @@ "owner": "neutron", "perm": "0600", "optional": true - }{% if neutron_plugin_agent in ['vmware_nsxv', 'vmware_dvs'] -%}, + }{% if neutron_plugin_agent in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_dvs'] -%}, { "source": "{{ container_config_directory }}/nsx.ini", "dest": "/etc/neutron/plugins/vmware/nsx.ini", "owner": "neutron", - "optional": {{ (neutron_plugin_agent not in ['vmware_nsxv', 'vmware_dvs']) | string | lower }}, + "optional": {{ (neutron_plugin_agent not in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_dvs']) | string | lower }}, "perm": "0600" }{% endif %} ], diff --git a/ansible/roles/neutron/templates/neutron.conf.j2 b/ansible/roles/neutron/templates/neutron.conf.j2 index b87541dfcc8c2a264661e27c52f8be0cbf01b014..1e439f89fe91fa063bbb5432e8e139589a7c994a 100644 --- a/ansible/roles/neutron/templates/neutron.conf.j2 +++ b/ansible/roles/neutron/templates/neutron.conf.j2 @@ -39,6 +39,9 @@ allow_overlapping_ips = true {% if neutron_plugin_agent == 'vmware_nsxv' %} core_plugin = vmware_nsx.plugin.NsxVPlugin +{% elif neutron_plugin_agent == 'vmware_nsxv3' %} +core_plugin = vmware_nsx.plugin.NsxV3Plugin +dhcp_agent_notification = False {% elif neutron_plugin_agent == 'vmware_dvs' %} core_plugin = vmware_nsx.plugin.NsxDvsPlugin {% else %} @@ -63,6 +66,8 @@ dns_domain = {{ designate_ns_record }}. external_dns_driver = designate {% if neutron_plugin_agent == 'vmware_nsxv' %} nsx_extension_drivers = vmware_nsxv_dns +{% elif neutron_plugin_agent == 'vmware_nsxv3' %} +nsx_extension_drivers = vmware_nsxv3_dns {% elif neutron_plugin_agent == 'vmware_dvs' %} nsx_extension_drivers = vmware_dvs_dns {% endif %} diff --git a/ansible/roles/neutron/templates/nsx.ini.j2 b/ansible/roles/neutron/templates/nsx.ini.j2 index 2dda41d28a9faa6508db15f232eaa92a9f2409ae..1129de424b5b8fdcb9bca72472b03930a2916b01 100644 --- a/ansible/roles/neutron/templates/nsx.ini.j2 +++ b/ansible/roles/neutron/templates/nsx.ini.j2 @@ -15,6 +15,17 @@ backup_edge_pool = {{ vmware_nsxv_backup_edge_pool }} spoofguard_enabled = {{ vmware_nsxv_spoofguard_enabled }} metadata_initializer = {{ vmware_nsxv_metadata_initializer }} edge_ha = {{ vmware_nsxv_edge_ha }} +{% elif neutron_plugin_agent == 'vmware_nsxv3' %} +[nsx_v3] +metadata_proxy = {{ nsxv3_metadata_proxy }} +dhcp_profile = {{ nsxv3_dhcp_profile }} +native_dhcp_metadata = {{ nsxv3_native_dhcp_metadata }} +nsx_api_password = {{ nsxv3_api_password }} +nsx_api_user = {{ nsxv3_api_user }} +nsx_api_managers = {{ nsxv3_api_managers }} +default_tier0_router = {{ nsxv3_default_tier0_router }} +default_vlan_tz = {{ nsxv3_default_vlan_tz }} +default_overlay_tz = {{ nsxv3_default_overlay_tz }} {% elif neutron_plugin_agent == 'vmware_dvs' %} [dvs] host_ip = {{ vmware_dvs_host_ip }} diff --git a/ansible/roles/nova/defaults/main.yml b/ansible/roles/nova/defaults/main.yml index 2f22ce8326d049525840a123aaa6e008dfbfb18a..4bdd3fe0d9d9084947baeff134cac347d010692e 100644 --- a/ansible/roles/nova/defaults/main.yml +++ b/ansible/roles/nova/defaults/main.yml @@ -260,3 +260,4 @@ nova_enabled_notification_topics: "{{ nova_notification_topics | selectattr('ena # VMware #################### vmware_vcenter_datastore_regex: ".*" +ovs_bridge: "nsx-managed" diff --git a/ansible/roles/nova/templates/nova.conf.j2 b/ansible/roles/nova/templates/nova.conf.j2 index da6ff2f3c962c8435754208b2574f810bcf46eab..68c504be56b1d30d739c43c41b59650d79970b31 100644 --- a/ansible/roles/nova/templates/nova.conf.j2 +++ b/ansible/roles/nova/templates/nova.conf.j2 @@ -142,7 +142,9 @@ os_region_name = {{ openstack_region_name }} url = {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ neutron_server_port }} metadata_proxy_shared_secret = {{ metadata_secret }} service_metadata_proxy = true - +{% if neutron_plugin_agent == 'vmware_nsxv3' %} +ovs_bridge = {{ ovs_bridge }} +{% endif %} auth_url = {{ keystone_admin_url }} auth_type = password project_domain_name = {{ default_project_domain_name }} diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index 7ac8428700cfe3cbbdb3934234c1469142cb5625..3c03f7f6b5f0fc5d319eb1048669fabe4fc41179 100644 --- a/etc/kolla/globals.yml +++ b/etc/kolla/globals.yml @@ -99,7 +99,8 @@ kolla_internal_vip_address: "10.10.10.254" # addresses for that reason. #neutron_external_interface: "eth1" -# Valid options are [ openvswitch, linuxbridge, vmware_nsxv, vmware_dvs, opendaylight ] +# Valid options are [ openvswitch, linuxbridge, vmware_nsxv, vmware_nsxv3, vmware_dvs, opendaylight ] +# if vmware_nsxv3 is selected, enable_openvswitch MUST be set to "no" (default is yes) #neutron_plugin_agent: "openvswitch" # Valid options are [ internal, infoblox ] diff --git a/etc/kolla/passwords.yml b/etc/kolla/passwords.yml index 954031eb0e731c2417bdcb4f42222e8195efafb0..8ded2388a9f48a2386830ed3f03ce20a9ce1b5fe 100644 --- a/etc/kolla/passwords.yml +++ b/etc/kolla/passwords.yml @@ -33,6 +33,7 @@ opendaylight_password: vmware_dvs_host_password: vmware_nsxv_password: vmware_vcenter_host_password: +nsxv3_api_password: ##################### # Hitachi NAS support diff --git a/releasenotes/notes/nsxv3-support-0bd45afcb7e71cc5.yaml b/releasenotes/notes/nsxv3-support-0bd45afcb7e71cc5.yaml new file mode 100644 index 0000000000000000000000000000000000000000..66931d59a33259456bfdd2478dc5b920d535edaf --- /dev/null +++ b/releasenotes/notes/nsxv3-support-0bd45afcb7e71cc5.yaml @@ -0,0 +1,3 @@ +--- +features: + - Add support for the VMware NSX Transformers plugin