# keystone.conf

Use the `keystone.conf` file to configure most Identity service options. This sample configuration can also be viewed in raw format.

    [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>

    # Uses logging handler designed to watch file system. When log file is moved or
    # removed this handler will open a new log file with specified path
    # instantaneously. It makes sense only if log_file option is specified and
    # Linux platform is used. This option is ignored if log_config_append is set.
    # (boolean value)
    #watch_log_file = false

    # 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

    # DEPRECATED: Log output to Windows Event Log. (boolean value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason: Windows support is no longer maintained.
    #use_eventlog = 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,amqplib=WARN,boto=WARN,qpid=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: CRITICAL, ERROR, INFO, WARNING, DEBUG
    # or empty string. 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)
    #rate_limit_except_level = CRITICAL

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

    #
    # From oslo.messaging
    #

    # Size of RPC connection pool. (integer value)
    # Minimum value: 1
    #rpc_conn_pool_size = 30

    # The pool size limit for connections expiration policy (integer value)
    #conn_pool_min_size = 2

    # The time-to-live in sec of idle connections in the pool (integer value)
    #conn_pool_ttl = 1200

    # Size of executor thread pool when executor is threading or eventlet. (integer
    # value)
    # Deprecated group/name - [DEFAULT]/rpc_thread_pool_size
    #executor_thread_pool_size = 64

    # Seconds to wait for a response from a call. (integer value)
    #rpc_response_timeout = 60

    # The network address and optional user credentials for connecting to the
    # messaging backend, in URL format. The expected format is:
    #
    # driver://[user:pass@]host:port[,[userN:passN@]hostN:portN]/virtual_host?query
    #
    # Example: rabbit://rabbitmq:password@127.0.0.1:5672//
    #
    # For full details on the fields in the URL see the documentation of
    # oslo_messaging.TransportURL at
    # https://docs.openstack.org/oslo.messaging/latest/reference/transport.html
    # (string value)
    #transport_url = rabbit://

    # The default exchange under which topics are scoped. May be overridden by an
    # exchange name specified in the transport_url option. (string value)
    #control_exchange = openstack

    # Add an endpoint to answer to ping calls. Endpoint is named
    # oslo_rpc_server_ping (boolean value)
    #rpc_ping_enabled = false

    [cache]

    #
    # From oslo.cache
    #

    # Prefix for building the configuration dictionary for the cache region. This
    # should not need to be changed unless there is another dogpile.cache region
    # with the same configuration name. (string value)
    #config_prefix = cache.oslo

    # Default TTL, in seconds, for any cached item in the dogpile.cache region.
    # This applies to any cached method that doesn't have an explicit cache
    # expiration time defined for it. (integer value)
    #expiration_time = 600

    # Cache backend module. For eventlet-based or environments with hundreds of
    # threaded servers, Memcache with pooling (oslo_cache.memcache_pool) is
    # recommended. For environments with less than 100 threaded servers, Memcached
    # (dogpile.cache.memcached) or Redis (dogpile.cache.redis) is recommended. Test
    # environments with a single instance of the server can use the
    # dogpile.cache.memory backend. (string value)
    # Possible values:
    # oslo_cache.memcache_pool - <No description provided>
    # oslo_cache.dict - <No description provided>
    # oslo_cache.mongo - <No description provided>
    # oslo_cache.etcd3gw - <No description provided>
    # dogpile.cache.pymemcache - <No description provided>
    # dogpile.cache.memcached - <No description provided>
    # dogpile.cache.pylibmc - <No description provided>
    # dogpile.cache.bmemcached - <No description provided>
    # dogpile.cache.dbm - <No description provided>
    # dogpile.cache.redis - <No description provided>
    # dogpile.cache.redis_sentinel - <No description provided>
    # dogpile.cache.memory - <No description provided>
    # dogpile.cache.memory_pickle - <No description provided>
    # dogpile.cache.null - <No description provided>
    #backend = dogpile.cache.null

    # Arguments supplied to the backend module. Specify this option once per
    # argument to be passed to the dogpile.cache backend. Example format:
    # "<argname>:<value>". (multi valued)
    #backend_argument =

    # Proxy classes to import that will affect the way the dogpile.cache backend
    # functions. See the dogpile.cache documentation on changing-backend-behavior.
    # (list value)
    #proxies =

    # Global toggle for caching. (boolean value)
    #enabled = false

    # Extra debugging from the cache backend (cache keys, get/set/delete/etc
    # calls). This is only really useful if you need to see the specific cache-
    # backend get/set/delete calls with the keys/values.  Typically this should be
    # left set to false. (boolean value)
    #debug_cache_backend = false

    # Memcache servers in the format of "host:port". This is used by backends
    # dependent on Memcached.If ``dogpile.cache.memcached`` or
    # ``oslo_cache.memcache_pool`` is used and a given host refer to an IPv6 or a
    # given domain refer to IPv6 then you should prefix the given address with the
    # address family (``inet6``) (e.g ``inet6[::1]:11211``,
    # ``inet6:[fd12:3456:789a:1::1]:11211``,
    # ``inet6:[controller-0.internalapi]:11211``). If the address family is not
    # given then these backends will use the default ``inet`` address family which
    # corresponds to IPv4 (list value)
    #memcache_servers = localhost:11211

    # Number of seconds memcached server is considered dead before it is tried
    # again. (dogpile.cache.memcache and oslo_cache.memcache_pool backends only).
    # (integer value)
    #memcache_dead_retry = 300

    # Timeout in seconds for every call to a server. (dogpile.cache.memcache and
    # oslo_cache.memcache_pool backends only). (floating point value)
    #memcache_socket_timeout = 1.0

    # Max total number of open connections to every memcached server.
    # (oslo_cache.memcache_pool backend only). (integer value)
    #memcache_pool_maxsize = 10

    # Number of seconds a connection to memcached is held unused in the pool before
    # it is closed. (oslo_cache.memcache_pool backend only). (integer value)
    #memcache_pool_unused_timeout = 60

    # Number of seconds that an operation will wait to get a memcache client
    # connection. (integer value)
    #memcache_pool_connection_get_timeout = 10

    # Global toggle if memcache will be flushed on reconnect.
    # (oslo_cache.memcache_pool backend only). (boolean value)
    #memcache_pool_flush_on_reconnect = false

    # Enable the SASL(Simple Authentication and SecurityLayer) if the SASL_enable
    # is true, else disable. (boolean value)
    #memcache_sasl_enabled = false

    # the user name for the memcached which SASL enabled (string value)
    #memcache_username = <None>

    # the password for the memcached which SASL enabled (string value)
    #memcache_password = <None>

    # Redis server in the format of "host:port" (string value)
    #redis_server = localhost:6379

    # the user name for redis (string value)
    #redis_username = <None>

    # the password for redis (string value)
    #redis_password = <None>

    # Redis sentinel servers in the format of "host:port" (list value)
    #redis_sentinels = localhost:26379

    # Timeout in seconds for every call to a server. (dogpile.cache.redis and
    # dogpile.cache.redis_sentinel backends only). (floating point value)
    #redis_socket_timeout = 1.0

    # Service name of the redis sentinel cluster. (string value)
    #redis_sentinel_service_name = mymaster

    # Global toggle for TLS usage when communicating with the caching servers.
    # Currently supported by ``dogpile.cache.bmemcache``,
    # ``dogpile.cache.pymemcache``, ``oslo_cache.memcache_pool``,
    # ``dogpile.cache.redis`` and ``dogpile.cache.redis_sentinel``. (boolean value)
    #tls_enabled = false

    # Path to a file of concatenated CA certificates in PEM format necessary to
    # establish the caching servers' authenticity. If tls_enabled is False, this
    # option is ignored. (string value)
    #tls_cafile = <None>

    # Path to a single file in PEM format containing the client's certificate as
    # well as any number of CA certificates needed to establish the certificate's
    # authenticity. This file is only required when client side authentication is
    # necessary. If tls_enabled is False, this option is ignored. (string value)
    #tls_certfile = <None>

    # Path to a single file containing the client's private key in. Otherwise the
    # private key will be taken from the file specified in tls_certfile. If
    # tls_enabled is False, this option is ignored. (string value)
    #tls_keyfile = <None>

    # Set the available ciphers for sockets created with the TLS context. It should
    # be a string in the OpenSSL cipher list format. If not specified, all OpenSSL
    # enabled ciphers will be available. Currently supported by
    # ``dogpile.cache.bmemcache``, ``dogpile.cache.pymemcache`` and
    # ``oslo_cache.memcache_pool``. (string value)
    #tls_allowed_ciphers = <None>

    # Global toggle for the socket keepalive of dogpile's pymemcache backend
    # (boolean value)
    #enable_socket_keepalive = false

    # The time (in seconds) the connection needs to remain idle before TCP starts
    # sending keepalive probes. Should be a positive integer most greater than
    # zero. (integer value)
    # Minimum value: 0
    #socket_keepalive_idle = 1

    # The time (in seconds) between individual keepalive probes. Should be a
    # positive integer greater than zero. (integer value)
    # Minimum value: 0
    #socket_keepalive_interval = 1

    # The maximum number of keepalive probes TCP should send before dropping the
    # connection. Should be a positive integer greater than zero. (integer value)
    # Minimum value: 0
    #socket_keepalive_count = 1

    # Enable retry client mechanisms to handle failure. Those mechanisms can be
    # used to wrap all kind of pymemcache clients. The wrapper allows you to define
    # how many attempts to make and how long to wait between attemots. (boolean
    # value)
    #enable_retry_client = false

    # Number of times to attempt an action before failing. (integer value)
    # Minimum value: 1
    #retry_attempts = 2

    # Number of seconds to sleep between each attempt. (floating point value)
    #retry_delay = 0

    # Amount of times a client should be tried before it is marked dead and removed
    # from the pool in the HashClient's internal mechanisms. (integer value)
    # Minimum value: 1
    #hashclient_retry_attempts = 2

    # Time in seconds that should pass between retry attempts in the HashClient's
    # internal mechanisms. (floating point value)
    #hashclient_retry_delay = 1

    # Time in seconds before attempting to add a node back in the pool in the
    # HashClient's internal mechanisms. (floating point value)
    #dead_timeout = 60

    # Global toggle for enforcing the OpenSSL FIPS mode. This feature requires
    # Python support. This is available in Python 3.9 in all environments and may
    # have been backported to older Python versions on select environments. If the
    # Python executable used does not support OpenSSL FIPS mode, an exception will
    # be raised. Currently supported by ``dogpile.cache.bmemcache``,
    # ``dogpile.cache.pymemcache`` and ``oslo_cache.memcache_pool``. (boolean
    # value)
    #enforce_fips_mode = false

    [cors]

    #
    # From oslo.middleware
    #

    # Indicate whether this resource may be shared with the domain received in the
    # requests "origin" header. Format: "<protocol>://<host>[:<port>]", no trailing
    # slash. Example: https://horizon.example.com (list value)
    #allowed_origin = <None>

    # Indicate that the actual request can include user credentials (boolean value)
    #allow_credentials = true

    # Indicate which headers are safe to expose to the API. Defaults to HTTP Simple
    # Headers. (list value)
    #expose_headers =

    # Maximum cache age of CORS preflight requests. (integer value)
    #max_age = 3600

    # Indicate which methods can be used during the actual request. (list value)
    #allow_methods = OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,PATCH

    # Indicate which header field names may be used during the actual request.
    # (list value)
    #allow_headers =

    [database]

    #
    # From oslo.db
    #

    # If True, SQLite uses synchronous mode. (boolean value)
    #sqlite_synchronous = true

    # The back end to use for the database. (string value)
    #backend = sqlalchemy

    # The SQLAlchemy connection string to use to connect to the database. (string
    # value)
    #connection = <None>

    # The SQLAlchemy connection string to use to connect to the slave database.
    # (string value)
    #slave_connection = <None>

    # The SQL mode to be used for MySQL sessions. This option, including the
    # default, overrides any server-set SQL mode. To use whatever SQL mode is set
    # by the server configuration, set this to no value. Example: mysql_sql_mode=
    # (string value)
    #mysql_sql_mode = TRADITIONAL

    # For Galera only, configure wsrep_sync_wait causality checks on new
    # connections.  Default is None, meaning don't configure any setting. (integer
    # value)
    #mysql_wsrep_sync_wait = <None>

    # Connections which have been present in the connection pool longer than this
    # number of seconds will be replaced with a new one the next time they are
    # checked out from the pool. (integer value)
    #connection_recycle_time = 3600

    # Maximum number of SQL connections to keep open in a pool. Setting a value of
    # 0 indicates no limit. (integer value)
    #max_pool_size = 5

    # Maximum number of database connection retries during startup. Set to -1 to
    # specify an infinite retry count. (integer value)
    #max_retries = 10

    # Interval between retries of opening a SQL connection. (integer value)
    #retry_interval = 10

    # If set, use this value for max_overflow with SQLAlchemy. (integer value)
    #max_overflow = 50

    # Verbosity of SQL debugging information: 0=None, 100=Everything. (integer
    # value)
    # Minimum value: 0
    # Maximum value: 100
    #connection_debug = 0

    # Add Python stack traces to SQL as comment strings. (boolean value)
    #connection_trace = false

    # If set, use this value for pool_timeout with SQLAlchemy. (integer value)
    #pool_timeout = <None>

    # Enable the experimental use of database reconnect on connection lost.
    # (boolean value)
    #use_db_reconnect = false

    # Seconds between retries of a database transaction. (integer value)
    #db_retry_interval = 1

    # If True, increases the interval between retries of a database operation up to
    # db_max_retry_interval. (boolean value)
    #db_inc_retry_interval = true

    # If db_inc_retry_interval is set, the maximum seconds between retries of a
    # database operation. (integer value)
    #db_max_retry_interval = 10

    # Maximum retries in case of connection error or deadlock error before error is
    # raised. Set to -1 to specify an infinite retry count. (integer value)
    #db_max_retries = 20

    # Optional URL parameters to append onto the connection URL at connect time;
    # specify as param1=value1&param2=value2&... (string value)
    #connection_parameters =

    [healthcheck]

    #
    # From oslo.middleware
    #

    # DEPRECATED: The path to respond to healtcheck requests on. (string value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    #path = /healthcheck

    # Show more detailed information as part of the response. Security note:
    # Enabling this option may expose sensitive details about the service being
    # monitored. Be sure to verify that it will not violate your security policies.
    # (boolean value)
    #detailed = false

    # Additional backends that can perform health checks and report that
    # information back as part of a request. (list value)
    #backends =

    # A list of network addresses to limit source ip allowed to access healthcheck
    # information. Any request from ip outside of these network addresses are
    # ignored. (list value)
    #allowed_source_ranges =

    # Ignore requests with proxy headers. (boolean value)
    #ignore_proxied_requests = false

    # Check the presence of a file to determine if an application is running on a
    # port. Used by DisableByFileHealthcheck plugin. (string value)
    #disable_by_file_path = <None>

    # Check the presence of a file based on a port to determine if an application
    # is running on a port. Expects a "port:path" list of strings. Used by
    # DisableByFilesPortsHealthcheck plugin. (list value)
    #disable_by_file_paths =

    [oslo_messaging_amqp]

    #
    # From oslo.messaging
    #

    # Name for the AMQP container. must be globally unique. Defaults to a generated
    # UUID (string value)
    #container_name = <None>

    # Timeout for inactive connections (in seconds) (integer value)
    #idle_timeout = 0

    # Debug: dump AMQP frames to stdout (boolean value)
    #trace = false

    # Attempt to connect via SSL. If no other ssl-related parameters are given, it
    # will use the system's CA-bundle to verify the server's certificate. (boolean
    # value)
    #ssl = false

    # CA certificate PEM file used to verify the server's certificate (string
    # value)
    #ssl_ca_file =

    # Self-identifying certificate PEM file for client authentication (string
    # value)
    #ssl_cert_file =

    # Private key PEM file used to sign ssl_cert_file certificate (optional)
    # (string value)
    #ssl_key_file =

    # Password for decrypting ssl_key_file (if encrypted) (string value)
    #ssl_key_password = <None>

    # By default SSL checks that the name in the server's certificate matches the
    # hostname in the transport_url. In some configurations it may be preferable to
    # use the virtual hostname instead, for example if the server uses the Server
    # Name Indication TLS extension (rfc6066) to provide a certificate per virtual
    # host. Set ssl_verify_vhost to True if the server's SSL certificate uses the
    # virtual host name instead of the DNS name. (boolean value)
    #ssl_verify_vhost = false

    # Space separated list of acceptable SASL mechanisms (string value)
    #sasl_mechanisms =

    # Path to directory that contains the SASL configuration (string value)
    #sasl_config_dir =

    # Name of configuration file (without .conf suffix) (string value)
    #sasl_config_name =

    # SASL realm to use if no realm present in username (string value)
    #sasl_default_realm =

    # Seconds to pause before attempting to re-connect. (integer value)
    # Minimum value: 1
    #connection_retry_interval = 1

    # Increase the connection_retry_interval by this many seconds after each
    # unsuccessful failover attempt. (integer value)
    # Minimum value: 0
    #connection_retry_backoff = 2

    # Maximum limit for connection_retry_interval + connection_retry_backoff
    # (integer value)
    # Minimum value: 1
    #connection_retry_interval_max = 30

    # Time to pause between re-connecting an AMQP 1.0 link that failed due to a
    # recoverable error. (integer value)
    # Minimum value: 1
    #link_retry_delay = 10

    # The maximum number of attempts to re-send a reply message which failed due to
    # a recoverable error. (integer value)
    # Minimum value: -1
    #default_reply_retry = 0

    # The deadline for an rpc reply message delivery. (integer value)
    # Minimum value: 5
    #default_reply_timeout = 30

    # The deadline for an rpc cast or call message delivery. Only used when caller
    # does not provide a timeout expiry. (integer value)
    # Minimum value: 5
    #default_send_timeout = 30

    # The deadline for a sent notification message delivery. Only used when caller
    # does not provide a timeout expiry. (integer value)
    # Minimum value: 5
    #default_notify_timeout = 30

    # The duration to schedule a purge of idle sender links. Detach link after
    # expiry. (integer value)
    # Minimum value: 1
    #default_sender_link_timeout = 600

    # Indicates the addressing mode used by the driver.
    # Permitted values:
    # 'legacy'   - use legacy non-routable addressing
    # 'routable' - use routable addresses
    # 'dynamic'  - use legacy addresses if the message bus does not support routing
    # otherwise use routable addressing (string value)
    #addressing_mode = dynamic

    # Enable virtual host support for those message buses that do not natively
    # support virtual hosting (such as qpidd). When set to true the virtual host
    # name will be added to all message bus addresses, effectively creating a
    # private 'subnet' per virtual host. Set to False if the message bus supports
    # virtual hosting using the 'hostname' field in the AMQP 1.0 Open performative
    # as the name of the virtual host. (boolean value)
    #pseudo_vhost = true

    # address prefix used when sending to a specific server (string value)
    #server_request_prefix = exclusive

    # address prefix used when broadcasting to all servers (string value)
    #broadcast_prefix = broadcast

    # address prefix when sending to any server in group (string value)
    #group_request_prefix = unicast

    # Address prefix for all generated RPC addresses (string value)
    #rpc_address_prefix = openstack.org/om/rpc

    # Address prefix for all generated Notification addresses (string value)
    #notify_address_prefix = openstack.org/om/notify

    # Appended to the address prefix when sending a fanout message. Used by the
    # message bus to identify fanout messages. (string value)
    #multicast_address = multicast

    # Appended to the address prefix when sending to a particular RPC/Notification
    # server. Used by the message bus to identify messages sent to a single
    # destination. (string value)
    #unicast_address = unicast

    # Appended to the address prefix when sending to a group of consumers. Used by
    # the message bus to identify messages that should be delivered in a round-
    # robin fashion across consumers. (string value)
    #anycast_address = anycast

    # Exchange name used in notification addresses.
    # Exchange name resolution precedence:
    # Target.exchange if set
    # else default_notification_exchange if set
    # else control_exchange if set
    # else 'notify' (string value)
    #default_notification_exchange = <None>

    # Exchange name used in RPC addresses.
    # Exchange name resolution precedence:
    # Target.exchange if set
    # else default_rpc_exchange if set
    # else control_exchange if set
    # else 'rpc' (string value)
    #default_rpc_exchange = <None>

    # Window size for incoming RPC Reply messages. (integer value)
    # Minimum value: 1
    #reply_link_credit = 200

    # Window size for incoming RPC Request messages (integer value)
    # Minimum value: 1
    #rpc_server_credit = 100

    # Window size for incoming Notification messages (integer value)
    # Minimum value: 1
    #notify_server_credit = 100

    # Send messages of this type pre-settled.
    # Pre-settled messages will not receive acknowledgement
    # from the peer. Note well: pre-settled messages may be
    # silently discarded if the delivery fails.
    # Permitted values:
    # 'rpc-call' - send RPC Calls pre-settled
    # 'rpc-reply'- send RPC Replies pre-settled
    # 'rpc-cast' - Send RPC Casts pre-settled
    # 'notify'   - Send Notifications pre-settled
    #  (multi valued)
    #pre_settled = rpc-cast
    #pre_settled = rpc-reply

    [oslo_messaging_kafka]

    #
    # From oslo.messaging
    #

    # Max fetch bytes of Kafka consumer (integer value)
    #kafka_max_fetch_bytes = 1048576

    # Default timeout(s) for Kafka consumers (floating point value)
    #kafka_consumer_timeout = 1.0

    # DEPRECATED: Pool Size for Kafka Consumers (integer value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason: Driver no longer uses connection pool.
    #pool_size = 10

    # DEPRECATED: The pool size limit for connections expiration policy (integer
    # value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason: Driver no longer uses connection pool.
    #conn_pool_min_size = 2

    # DEPRECATED: The time-to-live in sec of idle connections in the pool (integer
    # value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason: Driver no longer uses connection pool.
    #conn_pool_ttl = 1200

    # Group id for Kafka consumer. Consumers in one group will coordinate message
    # consumption (string value)
    #consumer_group = oslo_messaging_consumer

    # Upper bound on the delay for KafkaProducer batching in seconds (floating
    # point value)
    #producer_batch_timeout = 0.0

    # Size of batch for the producer async send (integer value)
    #producer_batch_size = 16384

    # The compression codec for all data generated by the producer. If not set,
    # compression will not be used. Note that the allowed values of this depend on
    # the kafka version (string value)
    # Possible values:
    # none - <No description provided>
    # gzip - <No description provided>
    # snappy - <No description provided>
    # lz4 - <No description provided>
    # zstd - <No description provided>
    #compression_codec = none

    # Enable asynchronous consumer commits (boolean value)
    #enable_auto_commit = false

    # The maximum number of records returned in a poll call (integer value)
    #max_poll_records = 500

    # Protocol used to communicate with brokers (string value)
    # Possible values:
    # PLAINTEXT - <No description provided>
    # SASL_PLAINTEXT - <No description provided>
    # SSL - <No description provided>
    # SASL_SSL - <No description provided>
    #security_protocol = PLAINTEXT

    # Mechanism when security protocol is SASL (string value)
    #sasl_mechanism = PLAIN

    # CA certificate PEM file used to verify the server certificate (string value)
    #ssl_cafile =

    # Client certificate PEM file used for authentication. (string value)
    #ssl_client_cert_file =

    # Client key PEM file used for authentication. (string value)
    #ssl_client_key_file =

    # Client key password file used for authentication. (string value)
    #ssl_client_key_password =

    [oslo_messaging_notifications]

    #
    # From oslo.messaging
    #

    # The Drivers(s) to handle sending notifications. Possible values are
    # messaging, messagingv2, routing, log, test, noop (multi valued)
    # Deprecated group/name - [DEFAULT]/notification_driver
    #driver =

    # A URL representing the messaging driver to use for notifications. If not set,
    # we fall back to the same configuration used for RPC. (string value)
    # Deprecated group/name - [DEFAULT]/notification_transport_url
    #transport_url = <None>

    # AMQP topic used for OpenStack notifications. (list value)
    # Deprecated group/name - [rpc_notifier2]/topics
    # Deprecated group/name - [DEFAULT]/notification_topics
    #topics = notifications

    # The maximum number of attempts to re-send a notification message which failed
    # to be delivered due to a recoverable error. 0 - No retry, -1 - indefinite
    # (integer value)
    #retry = -1

    [oslo_messaging_rabbit]

    #
    # From oslo.messaging
    #

    # Use durable queues in AMQP. If rabbit_quorum_queue is enabled, queues will be
    # durable and this value will be ignored. (boolean value)
    #amqp_durable_queues = false

    # Auto-delete queues in AMQP. (boolean value)
    #amqp_auto_delete = false

    # Connect over SSL. (boolean value)
    # Deprecated group/name - [oslo_messaging_rabbit]/rabbit_use_ssl
    #ssl = false

    # SSL version to use (valid only if SSL enabled). Valid values are TLSv1 and
    # SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be available on some
    # distributions. (string value)
    # Deprecated group/name - [oslo_messaging_rabbit]/kombu_ssl_version
    #ssl_version =

    # SSL key file (valid only if SSL enabled). (string value)
    # Deprecated group/name - [oslo_messaging_rabbit]/kombu_ssl_keyfile
    #ssl_key_file =

    # SSL cert file (valid only if SSL enabled). (string value)
    # Deprecated group/name - [oslo_messaging_rabbit]/kombu_ssl_certfile
    #ssl_cert_file =

    # SSL certification authority file (valid only if SSL enabled). (string value)
    # Deprecated group/name - [oslo_messaging_rabbit]/kombu_ssl_ca_certs
    #ssl_ca_file =

    # Global toggle for enforcing the OpenSSL FIPS mode. This feature requires
    # Python support. This is available in Python 3.9 in all environments and may
    # have been backported to older Python versions on select environments. If the
    # Python executable used does not support OpenSSL FIPS mode, an exception will
    # be raised. (boolean value)
    #ssl_enforce_fips_mode = false

    # Run the health check heartbeat thread through a native python thread by
    # default. If this option is equal to False then the health check heartbeat
    # will inherit the execution model from the parent process. For example if the
    # parent process has monkey patched the stdlib by using eventlet/greenlet then
    # the heartbeat will be run through a green thread. This option should be set
    # to True only for the wsgi services. (boolean value)
    #heartbeat_in_pthread = false

    # How long to wait (in seconds) before reconnecting in response to an AMQP
    # consumer cancel notification. (floating point value)
    # Minimum value: 0.0
    # Maximum value: 4.5
    #kombu_reconnect_delay = 1.0

    # EXPERIMENTAL: Possible values are: gzip, bz2. If not set compression will not
    # be used. This option may not be available in future versions. (string value)
    #kombu_compression = <None>

    # How long to wait a missing client before abandoning to send it its replies.
    # This value should not be longer than rpc_response_timeout. (integer value)
    # Deprecated group/name - [oslo_messaging_rabbit]/kombu_reconnect_timeout
    #kombu_missing_consumer_retry_timeout = 60

    # Determines how the next RabbitMQ node is chosen in case the one we are
    # currently connected to becomes unavailable. Takes effect only if more than
    # one RabbitMQ node is provided in config. (string value)
    # Possible values:
    # round-robin - <No description provided>
    # shuffle - <No description provided>
    #kombu_failover_strategy = round-robin

    # The RabbitMQ login method. (string value)
    # Possible values:
    # PLAIN - <No description provided>
    # AMQPLAIN - <No description provided>
    # EXTERNAL - <No description provided>
    # RABBIT-CR-DEMO - <No description provided>
    #rabbit_login_method = AMQPLAIN

    # How frequently to retry connecting with RabbitMQ. (integer value)
    #rabbit_retry_interval = 1

    # How long to backoff for between retries when connecting to RabbitMQ. (integer
    # value)
    #rabbit_retry_backoff = 2

    # Maximum interval of RabbitMQ connection retries. Default is 30 seconds.
    # (integer value)
    #rabbit_interval_max = 30

    # Try to use HA queues in RabbitMQ (x-ha-policy: all). If you change this
    # option, you must wipe the RabbitMQ database. In RabbitMQ 3.0, queue mirroring
    # is no longer controlled by the x-ha-policy argument when declaring a queue.
    # If you just want to make sure that all queues (except those with auto-
    # generated names) are mirrored across all nodes, run: "rabbitmqctl set_policy
    # HA '^(?!amq\.).*' '{"ha-mode": "all"}' " (boolean value)
    #rabbit_ha_queues = false

    # Use quorum queues in RabbitMQ (x-queue-type: quorum). The quorum queue is a
    # modern queue type for RabbitMQ implementing a durable, replicated FIFO queue
    # based on the Raft consensus algorithm. It is available as of RabbitMQ 3.8.0.
    # If set this option will conflict with the HA queues (``rabbit_ha_queues``)
    # aka mirrored queues, in other words the HA queues should be disabled, quorum
    # queues durable by default so the amqp_durable_queues opion is ignored when
    # this option enabled. (boolean value)
    #rabbit_quorum_queue = false

    # Each time a message is redelivered to a consumer, a counter is incremented.
    # Once the redelivery count exceeds the delivery limit the message gets dropped
    # or dead-lettered (if a DLX exchange has been configured) Used only when
    # rabbit_quorum_queue is enabled, Default 0 which means dont set a limit.
    # (integer value)
    #rabbit_quorum_delivery_limit = 0

    # By default all messages are maintained in memory if a quorum queue grows in
    # length it can put memory pressure on a cluster. This option can limit the
    # number of messages in the quorum queue. Used only when rabbit_quorum_queue is
    # enabled, Default 0 which means dont set a limit. (integer value)
    # Deprecated group/name - [oslo_messaging_rabbit]/rabbit_quroum_max_memory_length
    #rabbit_quorum_max_memory_length = 0

    # By default all messages are maintained in memory if a quorum queue grows in
    # length it can put memory pressure on a cluster. This option can limit the
    # number of memory bytes used by the quorum queue. Used only when
    # rabbit_quorum_queue is enabled, Default 0 which means dont set a limit.
    # (integer value)
    # Deprecated group/name - [oslo_messaging_rabbit]/rabbit_quroum_max_memory_bytes
    #rabbit_quorum_max_memory_bytes = 0

    # Positive integer representing duration in seconds for queue TTL (x-expires).
    # Queues which are unused for the duration of the TTL are automatically
    # deleted. The parameter affects only reply and fanout queues. Setting 0 as
    # value will disable the x-expires. If doing so, make sure you have a rabbitmq
    # policy to delete the queues or you deployment will create an infinite number
    # of queue over time. (integer value)
    # Minimum value: 0
    #rabbit_transient_queues_ttl = 1800

    # Specifies the number of messages to prefetch. Setting to zero allows
    # unlimited messages. (integer value)
    #rabbit_qos_prefetch_count = 0

    # Number of seconds after which the Rabbit broker is considered down if
    # heartbeat's keep-alive fails (0 disables heartbeat). (integer value)
    #heartbeat_timeout_threshold = 60

    # How often times during the heartbeat_timeout_threshold we check the
    # heartbeat. (integer value)
    #heartbeat_rate = 3

    # DEPRECATED: (DEPRECATED) Enable/Disable the RabbitMQ mandatory flag for
    # direct send. The direct send is used as reply, so the MessageUndeliverable
    # exception is raised in case the client queue does not
    # exist.MessageUndeliverable exception will be used to loop for a timeout to
    # lets a chance to sender to recover.This flag is deprecated and it will not be
    # possible to deactivate this functionality anymore (boolean value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason: Mandatory flag no longer deactivable.
    #direct_mandatory_flag = true

    # Enable x-cancel-on-ha-failover flag so that rabbitmq server will cancel and
    # notify consumerswhen queue is down (boolean value)
    #enable_cancel_on_failover = false

    [oslo_middleware]

    #
    # From oslo.middleware
    #

    # The maximum body size for each  request, in bytes. (integer value)
    # Deprecated group/name - [DEFAULT]/osapi_max_request_body_size
    # Deprecated group/name - [DEFAULT]/max_request_body_size
    #max_request_body_size = 114688

    # Whether the application is behind a proxy or not. This determines if the
    # middleware should parse the headers or not. (boolean value)
    #enable_proxy_headers_parsing = false

    # HTTP basic auth password file. (string value)
    #http_basic_auth_user_file = /etc/htpasswd

    [oslo_policy]

    #
    # From oslo.policy
    #

    # This option controls whether or not to enforce scope when evaluating
    # policies. If ``True``, the scope of the token used in the request is compared
    # to the ``scope_types`` of the policy being enforced. If the scopes do not
    # match, an ``InvalidScope`` exception will be raised. If ``False``, a message
    # will be logged informing operators that policies are being invoked with
    # mismatching scope. (boolean value)
    #enforce_scope = false

    # This option controls whether or not to use old deprecated defaults when
    # evaluating policies. If ``True``, the old deprecated defaults are not going
    # to be evaluated. This means if any existing token is allowed for old defaults
    # but is disallowed for new defaults, it will be disallowed. It is encouraged
    # to enable this flag along with the ``enforce_scope`` flag so that you can get
    # the benefits of new defaults and ``scope_type`` together. If ``False``, the
    # deprecated policy check string is logically OR'd with the new policy check
    # string, allowing for a graceful upgrade experience between releases with new
    # policies, which is the default behavior. (boolean value)
    #enforce_new_defaults = false

    # The relative or absolute path of a file that maps roles to permissions for a
    # given service. Relative paths must be specified in relation to the
    # configuration file setting this option. (string value)
    #policy_file = policy.json

    # Default rule. Enforced when a requested rule is not found. (string value)
    #policy_default_rule = default

    # Directories where policy configuration files are stored. They can be relative
    # to any directory in the search path defined by the config_dir option, or
    # absolute paths. The file defined by policy_file must exist for these
    # directories to be searched.  Missing or empty directories are ignored. (multi
    # valued)
    #policy_dirs = policy.d

    # Content Type to send and receive data for REST based policy check (string
    # value)
    # Possible values:
    # application/x-www-form-urlencoded - <No description provided>
    # application/json - <No description provided>
    #remote_content_type = application/x-www-form-urlencoded

    # server identity verification for REST based policy check (boolean value)
    #remote_ssl_verify_server_crt = false

    # Absolute path to ca cert file for REST based policy check (string value)
    #remote_ssl_ca_crt_file = <None>

    # Absolute path to client cert for REST based policy check (string value)
    #remote_ssl_client_crt_file = <None>

    # Absolute path client key file REST based policy check (string value)
    #remote_ssl_client_key_file = <None>

    [profiler]

    #
    # From osprofiler
    #

    #
    # Enable the profiling for all services on this node.
    #
    # Default value is False (fully disable the profiling feature).
    #
    # Possible values:
    #
    # * True: Enables the feature
    # * False: Disables the feature. The profiling cannot be started via this
    # project
    #   operations. If the profiling is triggered by another project, this project
    #   part will be empty.
    #  (boolean value)
    # Deprecated group/name - [profiler]/profiler_enabled
    #enabled = false

    #
    # Enable SQL requests profiling in services.
    #
    # Default value is False (SQL requests won't be traced).
    #
    # Possible values:
    #
    # * True: Enables SQL requests profiling. Each SQL query will be part of the
    #   trace and can the be analyzed by how much time was spent for that.
    # * False: Disables SQL requests profiling. The spent time is only shown on a
    #   higher level of operations. Single SQL queries cannot be analyzed this way.
    #  (boolean value)
    #trace_sqlalchemy = false

    #
    # Secret key(s) to use for encrypting context data for performance profiling.
    #
    # This string value should have the following format:
    # <key1>[,<key2>,...<keyn>],
    # where each key is some random string. A user who triggers the profiling via
    # the REST API has to set one of these keys in the headers of the REST API call
    # to include profiling results of this node for this particular project.
    #
    # Both "enabled" flag and "hmac_keys" config options should be set to enable
    # profiling. Also, to generate correct profiling information across all
    # services
    # at least one key needs to be consistent between OpenStack projects. This
    # ensures it can be used from client side to generate the trace, containing
    # information from all possible resources.
    #  (string value)
    #hmac_keys = SECRET_KEY

    #
    # Connection string for a notifier backend.
    #
    # Default value is ``messaging://`` which sets the notifier to oslo_messaging.
    #
    # Examples of possible values:
    #
    # * ``messaging://`` - use oslo_messaging driver for sending spans.
    # * ``redis://127.0.0.1:6379`` - use redis driver for sending spans.
    # * ``mongodb://127.0.0.1:27017`` - use mongodb driver for sending spans.
    # * ``elasticsearch://127.0.0.1:9200`` - use elasticsearch driver for sending
    #   spans.
    # * ``jaeger://127.0.0.1:6831`` - use jaeger tracing as driver for sending
    # spans.
    #  (string value)
    #connection_string = messaging://

    #
    # Document type for notification indexing in elasticsearch.
    #  (string value)
    #es_doc_type = notification

    #
    # This parameter is a time value parameter (for example: es_scroll_time=2m),
    # indicating for how long the nodes that participate in the search will
    # maintain
    # relevant resources in order to continue and support it.
    #  (string value)
    #es_scroll_time = 2m

    #
    # Elasticsearch splits large requests in batches. This parameter defines
    # maximum size of each batch (for example: es_scroll_size=10000).
    #  (integer value)
    #es_scroll_size = 10000

    #
    # Redissentinel provides a timeout option on the connections.
    # This parameter defines that timeout (for example: socket_timeout=0.1).
    #  (floating point value)
    #socket_timeout = 0.1

    #
    # Redissentinel uses a service name to identify a master redis service.
    # This parameter defines the name (for example:
    # ``sentinal_service_name=mymaster``).
    #  (string value)
    #sentinel_service_name = mymaster

    #
    # Enable filter traces that contain error/exception to a separated place.
    #
    # Default value is set to False.
    #
    # Possible values:
    #
    # * True: Enable filter traces that contain error/exception.
    # * False: Disable the filter.
    #  (boolean value)
    #filter_error_trace = false

this page last updated: 2026-06-11 21:49:06

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug