Merge "Add networking-generic-switch support for Ironic integration"
This commit is contained in:
commit
1479bda202
@ -71,6 +71,8 @@ openstack_ceilometer_git_repo: https://opendev.org/openstack/ceilometer
|
|||||||
openstack_ceilometer_git_install_branch: master
|
openstack_ceilometer_git_install_branch: master
|
||||||
networking_ovn_git_repo: https://opendev.org/openstack/networking-ovn
|
networking_ovn_git_repo: https://opendev.org/openstack/networking-ovn
|
||||||
networking_ovn_git_install_branch: master
|
networking_ovn_git_install_branch: master
|
||||||
|
networking_generic_switch_git_repo: https://opendev.org/openstack/networking-generic-switch
|
||||||
|
networking_generic_switch_git_install_branch: master
|
||||||
|
|
||||||
neutron_upper_constraints_url: "{{ requirements_git_url | default('https://releases.openstack.org/constraints/upper/' ~ requirements_git_install_branch | default('master')) }}"
|
neutron_upper_constraints_url: "{{ requirements_git_url | default('https://releases.openstack.org/constraints/upper/' ~ requirements_git_install_branch | default('master')) }}"
|
||||||
neutron_git_constraints:
|
neutron_git_constraints:
|
||||||
@ -84,6 +86,7 @@ neutron_git_constraints:
|
|||||||
- "git+{{ networking_bgpvpn_git_repo }}@{{ networking_bgpvpn_git_install_branch }}#egg=networking-bgpvpn"
|
- "git+{{ networking_bgpvpn_git_repo }}@{{ networking_bgpvpn_git_install_branch }}#egg=networking-bgpvpn"
|
||||||
- "git+{{ openstack_ceilometer_git_repo }}@{{ openstack_ceilometer_git_install_branch }}#egg=ceilometer"
|
- "git+{{ openstack_ceilometer_git_repo }}@{{ openstack_ceilometer_git_install_branch }}#egg=ceilometer"
|
||||||
- "git+{{ networking_ovn_git_repo }}@{{ networking_ovn_git_install_branch }}#egg=networking-ovn"
|
- "git+{{ networking_ovn_git_repo }}@{{ networking_ovn_git_install_branch }}#egg=networking-ovn"
|
||||||
|
- "git+{{ networking_generic_switch_git_repo }}@{{ networking_generic_switch_git_install_branch }}#egg=networking-generic-switch"
|
||||||
- "--constraint {{ neutron_upper_constraints_url }}"
|
- "--constraint {{ neutron_upper_constraints_url }}"
|
||||||
|
|
||||||
neutron_pip_install_args: "{{ pip_install_options | default('') }}"
|
neutron_pip_install_args: "{{ pip_install_options | default('') }}"
|
||||||
@ -162,6 +165,7 @@ neutron_metadata_agent_init_overrides: {}
|
|||||||
neutron_metering_agent_ini_overrides: {}
|
neutron_metering_agent_ini_overrides: {}
|
||||||
neutron_metering_agent_init_overrides: {}
|
neutron_metering_agent_init_overrides: {}
|
||||||
neutron_ml2_conf_ini_overrides: {}
|
neutron_ml2_conf_ini_overrides: {}
|
||||||
|
neutron_ml2_conf_genericswitch_ini_overrides: {}
|
||||||
neutron_neutron_conf_overrides: {}
|
neutron_neutron_conf_overrides: {}
|
||||||
neutron_nuage_conf_ini_overrides: {}
|
neutron_nuage_conf_ini_overrides: {}
|
||||||
neutron_opendaylight_conf_ini_overrides: {}
|
neutron_opendaylight_conf_ini_overrides: {}
|
||||||
|
87
doc/source/app-genericswitch.rst
Normal file
87
doc/source/app-genericswitch.rst
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
========================================
|
||||||
|
Scenario - Networking Generic Switch
|
||||||
|
========================================
|
||||||
|
|
||||||
|
Overview
|
||||||
|
~~~~~~~~
|
||||||
|
|
||||||
|
Operators can choose to utilize the Networking Generic Switch (NGS) mechanism
|
||||||
|
driver to manage physical switches when Ironic is integrated with Neutron.
|
||||||
|
The Networking Generic Switch mechanism driver can be deployed alongside other
|
||||||
|
drivers, such as Open vSwitch or LinuxBridge. This document outlines how to
|
||||||
|
set it up in your environment.
|
||||||
|
|
||||||
|
Recommended reading
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
It is recommended to familiarize yourself with project-specific documentation
|
||||||
|
to better understand deployment and configuration options:
|
||||||
|
|
||||||
|
* `Networking Generic Switch <https://docs.openstack.org/networking-generic-switch/latest/>`_
|
||||||
|
|
||||||
|
Prerequisites
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* `Ironic Bare-Metal Provisioning Service <https://github.com/openstack/openstack-ansible-os_ironic>`_
|
||||||
|
|
||||||
|
* `Supported Network Hardware <https://docs.openstack.org/networking-generic-switch/latest/supported-devices.html>`_
|
||||||
|
|
||||||
|
* Network connectivity from the node(s) running the `neutron-server` service
|
||||||
|
to the management interface of the physical switch(es) connected to
|
||||||
|
Ironic bare-metal nodes. This is outside the scope of OpenStack-Ansible.
|
||||||
|
|
||||||
|
OpenStack-Ansible user variables
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Add ``ml2.genericswitch`` to the ``neutron_plugin_types`` list in
|
||||||
|
``/etc/openstack_deploy/user_variables.yml``:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
neutron_plugin_types:
|
||||||
|
- ml2.genericswitch
|
||||||
|
|
||||||
|
To interface with a supported network switch, configure ini overrides for each
|
||||||
|
connected switch in your environment:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
neutron_ml2_conf_genericswitch_ini_overrides:
|
||||||
|
genericswitch:arista01:
|
||||||
|
device_type: netmiko_arista_eos
|
||||||
|
ngs_mac_address: "00:1c:73:29:ea:ca"
|
||||||
|
ip: "192.168.90.2"
|
||||||
|
username: "openstack"
|
||||||
|
password: "0p3nst@ck"
|
||||||
|
ngs_port_default_vlan: 3
|
||||||
|
genericswitch:arista02:
|
||||||
|
device_type: netmiko_arista_eos
|
||||||
|
ngs_mac_address: "00:1c:73:29:ea:cb"
|
||||||
|
ip: "192.168.90.3"
|
||||||
|
username: "openstack"
|
||||||
|
password: "0p3nst@ck"
|
||||||
|
ngs_port_default_vlan: 3
|
||||||
|
|
||||||
|
Lastly, configure an override to Ironic to enable the ``neutron`` interface:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
ironic_enabled_network_interfaces_list: neutron
|
||||||
|
ironic_default_network_interface: neutron
|
||||||
|
|
||||||
|
Notes
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
Ironic bare-metal ports that are associated with bare-metal nodes can be
|
||||||
|
configured with the respective connection details using the
|
||||||
|
``openstack baremetal port set`` command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
openstack baremetal port set 3a948c3b-6c41-4f68-8389-c4f5ca667c63 \
|
||||||
|
--local-link-connection switch_info=arista01 \
|
||||||
|
--local-link-connection switch_id="00:1c:73:29:ea:ca" \
|
||||||
|
--local-link-connection port_id="et11"
|
||||||
|
|
||||||
|
When a server is deployed using a bare-metal node, Neutron will connect to
|
||||||
|
the respective switch(es) and configure the switchport interface(s) according.
|
@ -15,6 +15,7 @@ Neutron role for OpenStack-Ansible
|
|||||||
app-nuage.rst
|
app-nuage.rst
|
||||||
app-calico.rst
|
app-calico.rst
|
||||||
app-opendaylight.rst
|
app-opendaylight.rst
|
||||||
|
app-genericswitch.rst
|
||||||
|
|
||||||
:tags: openstack, neutron, cloud, ansible
|
:tags: openstack, neutron, cloud, ansible
|
||||||
:category: \*nix
|
:category: \*nix
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Support for the networking-generic-switch mechanism driver has been implemented.
|
||||||
|
This allows Ironic to interface with Neutron when the ``neutron`` network interface
|
||||||
|
has been configured. This feature may be enabled by adding ``ml2.genericswitch``
|
||||||
|
to the ``neutron_plugin_types`` list in ``/etc/openstack_deploy/user_variables.yml``.
|
@ -134,7 +134,7 @@
|
|||||||
|
|
||||||
- name: Copy neutron ml2 plugin config
|
- name: Copy neutron ml2 plugin config
|
||||||
config_template:
|
config_template:
|
||||||
src: "{{ neutron_plugins[item].plugin_ini }}.j2"
|
src: "{{ ('plugin_conf_bare' not in neutron_plugins[item]) | ternary(neutron_plugins[item].plugin_ini ~ '.j2', omit) }}"
|
||||||
dest: "{{ neutron_conf_dir }}/{{ neutron_plugins[item].plugin_ini }}"
|
dest: "{{ neutron_conf_dir }}/{{ neutron_plugins[item].plugin_ini }}"
|
||||||
owner: "root"
|
owner: "root"
|
||||||
group: "{{ neutron_system_group_name }}"
|
group: "{{ neutron_system_group_name }}"
|
||||||
|
@ -72,6 +72,9 @@ neutron_proprietary_nuage_pip_packages:
|
|||||||
neutron_optional_ovn_pip_packages:
|
neutron_optional_ovn_pip_packages:
|
||||||
- networking-ovn
|
- networking-ovn
|
||||||
|
|
||||||
|
neutron_optional_ngs_pip_packages:
|
||||||
|
- networking-generic-switch
|
||||||
|
|
||||||
neutron_venv_packages: >-
|
neutron_venv_packages: >-
|
||||||
{%- set pkg_list = neutron_pip_packages | union(neutron_user_pip_packages) %}
|
{%- set pkg_list = neutron_pip_packages | union(neutron_user_pip_packages) %}
|
||||||
{%- if neutron_bgp | bool %}
|
{%- if neutron_bgp | bool %}
|
||||||
@ -111,6 +114,10 @@ neutron_venv_packages: >-
|
|||||||
(neutron_services['neutron-ovn-controller']['group'] in group_names)) %}
|
(neutron_services['neutron-ovn-controller']['group'] in group_names)) %}
|
||||||
{%- set _ = pkg_list.extend(neutron_optional_ovn_pip_packages) %}
|
{%- set _ = pkg_list.extend(neutron_optional_ovn_pip_packages) %}
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
{%- if ('ml2.genericswitch' in neutron_plugin_types) and
|
||||||
|
(neutron_services['neutron-server']['group'] in group_names) %}
|
||||||
|
{%- set _ = pkg_list.extend(neutron_optional_ngs_pip_packages) %}
|
||||||
|
{%- endif %}
|
||||||
{{- pkg_list | unique }}
|
{{- pkg_list | unique }}
|
||||||
|
|
||||||
|
|
||||||
@ -208,6 +215,13 @@ neutron_plugins:
|
|||||||
plugin_conf_ini_overrides: "{{ neutron_ml2_conf_ini_overrides }}"
|
plugin_conf_ini_overrides: "{{ neutron_ml2_conf_ini_overrides }}"
|
||||||
plugin_core: ml2
|
plugin_core: ml2
|
||||||
plugin_ini: plugins/ml2/ml2_conf.ini
|
plugin_ini: plugins/ml2/ml2_conf.ini
|
||||||
|
ml2.genericswitch:
|
||||||
|
drivers_type: "vlan"
|
||||||
|
mechanisms: "genericswitch"
|
||||||
|
plugin_conf_bare: True
|
||||||
|
plugin_conf_ini_overrides: "{{ neutron_ml2_conf_genericswitch_ini_overrides }}"
|
||||||
|
plugin_core: ml2
|
||||||
|
plugin_ini: plugins/ml2/ml2_conf_genericswitch.ini
|
||||||
|
|
||||||
###
|
###
|
||||||
### ML2 Plugin Configuration
|
### ML2 Plugin Configuration
|
||||||
@ -446,7 +460,7 @@ neutron_services:
|
|||||||
group: neutron_server
|
group: neutron_server
|
||||||
service_name: neutron-server
|
service_name: neutron-server
|
||||||
service_en: True
|
service_en: True
|
||||||
execstarts: "{{ neutron_bin }}/neutron-server --config-file {{ neutron_conf_dir }}/neutron.conf --config-file {{ neutron_conf_dir }}/{{ neutron_plugins[neutron_plugin_type].plugin_ini }}"
|
execstarts: "{{ neutron_bin }}/neutron-server --config-file {{ neutron_conf_dir }}/neutron.conf --config-file {{ neutron_conf_dir }}/{{ neutron_plugins[neutron_plugin_type].plugin_ini }}{%- if ('ml2.genericswitch' in neutron_plugin_types) %} --config-file {{ neutron_conf_dir }}/{{ neutron_plugins['ml2.genericswitch'].plugin_ini }}{%- endif %}"
|
||||||
init_config_overrides: "{{ neutron_server_init_overrides }}"
|
init_config_overrides: "{{ neutron_server_init_overrides }}"
|
||||||
start_order: 1
|
start_order: 1
|
||||||
calico-felix:
|
calico-felix:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user