Sample Configuration File

The following is a sample ironic-neutron-agent configuration for adaptation and use. For a detailed overview of all available configuration options, refer to ironic-neutron-agent - Configuration Options.

The sample configuration can also be viewed in file form.

Important

The sample configuration file is auto-generated from networking-baremetal when this documentation is built. You must ensure your version of networking-baremetal matches the version of this documentation.

[DEFAULT]

#
# From oslo.log
#

# If set to true, the logging level will be set to DEBUG instead of the default
# INFO level. (boolean value)
# Note: This option can be changed without restarting.
#debug = false

# The name of a logging configuration file. This file is appended to any
# existing logging configuration files. For details about logging configuration
# files, see the Python logging module documentation. Note that when logging
# configuration files are used then all logging configuration is set in the
# configuration file and other logging configuration options are ignored (for
# example, log-date-format). (string value)
# Note: This option can be changed without restarting.
# Deprecated group/name - [DEFAULT]/log_config
#log_config_append = <None>

# Defines the format string for %%(asctime)s in log records. Default:
# %(default)s . This option is ignored if log_config_append is set. (string
# value)
#log_date_format = %Y-%m-%d %H:%M:%S

# (Optional) Name of log file to send logging output to. If no default is set,
# logging will go to stderr as defined by use_stderr. This option is ignored if
# log_config_append is set. (string value)
# Deprecated group/name - [DEFAULT]/logfile
#log_file = <None>

# (Optional) The base directory used for relative log_file  paths. This option
# is ignored if log_config_append is set. (string value)
# Deprecated group/name - [DEFAULT]/logdir
#log_dir = <None>

# Use syslog for logging. Existing syslog format is DEPRECATED and will be
# changed later to honor RFC5424. This option is ignored if log_config_append
# is set. (boolean value)
#use_syslog = false

# Enable journald for logging. If running in a systemd environment you may wish
# to enable journal support. Doing so will use the journal native protocol
# which includes structured metadata in addition to log messages.This option is
# ignored if log_config_append is set. (boolean value)
#use_journal = false

# Syslog facility to receive log lines. This option is ignored if
# log_config_append is set. (string value)
#syslog_log_facility = LOG_USER

# Use JSON formatting for logging. This option is ignored if log_config_append
# is set. (boolean value)
#use_json = false

# Log output to standard error. This option is ignored if log_config_append is
# set. (boolean value)
#use_stderr = false

# (Optional) Set the 'color' key according to log levels. This option takes
# effect only when logging to stderr or stdout is used. This option is ignored
# if log_config_append is set. (boolean value)
#log_color = false

# The amount of time before the log files are rotated. This option is ignored
# unless log_rotation_type is set to "interval". (integer value)
#log_rotate_interval = 1

# Rotation interval type. The time of the last file change (or the time when
# the service was started) is used when scheduling the next rotation. (string
# value)
# Possible values:
# Seconds - <No description provided>
# Minutes - <No description provided>
# Hours - <No description provided>
# Days - <No description provided>
# Weekday - <No description provided>
# Midnight - <No description provided>
#log_rotate_interval_type = days

# Maximum number of rotated log files. (integer value)
#max_logfile_count = 30

# Log file maximum size in MB. This option is ignored if "log_rotation_type" is
# not set to "size". (integer value)
#max_logfile_size_mb = 200

# Log rotation type. (string value)
# Possible values:
# interval - Rotate logs at predefined time intervals.
# size - Rotate logs once they reach a predefined size.
# none - Do not rotate log files.
#log_rotation_type = none

# Format string to use for log messages with context. Used by
# oslo_log.formatters.ContextFormatter (string value)
#logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(global_request_id)s %(request_id)s %(user_identity)s] %(instance)s%(message)s

# Format string to use for log messages when context is undefined. Used by
# oslo_log.formatters.ContextFormatter (string value)
#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s

# Additional data to append to log message when logging level for the message
# is DEBUG. Used by oslo_log.formatters.ContextFormatter (string value)
#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d

# Prefix each line of exception output with this format. Used by
# oslo_log.formatters.ContextFormatter (string value)
#logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s

# Defines the format string for %(user_identity)s that is used in
# logging_context_format_string. Used by oslo_log.formatters.ContextFormatter
# (string value)
#logging_user_identity_format = %(user)s %(project)s %(domain)s %(system_scope)s %(user_domain)s %(project_domain)s

# List of package logging levels in logger=LEVEL pairs. This option is ignored
# if log_config_append is set. (list value)
#default_log_levels = amqp=WARN,boto=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,oslo_messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN,taskflow=WARN,keystoneauth=WARN,oslo.cache=INFO,oslo_policy=INFO,dogpile.core.dogpile=INFO

# Enables or disables publication of error events. (boolean value)
#publish_errors = false

# The format for an instance that is passed with the log message. (string
# value)
#instance_format = "[instance: %(uuid)s] "

# The format for an instance UUID that is passed with the log message. (string
# value)
#instance_uuid_format = "[instance: %(uuid)s] "

# Interval, number of seconds, of log rate limiting. (integer value)
#rate_limit_interval = 0

# Maximum number of logged messages per rate_limit_interval. (integer value)
#rate_limit_burst = 0

# Log level name used by rate limiting. Logs with level greater or equal to
# rate_limit_except_level are not filtered. An empty string means that all
# levels are filtered. (string value)
# Possible values:
# CRITICAL - <No description provided>
# ERROR - <No description provided>
# INFO - <No description provided>
# WARNING - <No description provided>
# DEBUG - <No description provided>
# '' - <No description provided>
#rate_limit_except_level = CRITICAL

# Enables or disables fatal status of deprecations. (boolean value)
#fatal_deprecations = false


[agent]

#
# From ironic-neutron-agent
#

# Seconds between nodes reporting state to server; should be less than
# agent_down_time, best if it is half or less than agent_down_time. (floating
# point value)
#report_interval = 30

# Log agent heartbeats (boolean value)
#log_agent_heartbeats = false


[baremetal_agent]

#
# From ironic-neutron-agent
#

# Enable HA chassis group alignment reconciliation for router ports on networks
# with baremetal external ports. This fixes Launchpad bug #1995078 where
# mismatched HA chassis group priorities between router gateway ports and
# baremetal external ports cause intermittent connectivity issues. When
# enabled, the agent ensures router ports use the same ha_chassis_group as
# baremetal external ports on the same network. (boolean value)
#enable_ha_chassis_group_alignment = true

# Interval in seconds between HA chassis group alignment reconciliation runs.
# This controls how frequently the agent checks for and fixes mismatched HA
# chassis groups. Default is 600 seconds (10 minutes). Minimum is 60 seconds to
# avoid excessive API load. (integer value)
# Minimum value: 60
#ha_chassis_group_alignment_interval = 600

# When enabled, HA chassis group alignment only checks resources created or
# updated within the time window specified by
# ha_chassis_group_alignment_window. This reduces reconciliation overhead by
# focusing on recently created resources that may have mismatched HA chassis
# groups. When disabled, performs full reconciliation of all resources on each
# run, which is more thorough but has higher API and database load. (boolean
# value)
#limit_ha_chassis_group_alignment_to_recent_changes_only = true

# Time window in seconds for checking recent resources when
# limit_ha_chassis_group_alignment_to_recent_changes_only is enabled. Default
# is 1200 seconds (20 minutes), which is 2x the default alignment interval.
# Resources created or updated within this window will be checked for HA
# chassis group alignment. Setting to 0 effectively disables windowing even if
# the limit flag is enabled. (integer value)
# Minimum value: 0
#ha_chassis_group_alignment_window = 1200


[ironic]

#
# From ironic-client
#

