diff --git a/defaults/main.yml b/defaults/main.yml index 343e4359..d37147a3 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -67,6 +67,8 @@ networking_bgpvpn_git_repo: https://opendev.org/openstack/networking-bgpvpn networking_bgpvpn_git_install_branch: master ceilometer_git_repo: https://opendev.org/openstack/ceilometer ceilometer_git_install_branch: master +networking_baremetal_git_repo: https://opendev.org/openstack/networking-baremetal +networking_baremetal_git_install_branch: master networking_generic_switch_git_repo: https://opendev.org/openstack/networking-generic-switch networking_generic_switch_git_install_branch: master networking_nsx_git_repo: https://opendev.org/x/vmware-nsx @@ -145,6 +147,8 @@ neutron_calico_felix_ini_overrides: {} neutron_calico_felix_init_overrides: {} neutron_dhcp_agent_ini_overrides: {} neutron_dhcp_agent_init_overrides: {} +neutron_ironic_neutron_agent_ini_overrides: {} +neutron_ironic_neutron_agent_init_overrides: {} neutron_l3_agent_ini_overrides: {} neutron_l3_agent_init_overrides: {} neutron_linuxbridge_agent_ini_overrides: {} diff --git a/releasenotes/notes/networking-baremetal-plugin-agent-support-cfb06fa4faf85bdc.yaml b/releasenotes/notes/networking-baremetal-plugin-agent-support-cfb06fa4faf85bdc.yaml new file mode 100644 index 00000000..4f93005e --- /dev/null +++ b/releasenotes/notes/networking-baremetal-plugin-agent-support-cfb06fa4faf85bdc.yaml @@ -0,0 +1,8 @@ +--- +features: + - | + Support for the networking-baremetal mechanism driver and agent has been implemented. + The ironic-neutron-agent is a neutron agent that populates the host to physical network + mapping for baremetal nodes in neutron. Neutron uses this to calculate the segment to + host mapping information. This feature may be enabled by adding ``ml2.baremetal`` + to the ``neutron_plugin_types`` list in ``/etc/openstack_deploy/user_variables.yml``. diff --git a/templates/plugins/ml2/ironic_neutron_agent.ini.j2 b/templates/plugins/ml2/ironic_neutron_agent.ini.j2 new file mode 100644 index 00000000..14ff6974 --- /dev/null +++ b/templates/plugins/ml2/ironic_neutron_agent.ini.j2 @@ -0,0 +1,11 @@ +# {{ ansible_managed }} + +[ironic] +project_domain_name = Default +project_name = service +user_domain_name = Default +password = {{ ironic_service_password }} +username = ironic +auth_url = {{ keystone_service_internalurl }} +auth_type = password +os_region = RegionOne diff --git a/vars/main.yml b/vars/main.yml index 7df09076..680b750b 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -69,6 +69,9 @@ neutron_proprietary_nuage_pip_packages: - nuage-openstack-neutronclient - nuagenetlib +neutron_optional_baremetal_pip_packages: + - "git+{{ networking_baremetal_git_repo }}@{{ networking_baremetal_git_install_branch }}#egg=networking-baremetal" + neutron_optional_ngs_pip_packages: - "git+{{ networking_generic_switch_git_repo }}@{{ networking_generic_switch_git_install_branch }}#egg=networking-generic-switch" @@ -110,6 +113,11 @@ neutron_venv_packages: >- (neutron_services['neutron-server']['group'] in group_names) %} {%- set _ = pkg_list.extend(neutron_optional_ngs_pip_packages) %} {%- endif %} + {%- if ('ml2.baremetal' in neutron_plugin_types) and + ((neutron_services['neutron-server']['group'] in group_names) or + (neutron_services['ironic-neutron-agent']['group'] in group_names)) %} + {%- set _ = pkg_list.extend(neutron_optional_baremetal_pip_packages) %} + {%- endif %} {%- if (neutron_plugin_type.split('.')[-1] == "nsx") and (neutron_services['neutron-server']['group'] in group_names) %} {%- set _ = pkg_list.extend(neutron_optional_nsx_pip_packages) %} @@ -218,6 +226,12 @@ neutron_plugins: plugin_conf_ini_overrides: "{{ neutron_ml2_conf_genericswitch_ini_overrides }}" plugin_core: ml2 plugin_ini: plugins/ml2/ml2_conf_genericswitch.ini + ml2.baremetal: + drivers_type: "vlan" + mechanisms: "baremetal" + plugin_conf_ini_overrides: "{{ neutron_ironic_neutron_agent_ini_overrides }}" + plugin_core: ml2 + plugin_ini: plugins/ml2/ironic_neutron_agent.ini vmware.nsx: plugin_core: vmware_nsx.plugin.NsxPolicyPlugin plugin_ini: plugins/vmware/nsx.ini @@ -508,6 +522,17 @@ neutron_services: config_type: "ini" init_config_overrides: "{{ neutron_ovn_metadata_agent_init_overrides }}" start_order: 3 + ironic-neutron-agent: + group: ironic_neutron_agent + service_name: ironic-neutron-agent + service_en: "{{ 'ml2.baremetal' in neutron_plugin_types }}" + service_conf_path: "{{ neutron_conf_version_dir }}" + service_conf: plugins/ml2/ironic_neutron_agent.ini + execstarts: "{{ neutron_bin }}/ironic-neutron-agent --config-file {{ neutron_conf_dir }}/neutron.conf --config-file {{ neutron_conf_dir }}/plugins/ml2/ml2_conf.ini --config-file {{ neutron_conf_dir }}/plugins/ml2/ironic_neutron_agent.ini" + config_overrides: "{{ neutron_ironic_neutron_agent_ini_overrides }}" + config_type: "ini" + init_config_overrides: "{{ neutron_ironic_neutron_agent_init_overrides }}" + start_order: 3 ### ### Overrides for services where required