{"id":463,"sha1":"73d8f1993d7a0cf04cc83e9ff18a5e861ffabbdd","playbook":{"id":4,"items":{"plays":104,"tasks":1377,"results":1365,"hosts":2,"files":504,"records":0},"arguments":{"version":null,"verbosity":0,"private_key_file":null,"remote_user":null,"connection":"openstack.osa.ssh","timeout":null,"ssh_common_args":null,"sftp_extra_args":null,"scp_extra_args":null,"ssh_extra_args":null,"ask_pass":false,"connection_password_file":null,"force_handlers":true,"flush_cache":false,"become":false,"become_method":"sudo","become_user":null,"become_ask_pass":false,"become_password_file":null,"tags":["all"],"skip_tags":[],"check":false,"diff":false,"inventory":["/home/zuul/src/opendev.org/openstack/openstack-ansible/inventory/dynamic_inventory.py","/home/zuul/src/opendev.org/openstack/openstack-ansible/inventory/inventory.ini","/etc/openstack_deploy/inventory.ini"],"listhosts":false,"subset":null,"extra_vars":"Not saved by ARA as configured by 'ignored_arguments'","vault_ids":[],"ask_vault_pass":false,"vault_password_files":[],"forks":8,"module_path":null,"syntax":false,"listtasks":false,"listtags":false,"step":false,"start_at_task":null,"args":["setup-openstack.yml"]},"labels":[{"id":1,"name":"check:False"},{"id":2,"name":"tags:all"}],"started":"2025-12-08T13:39:52.478534Z","ended":"2025-12-08T14:14:54.510371Z","duration":"00:35:02.031837","name":null,"ansible_version":"2.18.6","client_version":"1.7.4","python_version":"3.12.3","server_version":"1.7.4","status":"failed","path":"/home/zuul/src/opendev.org/openstack/openstack-ansible/playbooks/setup-openstack.yml","controller":"aio1.openstack.local","user":"root"},"content":"---\n# Copyright 2017, Rackspace US, Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n_neutron_is_first_play_host: >-\n  {{\n    (neutron_services['neutron-server']['group'] in group_names and inventory_hostname == (\n      groups[neutron_services['neutron-server']['group']] | select('in', ansible_play_hosts)) | first) | bool\n  }}\n_neutron_oslomsg_rpc_vhost_conf: >-\n  {{\n    (neutron_oslomsg_rpc_vhost is string) | ternary(\n      neutron_oslomsg_rpc_vhost, neutron_oslomsg_rpc_vhost | selectattr('state', 'eq', 'present') | map(attribute='name') | first)\n  }}\n_neutron_oslomsg_notify_vhost_conf: >-\n  {{\n    (neutron_oslomsg_notify_vhost is string) | ternary(\n      neutron_oslomsg_notify_vhost, neutron_oslomsg_notify_vhost | selectattr('state', 'eq', 'present') | map(attribute='name') | first)\n  }}\n\n###\n### Open vSwitch\n###\nneutron_needs_openvswitch: >-\n  {{ (neutron_services['neutron-openvswitch-agent']['group'] in group_names and neutron_services['neutron-openvswitch-agent'].service_en | bool)\n  or (neutron_services['neutron-ovn-northd']['group'] in group_names and (neutron_plugin_type == 'ml2.ovn') | bool)\n  or (neutron_services['neutron-ovn-controller']['group'] in group_names and (neutron_plugin_type == 'ml2.ovn') | bool)\n  or (neutron_services['neutron-server']['group'] in group_names and (neutron_plugin_type == 'ml2.ovn') | bool) }}\n\n###\n### Python code details\n###\n\nneutron_pip_packages:\n  - \"git+{{ neutron_git_repo }}@{{ neutron_git_install_branch }}#egg=neutron\"\n  - osprofiler\n  - PyMySQL\n  - oslo.cache[dogpile]\n  - systemd-python\n\n# Specific pip packages provided by the user\nneutron_user_pip_packages: []\n\nneutron_optional_bgp_pip_packages:\n  - \"git+{{ neutron_dynamic_routing_git_repo }}@{{ neutron_dynamic_routing_git_install_branch }}#egg=neutron-dynamic-routing\"\n\nneutron_optional_ovn_bgp_pip_packages:\n  - \"git+{{ networking_ovn_bgp_git_repo }}@{{ networking_ovn_bgp_git_install_branch }}#egg=ovn-bgp-agent\"\n\nneutron_optional_fwaas_pip_packages:\n  - \"git+{{ neutron_fwaas_git_repo }}@{{ neutron_fwaas_git_install_branch }}#egg=neutron-fwaas\"\n\nneutron_optional_vpnaas_pip_packages:\n  - \"git+{{ neutron_vpnaas_git_repo }}@{{ neutron_vpnaas_git_install_branch }}#egg=neutron-vpnaas\"\n\nneutron_optional_sfc_pip_packages:\n  - \"git+{{ networking_sfc_git_repo }}@{{ networking_sfc_git_install_branch }}#egg=networking-sfc\"\n\nneutron_proprietary_nuage_pip_packages:\n  - nuage-openstack-neutron\n  - nuage-openstack-neutronclient\n  - nuagenetlib\n\nneutron_optional_baremetal_pip_packages:\n  - \"git+{{ networking_baremetal_git_repo }}@{{ networking_baremetal_git_install_branch }}#egg=networking-baremetal\"\n\nneutron_optional_ngs_pip_packages:\n  - \"git+{{ networking_generic_switch_git_repo }}@{{ networking_generic_switch_git_install_branch }}#egg=networking-generic-switch\"\n\nneutron_optional_nsx_pip_packages:\n  - \"git+{{ networking_nsx_git_repo }}@{{ networking_nsx_git_install_branch }}#egg=vmware-nsx\"\n  - \"git+{{ networking_nsxlib_git_repo }}@{{ networking_nsxlib_git_install_branch }}#egg=vmware-nsxlib\"\n\nneutron_venv_packages: >-\n  {%- set pkg_list = neutron_pip_packages | union(neutron_user_pip_packages) %}\n  {%- if neutron_bgp | bool %}\n  {%-   set _ = pkg_list.extend(neutron_optional_bgp_pip_packages) %}\n  {%- endif %}\n  {%- if neutron_fwaas_v2 | bool %}\n  {%- set _ = pkg_list.extend(neutron_optional_fwaas_pip_packages) %}\n  {%- endif %}\n  {%- if (neutron_ovn_bgp_enable | bool) and\n         (neutron_services['neutron-ovn-bgp-agent']['group'] in group_names) %}\n  {%-   set _ = pkg_list.extend(neutron_optional_ovn_bgp_pip_packages) %}\n  {%- endif %}\n  {%- if neutron_vpnaas | bool %}\n  {%-   set _ = pkg_list.extend(neutron_optional_vpnaas_pip_packages) %}\n  {%- endif %}\n  {%- if neutron_sfc | bool %}\n  {%-   set _ = pkg_list.extend(neutron_optional_sfc_pip_packages) %}\n  {%- endif %}\n  {%- if (neutron_plugin_type.split('.')[-1] == 'nuage') and\n         (neutron_services['neutron-server']['group'] in group_names) %}\n  {%-     set _ = pkg_list.extend(neutron_optional_nuage_pip_packages) %}\n  {%- endif %}\n  {%- if ('ml2.genericswitch' in neutron_plugin_types) and\n         (neutron_services['neutron-server']['group'] in group_names) %}\n  {%-     set _ = pkg_list.extend(neutron_optional_ngs_pip_packages) %}\n  {%- endif %}\n  {%- if ('ml2.baremetal' in neutron_plugin_types) and\n         ((neutron_services['neutron-server']['group'] in group_names) or\n          (neutron_services['ironic-neutron-agent']['group'] in group_names)) %}\n  {%-     set _ = pkg_list.extend(neutron_optional_baremetal_pip_packages) %}\n  {%- endif %}\n  {%- if (neutron_plugin_type.split('.')[-1] == \"nsx\") and\n         (neutron_services['neutron-server']['group'] in group_names) %}\n  {%-     set _ = pkg_list.extend(neutron_optional_nsx_pip_packages) %}\n  {%- endif %}\n  {{- pkg_list | unique }}\n\n\n###\n### Generic Neutron Config\n###\n\nneutron_conf_dir: /etc/neutron\nneutron_conf_version_dir: \"{{ (neutron_install_method == 'distro') | ternary(neutron_conf_dir, (neutron_bin | dirname) + '/etc/neutron') }}\"\nneutron_lock_dir: \"{{ openstack_lock_dir | default('/run/lock') }}\"\nneutron_system_user_name: neutron\nneutron_system_group_name: neutron\nneutron_system_comment: neutron system user\nneutron_system_shell: /bin/false\nneutron_system_home_folder: \"/var/lib/{{ neutron_system_user_name }}\"\nneutron_system_slice_name: neutron\n\n###\n### DB (Galera) integration\n###\n\nneutron_db_config: \"{{ neutron_conf_dir }}/neutron.conf\"\nneutron_db_plugin: \"{{ neutron_conf_dir }}/{{ neutron_plugins[neutron_plugin_type].plugin_ini }}\"\n\n###\n### Telemetry integration\n###\n\n# Add 'metering' to the neutron_plugin_base list when enabled\nneutron_metering: \"{% if 'metering' in neutron_plugin_base %}True{% else %}False{% endif %}\"\n\n###\n### Neutron Plugins\n###\n\nneutron_plugin_core: \"{{ neutron_plugins[neutron_plugin_type].plugin_core }}\"\n\nneutron_plugins:\n  ml2.ovs:\n    driver_firewall: \"{{ neutron_firewall_driver | default('iptables_hybrid') }}\"\n    driver_interface: openvswitch\n    drivers_type: \"{{ neutron_ml2_drivers_type }}\"\n    l2_population: \"{{ neutron_l2_population }}\"\n    mechanisms: \"openvswitch\"\n    l3_agent_mode: \"legacy\"\n    plugin_conf_ini_overrides: \"{{ neutron_ml2_conf_ini_overrides }}\"\n    plugin_core: ml2\n    plugin_ini: plugins/ml2/ml2_conf.ini\n  ml2.ovs.dvr:\n    driver_firewall: \"{{ neutron_firewall_driver | default('iptables_hybrid') }}\"\n    driver_interface: openvswitch\n    drivers_type: \"{{ neutron_ml2_drivers_type }}\"\n    l2_population: \"{{ neutron_l2_population }}\"\n    mechanisms: \"openvswitch\"\n    l3_agent_mode: \"{% if 'network_hosts' in group_names %}dvr_snat{% else %}dvr{% endif %}\"\n    router_distributed: true\n    plugin_conf_ini_overrides: \"{{ neutron_ml2_conf_ini_overrides }}\"\n    plugin_core: ml2\n    plugin_ini: plugins/ml2/ml2_conf.ini\n  nuage:\n    plugin_core: nuage_neutron.plugins.nuage.plugin.NuagePlugin\n    plugin_ini: plugins/nuage/nuage.ini\n    plugin_conf_ini_overrides: \"{{ neutron_nuage_conf_ini_overrides }}\"\n  ml2.sriov:\n    driver_types: \"{{ neutron_ml2_drivers_type }}\"\n    mechanisms: \"sriovnicswitch\"\n    plugin_ini: plugins/ml2/sriov_nic_agent.ini\n    plugin_conf_ini_overrides: \"{{ neutron_sriov_nic_agent_ini_overrides }}\"\n  ml2.ovn:\n    drivers_type: \"{{ neutron_ml2_drivers_type }}\"\n    driver_interface: openvswitch\n    mechanisms: \"ovn\"\n    plugin_conf_ini_overrides: \"{{ neutron_ml2_conf_ini_overrides }}\"\n    plugin_core: ml2\n    plugin_ini: plugins/ml2/ml2_conf.ini\n  ml2.genericswitch:\n    drivers_type: \"vlan\"\n    mechanisms: \"genericswitch\"\n    plugin_conf_bare: true\n    plugin_conf_ini_overrides: \"{{ neutron_ml2_conf_genericswitch_ini_overrides }}\"\n    plugin_core: ml2\n    plugin_ini: plugins/ml2/ml2_conf_genericswitch.ini\n  ml2.baremetal:\n    drivers_type: \"vlan\"\n    mechanisms: \"baremetal\"\n    plugin_conf_ini_overrides: \"{{ neutron_ironic_neutron_agent_ini_overrides }}\"\n    plugin_core: ml2\n    plugin_ini: plugins/ml2/ironic_neutron_agent.ini\n  vmware.nsx:\n    plugin_core: vmware_nsx.plugin.NsxPolicyPlugin\n    plugin_ini: plugins/vmware/nsx.ini\n    plugin_conf_ini_overrides: \"{{ neutron_nsx_conf_ini_overrides }}\"\n\n###\n### ML2 Plugin Configuration\n###\n\nneutron_ml2_mechanism_drivers: >-\n  {%- set _var = [] -%}\n  {%- for plugin in [neutron_plugin_type] | union(neutron_plugin_types) -%}\n  {%-   if _var.append(neutron_plugins[plugin].mechanisms) -%}{%- endif -%}\n  {%- endfor -%}\n  {%- if neutron_l2_population | bool -%}\n  {%-   if _var.append('l2population') -%}{%- endif -%}\n  {%- endif -%}\n  {{ _var | join(',') }}\n\n# OVS\n_neutron_non_tunnel_types:\n  - flat\n  - vlan\n  - local\n\n_neutron_ovs_disabled: >-\n  {{\n    (neutron_services['neutron-ovn-northd']['group'] or neutron_services['neutron-server']['group'] in group_names) and\n    (neutron_services['neutron-ovn-controller']['group'] not in group_names) and (neutron_plugin_type == 'ml2.ovn')\n  }}\n\n# Tunnel network types used by the OVS agent\nneutron_tunnel_types: \"{{ neutron_ml2_drivers_type.split(',') | difference(_neutron_non_tunnel_types) | join(',') }}\"\n\n###\n### L3 Agent Plugin Configuration\n###\n\n## Please add 'router' to the neutron_plugin_base list\n# TODO(odyssey4me): Remove the class path from this conditional in the Newton cycle\n# Should the neutron-l3-agent service should be enabled on the host\nneutron_l3: >-\n  {%\n    if 'router' in neutron_plugin_base or\n      'neutron.services.l3_router.l3_router_plugin.L3RouterPlugin' in neutron_plugin_base or\n      'df-l3' in neutron_plugin_base\n    %}True{% else %}False{% endif %}\n\n_neutron_l3_agent_extensions: |-\n  {% set extensions = [] %}\n  {% if neutron_fwaas_v2 | bool %}\n  {%   set _ = extensions.append('fwaas_v2') %}\n  {% endif %}\n  {% if neutron_vpnaas | bool %}\n  {%   set _ = extensions.append(\"vpnaas\") %}\n  {% endif %}\n  {% if neutron_port_forwarding | bool %}\n  {%   set _ = extensions.append(\"port_forwarding\") %}\n  {% endif %}\n  {{ extensions }}\n\n###\n### DHCP Agent Plugin Configuration\n###\n\nneutron_dhcp: \"{% if (neutron_plugin_type.split('.')[0] == 'ml2') and (neutron_plugin_type != 'ml2.ovn') %}True{% else %}False{% endif %}\"\n\n###\n### Metadata Agent Plugin Configuration\n###\n\nneutron_metadata: \"{% if (neutron_plugin_type.split('.')[0] == 'ml2') and (neutron_plugin_type != 'ml2.ovn') %}True{% else %}False{% endif %}\"\n\n###\n### FWaaS Plugin Configuration\n###\nneutron_fwaas_v2: \"{{ ('firewall_v2' in neutron_plugin_base) | ternary('True', 'False') }}\"\n\n###\n### VPNaaS Plugin Configuration\n###\n\n# Please add the 'vpnaas' to the neutron_plugin_base list\nneutron_vpnaas: \"{{ ('vpnaas' in neutron_plugin_base or 'ovn-vpnaas' in neutron_plugin_base) }}\"\n\n## Neutron Dynamic Routing Agent's BGP Plugin Configuration\n# To enable the BGP plugin, add the following item to the neutron_plugin_base list:\n#   neutron_dynamic_routing.services.bgp.bgp_plugin.BgpPlugin\n#\n# NOTE(matias): BgpPlugin doesn't have entry points and the full classpath\n#               is required.\n\nneutron_bgp: \"{% if 'neutron_dynamic_routing.services.bgp.bgp_plugin.BgpPlugin' in neutron_plugin_base %}True{% else %}False{% endif %}\"\n\nneutron_bgp_speaker_driver: neutron_dynamic_routing.services.bgp.agent.driver.os_ken.driver.OsKenBgpDriver\n\nneutron_bgp_router_id: \"{{ neutron_local_ip }}\"\n\n###\n### port_forwarding\n###\n\nneutron_port_forwarding: \"{{ ('port_forwarding' in neutron_plugin_base) | ternary('True', 'False') }}\"\n\n###\n### Service Function Chaining\n###\n\nneutron_sfc: \"{{ ('sfc' in neutron_plugin_base) | ternary('True', 'False') }}\"\n\n###\n### Services info\n###\n\n#\n# Compile a list of the services on a host based on whether\n# the host is in the host group and the service is enabled.\n# The service list is provided in the defined start order.\n#\nfiltered_neutron_services: |-\n  {% set services = [] %}\n  {% for key, value in neutron_services.items() %}\n  {%   if (value['group'] in group_names) and\n          (('service_en' not in value) or\n           ('service_en' in value and value['service_en'])) and\n           not ('wsgi_app' in value and value['wsgi_app']) %}\n  {%     set _ = value.update(\n            {\n              'service_key': key,\n              'enabled': value['enabled'] | default(True),\n              'state': value['state'] | default('started'),\n            }\n          ) %}\n  {%     set _ = services.append(value) %}\n  {%   endif %}\n  {% endfor %}\n  {{ services | sort(attribute='start_order') }}\n\nuwsgi_neutron_services: |-\n  {% set services = {} %}\n  {% for name, service in neutron_services.items() %}\n  {%   if (service['group'] in group_names) and\n         (('condition' not in service) or ('condition' in service and service['condition']))\n         and ('wsgi_app' in service and service['wsgi_app']) %}\n  {%     set _ = service.update(\n            {\n             'wsgi_venv': ((neutron_install_method == 'source') | ternary(neutron_bin | dirname, None)),\n             'uwsgi_uid': neutron_system_user_name,\n             'uwsgi_guid': neutron_system_group_name,\n             'uwsgi_processes': neutron_wsgi_processes,\n             'uwsgi_threads': neutron_wsgi_threads\n           }\n         ) %}\n  {%     set _ = services.update({name: service}) %}\n  {%   endif %}\n  {% endfor %}\n  {{ services }}\n\n###\n### Internals: neutron_services mappings\n###\n\nneutron_services:\n  neutron-dhcp-agent:\n    group: neutron_dhcp_agent\n    service_name: neutron-dhcp-agent\n    service_en: \"{{ neutron_dhcp | bool }}\"\n    service_conf_path: \"{{ neutron_conf_version_dir }}\"\n    service_conf: dhcp_agent.ini\n    service_rootwrap: rootwrap.d/dhcp.filters\n    execstarts: >-\n      {{ neutron_bin }}/neutron-dhcp-agent --config-file {{ neutron_conf_dir }}/neutron.conf --config-file {{ neutron_conf_dir }}/dhcp_agent.ini\n    config_overrides: \"{{ neutron_dhcp_agent_ini_overrides }}\"\n    config_type: \"ini\"\n    init_config_overrides: \"{{ neutron_dhcp_agent_init_overrides }}\"\n    start_order: 3\n  neutron-openvswitch-agent:\n    group: neutron_openvswitch_agent\n    service_name: neutron-openvswitch-agent\n    service_en: \"{{ neutron_plugin_type in ['ml2.ovs', 'ml2.ovs.dvr'] }}\"\n    service_conf_path: \"{{ neutron_conf_version_dir }}\"\n    service_conf: plugins/ml2/openvswitch_agent.ini\n    service_rootwrap: rootwrap.d/openvswitch-plugin.filters\n    execstarts: >-\n      {{ neutron_bin }}/neutron-openvswitch-agent --config-file {{ neutron_conf_dir }}/neutron.conf\n      --config-file {{ neutron_conf_dir }}/plugins/ml2/ml2_conf.ini --config-file {{ neutron_conf_dir }}/plugins/ml2/openvswitch_agent.ini\n    config_overrides: \"{{ neutron_openvswitch_agent_ini_overrides }}\"\n    config_type: \"ini\"\n    init_config_overrides: \"{{ neutron_openvswitch_agent_init_overrides }}\"\n    start_order: 2\n  neutron-metadata-agent:\n    group: neutron_metadata_agent\n    service_name: neutron-metadata-agent\n    service_en: \"{{ neutron_metadata | bool }}\"\n    service_conf_path: \"{{ neutron_conf_version_dir }}\"\n    service_conf: metadata_agent.ini\n    execstarts: >-\n      {{ neutron_bin }}/neutron-metadata-agent --config-file {{ neutron_conf_dir }}/neutron.conf --config-file {{ neutron_conf_dir }}/metadata_agent.ini\n    config_overrides: \"{{ neutron_metadata_agent_ini_overrides }}\"\n    config_type: \"ini\"\n    init_config_overrides: \"{{ neutron_metadata_agent_init_overrides }}\"\n    start_order: 3\n  neutron-metering-agent:\n    group: neutron_metering_agent\n    service_name: neutron-metering-agent\n    service_en: \"{{ neutron_metering | bool }}\"\n    service_conf_path: \"{{ neutron_conf_version_dir }}\"\n    service_conf: metering_agent.ini\n    execstarts: >-\n      {{ neutron_bin }}/neutron-metering-agent --config-file {{ neutron_conf_dir }}/neutron.conf --config-file {{ neutron_conf_dir }}/metering_agent.ini\n    config_overrides: \"{{ neutron_metering_agent_ini_overrides }}\"\n    config_type: \"ini\"\n    init_config_overrides: \"{{ neutron_metering_agent_init_overrides }}\"\n    start_order: 3\n  neutron-l3-agent:\n    group: neutron_l3_agent\n    service_name: neutron-l3-agent\n    service_en: \"{{ neutron_l3 | bool }}\"\n    service_conf_path: \"{{ neutron_conf_version_dir }}\"\n    service_conf: l3_agent.ini\n    service_rootwrap: rootwrap.d/l3.filters\n    environment:\n      PATH: \"{{ neutron_bin }}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"\n    execstarts: \"{{ neutron_bin }}/neutron-l3-agent --config-file {{ neutron_conf_dir }}/neutron.conf --config-file {{ neutron_conf_dir }}/l3_agent.ini\"\n    config_overrides: \"{{ neutron_l3_agent_ini_overrides }}\"\n    config_type: \"ini\"\n    init_config_overrides: \"{{ _neutron_l3_agent_init_defaults | combine(neutron_l3_agent_init_overrides, recursive=True) }}\"\n    start_order: 3\n  neutron-bgp-dragent:\n    group: neutron_bgp_dragent\n    service_name: neutron-bgp-dragent\n    service_en: \"{{ neutron_bgp | bool }}\"\n    service_conf_path: \"{{ neutron_conf_version_dir }}\"\n    service_conf: bgp_dragent.ini\n    execstarts: >-\n      {{ neutron_bin }}/neutron-bgp-dragent --config-file {{ neutron_conf_dir }}/neutron.conf --config-file {{ neutron_conf_dir }}/bgp_dragent.ini\n    config_overrides: \"{{ neutron_bgp_dragent_ini_overrides }}\"\n    config_type: \"ini\"\n    init_config_overrides: \"{{ neutron_bgp_dragent_init_overrides }}\"\n    start_order: 3\n  neutron-server:\n    group: neutron_server\n    service_name: neutron-server\n    service_en: true\n    start_order: 1\n    wsgi_app: true\n    uwsgi_overrides: \"{{ neutron_api_uwsgi_ini_overrides }}\"\n    uwsgi_bind_address: \"{{ neutron_api_bind_address }}\"\n    uwsgi_port: \"{{ neutron_service_port }}\"\n    uwsgi_tls: \"{{ neutron_backend_ssl | ternary(neutron_uwsgi_tls, {}) }}\"\n    uwsgi_pyargv: >-\n      --config-file {{ neutron_conf_dir }}/neutron.conf --config-file {{ neutron_conf_dir }}/{{ neutron_plugins[neutron_plugin_type].plugin_ini }}\n      {% if ('ml2.genericswitch' in neutron_plugin_types) -%}\n      --config-file {{ neutron_conf_dir }}/{{ neutron_plugins['ml2.genericswitch'].plugin_ini }}\n      {% endif %}\n    wsgi: \"neutron.wsgi.api:application\"\n    execstarts: >-\n      {{ neutron_bin }}/neutron-server --config-file {{ neutron_conf_dir }}/neutron.conf\n      --config-file {{ neutron_conf_dir }}/{{ neutron_plugins[neutron_plugin_type].plugin_ini }}\n      {% if ('ml2.genericswitch' in neutron_plugin_types) -%}\n      --config-file {{ neutron_conf_dir }}/{{ neutron_plugins['ml2.genericswitch'].plugin_ini }}\n      {% endif %}\n    init_config_overrides: \"{{ neutron_server_init_overrides }}\"\n  neutron-rpc-server:\n    group: neutron_server\n    service_name: neutron-rpc-server\n    service_en: true\n    enabled: true\n    state: started\n    init_config_overrides: \"{{ neutron_rpc_server_init_overrides | combine(neutron_server_init_overrides) }}\"\n    start_order: 2\n    execstarts: >-\n      {{ neutron_bin }}/neutron-rpc-server --config-file {{ neutron_conf_dir }}/neutron.conf\n      --config-file {{ neutron_conf_dir }}/{{ neutron_plugins[neutron_plugin_type].plugin_ini }}\n      {% if ('ml2.genericswitch' in neutron_plugin_types) -%}\n      --config-file {{ neutron_conf_dir }}/{{ neutron_plugins['ml2.genericswitch'].plugin_ini }}\n      {% endif %}\n  neutron-periodic-workers:\n    group: neutron_server\n    service_name: neutron-periodic-workers\n    service_en: true\n    enabled: true\n    state: started\n    init_config_overrides: \"{{ neutron_periodic_workers_init_overrides | combine(neutron_server_init_overrides) }}\"\n    start_order: 2\n    execstarts: >-\n      {{ neutron_bin }}/neutron-periodic-workers --config-file {{ neutron_conf_dir }}/neutron.conf\n      --config-file {{ neutron_conf_dir }}/{{ neutron_plugins[neutron_plugin_type].plugin_ini }}\n      {% if ('ml2.genericswitch' in neutron_plugin_types) -%}\n      --config-file {{ neutron_conf_dir }}/{{ neutron_plugins['ml2.genericswitch'].plugin_ini }}\n      {% endif %}\n  neutron-ovn-maintenance-worker:\n    group: neutron_server\n    service_name: neutron-ovn-maintenance-worker\n    service_en: \"{{ neutron_plugin_type == 'ml2.ovn' }}\"\n    enabled: \"{{ neutron_plugin_type == 'ml2.ovn' }}\"\n    state: \"{{ (neutron_plugin_type == 'ml2.ovn') | ternary('started', 'stopped') }}\"\n    init_config_overrides: \"{{ neutron_ovn_maintenance_init_overrides | combine(neutron_server_init_overrides) }}\"\n    start_order: 2\n    execstarts: >-\n      {{ neutron_bin }}/neutron-ovn-maintenance-worker --config-file {{ neutron_conf_dir }}/neutron.conf\n      --config-file {{ neutron_conf_dir }}/{{ neutron_plugins[neutron_plugin_type].plugin_ini }}\n  neutron-sriov-nic-agent:\n    group: neutron_sriov_nic_agent\n    service_name: neutron-sriov-nic-agent\n    service_en: \"{{ 'ml2.sriov' in neutron_plugin_types }}\"\n    service_conf_path: \"{{ neutron_conf_version_dir }}\"\n    service_conf: plugins/ml2/sriov_nic_agent.ini\n    execstarts: >-\n      {{ neutron_bin }}/neutron-sriov-nic-agent --config-file {{ neutron_conf_dir }}/neutron.conf\n      --config-file {{ neutron_conf_dir }}/plugins/ml2/ml2_conf.ini --config-file {{ neutron_conf_dir }}/plugins/ml2/sriov_nic_agent.ini\n    config_overrides: \"{{ neutron_sriov_nic_agent_ini_overrides }}\"\n    config_type: \"ini\"\n    init_config_overrides: \"{{ neutron_sriov_nic_agent_init_overrides }}\"\n    start_order: 3\n  neutron-ovn-northd:\n    group: neutron_ovn_northd\n    service_en: false\n  neutron-ovn-controller:\n    group: neutron_ovn_controller\n    service_en: false\n  neutron-ovn-bgp-agent:\n    group: \"{{ neutron_ovn_bgp_agent_group }}\"\n    systemd_lock_dir: /run/lock/ovn-bgp-agent\n    service_name: neutron-ovn-bgp-agent\n    service_en: \"{{ (neutron_plugin_type == 'ml2.ovn') and neutron_ovn_bgp_enable | bool }}\"\n    service_conf_path: \"{{ neutron_conf_version_dir }}\"\n    service_conf: neutron_ovn_bgp_agent.ini\n    service_rootwrap: rootwrap.d/ovn-bgp.filters\n    execstarts: \"{{ neutron_bin }}/ovn-bgp-agent --config-file {{ neutron_conf_dir }}/neutron_ovn_bgp_agent.ini\"\n    config_overrides: \"{{ neutron_ovn_bgp_agent_ini_overrides }}\"\n    config_type: \"ini\"\n    init_config_overrides: \"{{ neutron_ovn_bgp_agent_init_overrides }}\"\n    start_order: 4\n  neutron-ovn-metadata-agent:\n    group: neutron_ovn_controller\n    systemd_lock_dir: /run/lock/neutron-ovn-metadata\n    service_name: neutron-ovn-metadata-agent\n    service_en: \"{{ neutron_plugin_type == 'ml2.ovn' }}\"\n    service_conf_path: \"{{ neutron_conf_version_dir }}\"\n    service_conf: neutron_ovn_metadata_agent.ini\n    service_rootwrap: rootwrap.d/ovn-plugin.filters\n    execstarts: >-\n      {{ neutron_bin }}/neutron-ovn-metadata-agent --config-file {{ neutron_conf_dir }}/neutron.conf\n      --config-file {{ neutron_conf_dir }}/plugins/ml2/ml2_conf.ini --config-file {{ neutron_conf_dir }}/neutron_ovn_metadata_agent.ini\n    config_overrides: \"{{ neutron_ovn_metadata_agent_ini_overrides }}\"\n    config_type: \"ini\"\n    init_config_overrides: \"{{ neutron_ovn_metadata_agent_init_overrides }}\"\n    start_order: 3\n  neutron-ovn-vpn-agent:\n    group: neutron_ovn_gateway\n    systemd_lock_dir: /run/lock/neutron-ovn-vpn-agent\n    service_name: neutron-ovn-vpn-agent\n    service_en: \"{{ neutron_vpnaas and neutron_plugin_type == 'ml2.ovn' }}\"\n    service_conf_path: \"{{ neutron_conf_version_dir }}\"\n    service_conf: neutron_ovn_vpn_agent.ini\n    service_rootwrap: rootwrap.d/vpnaas.filters\n    execstarts: >-\n      {{ neutron_bin }}/neutron-ovn-vpn-agent --config-file {{ neutron_conf_dir }}/neutron.conf\n      --config-file {{ neutron_conf_dir }}/neutron_ovn_vpn_agent.ini\n    config_overrides: \"{{ neutron_ovn_vpn_agent_overrides }}\"\n    config_type: \"ini\"\n    init_config_overrides: \"{{ neutron_ovn_vpn_agent_init_overrides }}\"\n    start_order: 4\n  ironic-neutron-agent:\n    group: ironic_neutron_agent\n    service_name: ironic-neutron-agent\n    service_en: \"{{ 'ml2.baremetal' in neutron_plugin_types }}\"\n    service_conf_path: \"{{ neutron_conf_version_dir }}\"\n    service_conf: plugins/ml2/ironic_neutron_agent.ini\n    execstarts: >-\n      {{ neutron_bin }}/ironic-neutron-agent --config-file {{ neutron_conf_dir }}/neutron.conf\n      --config-file {{ neutron_conf_dir }}/plugins/ml2/ml2_conf.ini --config-file {{ neutron_conf_dir }}/plugins/ml2/ironic_neutron_agent.ini\n    config_overrides: \"{{ neutron_ironic_neutron_agent_ini_overrides }}\"\n    config_type: \"ini\"\n    init_config_overrides: \"{{ neutron_ironic_neutron_agent_init_overrides }}\"\n    start_order: 3\n\n###\n### Overrides for services where required\n###\n\n# Ensure that keepalived processes are not stopped on exit\n_neutron_l3_agent_init_defaults:\n  Service:\n    KillMode: process\n\n###\n### Internals: Drivers mappings\n###\n\nneutron_driver_network_scheduler: neutron.scheduler.dhcp_agent_scheduler.WeightScheduler\nneutron_driver_router_scheduler: neutron.scheduler.l3_agent_scheduler.LeastRoutersScheduler\nneutron_driver_metering: neutron.services.metering.drivers.iptables.iptables_driver.IptablesMeteringDriver\nneutron_driver_dhcp: neutron.agent.linux.dhcp.Dnsmasq\nneutron_driver_quota: neutron.db.quota.driver.DbQuotaDriver\n\n###\n### Internals: py_pkgs\n###\n\n# This variable is used by the repo_build process to determine\n# which host group to check for members of before building the\n# pip packages required by this role. The value is picked up\n# by the py_pkgs lookup.\nneutron_role_project_group: neutron_all\n\n###\n### Internals: files central to neutron we can override\n###\n\nneutron_core_files:\n  - tmp_f: \"/tmp/api-paste.ini.original\"\n    target_f: \"{{ neutron_conf_version_dir }}/api-paste.ini\"\n    config_overrides: \"{{ neutron_api_paste_ini_overrides }}\"\n    config_type: \"ini\"\n  - tmp_f: \"/tmp/rootwrap.conf.original\"\n    target_f: \"{{ neutron_conf_version_dir }}/rootwrap.conf\"\n    config_overrides: \"{{ _neutron_rootwrap_conf_overrides | combine(neutron_rootwrap_conf_overrides, recursive=True) }}\"\n    config_type: \"ini\"\n    owner: \"root\"\n    group: \"{{ neutron_system_group_name }}\"\n    mode: \"0640\"\n","created":"2025-12-08T13:39:58.052935Z","updated":"2025-12-08T13:39:58.052965Z","path":"/home/zuul/src/opendev.org/openstack/openstack-ansible-os_neutron/vars/main.yml"}