# DEPRECATED: Method to use for authentication: noauth or keystone. (string
# value)
# Possible values:
# keystone - <No description provided>
# noauth - <No description provided>
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
# Reason: This option is no longer used, please use the [ironic]/auth_type
# option instead.
#auth_strategy = keystone

# The default service_type for endpoint URL discovery. (string value)
#service_type = <None>

# The default service_name for endpoint URL discovery. (string value)
#service_name = <None>

# List of interfaces, in order of preference, for endpoint URL. (list value)
#valid_interfaces = <None>

# The default region_name for endpoint URL discovery. (string value)
# Deprecated group/name - [ironic]/os_region
#region_name = <None>

# Always use this endpoint URL for requests for this client. NOTE: The
# unversioned endpoint should be specified here; to request a particular API
# version, use the `version`, `min-version`, and/or `max-version` options.
# (string value)
# Deprecated group/name - [ironic]/ironic_url
#endpoint_override = <None>

# Minimum Major API version within a given Major API version for endpoint URL
# discovery. Mutually exclusive with min_version and max_version (string value)
#version = <None>

# The minimum major version of a given API, intended to be used as the lower
# bound of a range with max_version. Mutually exclusive with version. If
# min_version is given with no max_version it is as if max version is "latest".
# (string value)
#min_version = <None>

# The maximum major version of a given API, intended to be used as the upper
# bound of a range with min_version. Mutually exclusive with version. (string
# value)
#max_version = <None>

# The maximum number of retries that should be attempted for connection errors.
# (integer value)
#connect_retries = <None>

# Delay (in seconds) between two retries for connection errors. If not set,
# exponential retry starting with 0.5 seconds up to a maximum of 60 seconds is
# used. (floating point value)
#connect_retry_delay = <None>

# The maximum number of retries that should be attempted for retriable HTTP
# status codes. (integer value)
# Deprecated group/name - [ironic]/max_retries
#status_code_retries = <None>

# Delay (in seconds) between two retries for retriable status codes. If not
# set, exponential retry starting with 0.5 seconds up to a maximum of 60
# seconds is used. (floating point value)
# Deprecated group/name - [ironic]/retry_interval
#status_code_retry_delay = <None>

# List of retriable HTTP status codes that should be retried. If not set
# default to  [503] (list value)
#retriable_status_codes = <None>

# DEPRECATED: The default interface for endpoint URL discovery. (string value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
# Reason: Using valid-interfaces is preferrable because it is capable of
# accepting a list of possible interfaces.
#interface = <None>

# PEM encoded Certificate Authority to use when verifying HTTPs connections.
# (string value)
#cafile = <None>

# PEM encoded client certificate cert file (string value)
#certfile = <None>

# PEM encoded client certificate key file (string value)
#keyfile = <None>

# Verify HTTPS connections. (boolean value)
#insecure = false

# Timeout value for http requests (integer value)
#timeout = <None>

# Collect per-API call timing information. (boolean value)
#collect_timing = false

# Log requests to multiple loggers. (boolean value)
#split_loggers = false

# Authentication URL (string value)
#auth_url = <None>

# Scope for system operations (string value)
#system_scope = <None>

# Domain ID to scope to (string value)
#domain_id = <None>

# Domain name to scope to (string value)
#domain_name = <None>

# Project ID to scope to (string value)
#project_id = <None>

# Project name to scope to (string value)
#project_name = <None>

# Domain ID containing project (string value)
#project_domain_id = <None>

# Domain name containing project (string value)
#project_domain_name = <None>

# ID of the trust to use as a trustee use (string value)
#trust_id = <None>

# User's user ID (string value)
#user_id = <None>

# User's username (string value)
# Deprecated group/name - [ironic]/user_name
#username = <None>

# User's domain ID (string value)
#user_domain_id = <None>

# User's domain name (string value)
#user_domain_name = <None>

# User's password (string value)
#password = <None>


[l2vni]

#
# From ironic-neutron-agent
#

# Enable L2VNI trunk port reconciliation based on OVN ha_chassis_group
# membership. When enabled, the agent will automatically manage trunk subports
# for network nodes to ensure only required VLANs are trunked to each chassis.
# This feature creates anchor ports and trunk configurations to bridge overlay
# networks to physical network infrastructure. (boolean value)
#enable_l2vni_trunk_reconciliation = true

# Interval in seconds between L2VNI trunk reconciliation runs. Default is 180
# seconds (3 minutes). (integer value)
# Minimum value: 30
#l2vni_reconciliation_interval = 180

# Path to YAML file containing network node trunk port configuration. Used as
# fallback when trunk configuration is not available from OVN LLDP data or
# Ironic. The file should define system_id, physical_network, and
# local_link_connection information for each network node. (string value)
#l2vni_network_nodes_config = /etc/neutron/l2vni_network_nodes.yaml

# Automatically create Neutron networks for ha_chassis_groups and subport
# anchors if they do not exist. These networks are used for metadata and
# modeling, not for passing traffic. If disabled, networks must be pre-created
# with names matching the expected patterns. (boolean value)
#l2vni_auto_create_networks = true

# Name of the shared network used for all trunk subports. This network is used
# to signal VLAN bindings to ML2 switch plugins and does not pass actual
# traffic. Will be auto-created if l2vni_auto_create_networks is enabled.
# (string value)
#l2vni_subport_anchor_network = l2vni-subport-anchor

# Network type to use for L2VNI anchor networks (both subport anchor and
# ha_chassis_group networks). These networks are used for metadata and modeling
# only, not for passing traffic. Must match the overlay network type configured
# in your environment. If the specified type is not available, network creation
# will fail with an error rather than falling back to an alternative type.
# (string value)
# Possible values:
# geneve - <No description provided>
# vxlan - <No description provided>
#l2vni_subport_anchor_network_type = geneve

# Maximum random delay in seconds to add to initial reconciliation start time.
# This prevents thundering herd issues when multiple agents restart
# simultaneously (e.g., post-upgrade). A value of 60 means each agent will
# start reconciliation within 0-60 seconds of startup. (integer value)
# Minimum value: 0
#l2vni_startup_jitter_max = 60

# OVN Northbound database connection string(s). For HA deployments, specify
# multiple comma-separated connection strings. Used to query ha_chassis_groups,
# logical switches, and router ports for L2VNI trunk reconciliation. If not
# specified, reads from [ovn] ovn_nb_connection (shared with Neutron ML2).
# Defaults to tcp:127.0.0.1:6641 if neither is configured. (list value)
#ovn_nb_connection = <None>

# OVN Southbound database connection string(s). For HA deployments, specify
# multiple comma-separated connection strings. Used to query chassis
# information and LLDP data for L2VNI trunk reconciliation. If not specified,
# reads from [ovn] ovn_sb_connection (shared with Neutron ML2). Defaults to
# tcp:127.0.0.1:6642 if neither is configured. (list value)
#ovn_sb_connection = <None>

# Timeout in seconds for OVN OVSDB connections. If not specified, reads from
# [ovn] ovsdb_connection_timeout (shared with Neutron ML2). Defaults to 180 if
# neither is configured. (integer value)
#ovn_ovsdb_timeout = <None>

# Time-to-live in seconds for cached Ironic node and port data. Each system_id
# entry is cached independently and expires after this duration from when it
# was fetched. This avoids thundering herd issues when multiple agents are
# running. A small amount of jitter (10-20%%) is automatically added to spread
# cache refresh times. Default is 3600 seconds (1 hour). Minimum is 300 seconds
# (5 minutes) to avoid excessive API load. (integer value)
# Minimum value: 300
#ironic_cache_ttl = 3600

# Ironic conductor group to filter nodes when querying for
# local_link_connection data. This allows the agent to only query nodes managed
# by a specific conductor group, reducing API load in large deployments. If not
# specified, all nodes are queried. (string value)
#ironic_conductor_group = <None>

# Ironic shard to filter nodes when querying for local_link_connection data.
# This allows the agent to only query nodes in a specific shard, reducing API
# load in large sharded deployments. If not specified, all nodes are queried.
# (string value)
#ironic_shard = <None>


[neutron]

#
# From ironic-neutron-agent
#

# The default service_type for endpoint URL discovery. (string value)
#service_type = <None>

# The default service_name for endpoint URL discovery. (string value)
#service_name = <None>

# List of interfaces, in order of preference, for endpoint URL. (list value)
#valid_interfaces = <None>

# The default region_name for endpoint URL discovery. (string value)
#region_name = <None>

# Always use this endpoint URL for requests for this client. NOTE: The
# unversioned endpoint should be specified here; to request a particular API
# version, use the `version`, `min-version`, and/or `max-version` options.
# (string value)
#endpoint_override = <None>

# Minimum Major API version within a given Major API version for endpoint URL
# discovery. Mutually exclusive with min_version and max_version (string value)
#version = <None>

# The minimum major version of a given API, intended to be used as the lower
# bound of a range with max_version. Mutually exclusive with version. If
# min_version is given with no max_version it is as if max version is "latest".
# (string value)
#min_version = <None>

# The maximum major version of a given API, intended to be used as the upper
# bound of a range with min_version. Mutually exclusive with version. (string
# value)
#max_version = <None>

# The maximum number of retries that should be attempted for connection errors.
# (integer value)
#connect_retries = <None>

# Delay (in seconds) between two retries for connection errors. If not set,
# exponential retry starting with 0.5 seconds up to a maximum of 60 seconds is
# used. (floating point value)
#connect_retry_delay = <None>

# The maximum number of retries that should be attempted for retriable HTTP
# status codes. (integer value)
#status_code_retries = <None>

# Delay (in seconds) between two retries for retriable status codes. If not
# set, exponential retry starting with 0.5 seconds up to a maximum of 60
# seconds is used. (floating point value)
#status_code_retry_delay = <None>

# List of retriable HTTP status codes that should be retried. If not set
# default to  [503] (list value)
#retriable_status_codes = <None>

# DEPRECATED: The default interface for endpoint URL discovery. (string value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
# Reason: Using valid-interfaces is preferrable because it is capable of
# accepting a list of possible interfaces.
#interface = <None>

# PEM encoded Certificate Authority to use when verifying HTTPs connections.
# (string value)
#cafile = <None>

# PEM encoded client certificate cert file (string value)
#certfile = <None>

# PEM encoded client certificate key file (string value)
#keyfile = <None>

# Verify HTTPS connections. (boolean value)
#insecure = false

# Timeout value for http requests (integer value)
#timeout = <None>

# Collect per-API call timing information. (boolean value)
#collect_timing = false

# Log requests to multiple loggers. (boolean value)
#split_loggers = false

# Authentication URL (string value)
#auth_url = <None>

# Scope for system operations (string value)
#system_scope = <None>

# Domain ID to scope to (string value)
#domain_id = <None>

# Domain name to scope to (string value)
#domain_name = <None>

# Project ID to scope to (string value)
#project_id = <None>

# Project name to scope to (string value)
#project_name = <None>

# Domain ID containing project (string value)
#project_domain_id = <None>

# Domain name containing project (string value)
#project_domain_name = <None>

# ID of the trust to use as a trustee use (string value)
#trust_id = <None>

# User's user ID (string value)
#user_id = <None>

# User's username (string value)
# Deprecated group/name - [neutron]/user_name
#username = <None>

# User's domain ID (string value)
#user_domain_id = <None>

# User's domain name (string value)
#user_domain_name = <None>

# User's password (string value)
#password = <None>