Merge "Move FM bootstrap from puppet to ansible"
This commit is contained in:
commit
26d62e2679
|
@ -335,6 +335,9 @@
|
|||
become_user: postgres
|
||||
when: distributed_cloud_role == 'subcloud'
|
||||
|
||||
- name: Prepare FM Manager
|
||||
import_tasks: fm_bootstrap.yml
|
||||
|
||||
- name: Remove runtime hieradata
|
||||
file:
|
||||
path: "{{ hieradata_workdir }}/runtime.yaml"
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
---
|
||||
#
|
||||
# Copyright (c) 2024 Wind River Systems, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
# SUB-TASKS DESCRIPTION:
|
||||
# Bootstrap FM:
|
||||
# - Generate fm.conf
|
||||
# - Generate api-paste.ini
|
||||
# - Configure FM DB/User
|
||||
# - Install FM packages
|
||||
# - Enable fm-api service
|
||||
|
||||
- name: Read the required fm var file contents
|
||||
shell: |
|
||||
cd /tmp/puppet/hieradata
|
||||
grep -h "fm::" personality.yaml secure_static.yaml runtime.yaml
|
||||
register: fm_vars
|
||||
no_log: true
|
||||
|
||||
- name: Convert fm var file content to a dictionary
|
||||
set_fact:
|
||||
fm_var_dict: "{{ fm_vars.stdout | from_yaml }}"
|
||||
|
||||
- name: Set up db sql_connection string, remove psycopg2 if it exists
|
||||
set_fact:
|
||||
sql_connection: "{{ fm_var_dict['fm::database_connection'] | regex_replace('^postgresql\\+psycopg2:', 'postgresql:') }}"
|
||||
|
||||
- name: Set up db real_connection string, add psycopg2 driver to postgresql if it's missing
|
||||
set_fact:
|
||||
real_connection: "{{ fm_var_dict['fm::database_connection'] | regex_replace('^postgresql:', 'postgresql+psycopg2:') }}"
|
||||
|
||||
- name: Generate fm.conf
|
||||
template:
|
||||
src: fm.conf.j2
|
||||
dest: /etc/fm/fm.conf
|
||||
mode: 0600
|
||||
|
||||
- set_fact:
|
||||
fm_api_pipeline: "request_id authtoken api_v1"
|
||||
request_id_filter_factory: "oslo_middleware:RequestId.factory"
|
||||
acl_public_routes: "/, /v1"
|
||||
authtoken_filter_factory: "fm.api.middleware.auth_token:AuthTokenMiddleware.factory"
|
||||
app_factory: "fm.api.app:app_factory"
|
||||
|
||||
- name: Generate api-paste.ini
|
||||
template:
|
||||
src: api-paste.ini.j2
|
||||
dest: /etc/fm/api-paste.ini
|
||||
mode: 0644
|
||||
|
||||
- name: Ensure PostgreSQL fm database and user is created
|
||||
become_user: postgres
|
||||
postgresql_db:
|
||||
name: "fm"
|
||||
state: present
|
||||
|
||||
- name: Set PostgreSQL user password
|
||||
become_user: postgres
|
||||
postgresql_user:
|
||||
db: "fm"
|
||||
name: "admin-fm"
|
||||
password: "{{ fm_var_dict['fm::db::postgresql::password'] }}"
|
||||
priv: "ALL"
|
||||
|
||||
- name: Ensure fm-rest-api package and fm python client package are installed
|
||||
become: true
|
||||
package:
|
||||
name:
|
||||
- python3-fmclient
|
||||
- fm-rest-api
|
||||
state: present
|
||||
|
||||
- name: Ensure fm-api service is running and enabled
|
||||
systemd:
|
||||
name: fm-api
|
||||
state: started
|
||||
enabled: yes
|
||||
|
||||
- name: Run fm-db-sync
|
||||
command:
|
||||
cmd: fm-dbsync --config-file /etc/fm/fm.conf
|
||||
chdir: /usr/bin
|
||||
become_user: root
|
|
@ -0,0 +1,12 @@
|
|||
[pipeline:fm-api]
|
||||
pipeline={{ fm_api_pipeline }}
|
||||
|
||||
[filter:request_id]
|
||||
paste.filter_factory={{ request_id_filter_factory }}
|
||||
|
||||
[filter:authtoken]
|
||||
acl_public_routes={{ acl_public_routes }}
|
||||
paste.filter_factory={{ authtoken_filter_factory }}
|
||||
|
||||
[app:api_v1]
|
||||
paste.app_factory={{ app_factory }}
|
|
@ -0,0 +1,588 @@
|
|||
[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
|
||||
use_syslog={{ fm_var_dict['fm::use_syslog'] }}
|
||||
|
||||
# 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
|
||||
syslog_log_facility={{ fm_var_dict['fm::log_facility'] }}
|
||||
|
||||
# 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
|
||||
|
||||
# Log output to Windows Event Log. (boolean value)
|
||||
#use_eventlog = false
|
||||
|
||||
# The amount of time before the log files are rotated. This option is ignored
|
||||
# unless log_rotation_type is setto "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 [%(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 %(tenant)s %(domain)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
|
||||
sql_connection={{ sql_connection }}
|
||||
event_log_max_size=4000
|
||||
|
||||
|
||||
[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)
|
||||
# Deprecated group/name - [DEFAULT]/db_backend
|
||||
#backend = sqlalchemy
|
||||
|
||||
# The SQLAlchemy connection string to use to connect to the database. (string
|
||||
# value)
|
||||
# Deprecated group/name - [DEFAULT]/sql_connection
|
||||
# Deprecated group/name - [DATABASE]/sql_connection
|
||||
# Deprecated group/name - [sql]/connection
|
||||
#connection = <None>
|
||||
connection={{ real_connection }}
|
||||
|
||||
# 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
|
||||
|
||||
# If True, transparently enables support for handling MySQL Cluster (NDB).
|
||||
# (boolean value)
|
||||
#mysql_enable_ndb = false
|
||||
|
||||
# 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)
|
||||
# Deprecated group/name - [DATABASE]/idle_timeout
|
||||
# Deprecated group/name - [database]/idle_timeout
|
||||
# Deprecated group/name - [DEFAULT]/sql_idle_timeout
|
||||
# Deprecated group/name - [DATABASE]/sql_idle_timeout
|
||||
# Deprecated group/name - [sql]/idle_timeout
|
||||
#connection_recycle_time = 3600
|
||||
connection_recycle_time={{ fm_var_dict['fm::database_idle_timeout'] }}
|
||||
|
||||
# Maximum number of SQL connections to keep open in a pool. Setting a value of
|
||||
# 0 indicates no limit. (integer value)
|
||||
# Deprecated group/name - [DEFAULT]/sql_max_pool_size
|
||||
# Deprecated group/name - [DATABASE]/sql_max_pool_size
|
||||
#max_pool_size = 5
|
||||
max_pool_size={{ fm_var_dict['fm::database_max_pool_size'] }}
|
||||
|
||||
# Maximum number of database connection retries during startup. Set to -1 to
|
||||
# specify an infinite retry count. (integer value)
|
||||
# Deprecated group/name - [DEFAULT]/sql_max_retries
|
||||
# Deprecated group/name - [DATABASE]/sql_max_retries
|
||||
#max_retries = 10
|
||||
|
||||
# Interval between retries of opening a SQL connection. (integer value)
|
||||
# Deprecated group/name - [DEFAULT]/sql_retry_interval
|
||||
# Deprecated group/name - [DATABASE]/reconnect_interval
|
||||
#retry_interval = 10
|
||||
|
||||
# If set, use this value for max_overflow with SQLAlchemy. (integer value)
|
||||
# Deprecated group/name - [DEFAULT]/sql_max_overflow
|
||||
# Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow
|
||||
#max_overflow = 50
|
||||
max_overflow={{ fm_var_dict['fm::database_max_overflow'] }}
|
||||
|
||||
# Verbosity of SQL debugging information: 0=None, 100=Everything. (integer
|
||||
# value)
|
||||
# Minimum value: 0
|
||||
# Maximum value: 100
|
||||
# Deprecated group/name - [DEFAULT]/sql_connection_debug
|
||||
#connection_debug = 0
|
||||
|
||||
# Add Python stack traces to SQL as comment strings. (boolean value)
|
||||
# Deprecated group/name - [DEFAULT]/sql_connection_trace
|
||||
#connection_trace = false
|
||||
|
||||
# If set, use this value for pool_timeout with SQLAlchemy. (integer value)
|
||||
# Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout
|
||||
#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¶m2=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 =
|
||||
|
||||
# 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 =
|
||||
|
||||
|
||||
[keystone_authtoken]
|
||||
|
||||
#
|
||||
# From keystonemiddleware.auth_token
|
||||
#
|
||||
|
||||
# Complete "public" Identity API endpoint. This endpoint should not be an
|
||||
# "admin" endpoint, as it should be accessible by all end users.
|
||||
# Unauthenticated clients are redirected to this endpoint to authenticate.
|
||||
# Although this endpoint should ideally be unversioned, client support in the
|
||||
# wild varies. If you're using a versioned v2 endpoint here, then this should
|
||||
# *not* be the same endpoint the service user utilizes for validating tokens,
|
||||
# because normal end users may not be able to reach that endpoint. (string
|
||||
# value)
|
||||
# Deprecated group/name - [keystone_authtoken]/auth_uri
|
||||
#www_authenticate_uri = <None>
|
||||
www_authenticate_uri={{ fm_var_dict['fm::keystone::authtoken::auth_uri'] | default('http://localhost:5000') }}
|
||||
|
||||
# DEPRECATED: Complete "public" Identity API endpoint. This endpoint should not
|
||||
# be an "admin" endpoint, as it should be accessible by all end users.
|
||||
# Unauthenticated clients are redirected to this endpoint to authenticate.
|
||||
# Although this endpoint should ideally be unversioned, client support in the
|
||||
# wild varies. If you're using a versioned v2 endpoint here, then this should
|
||||
# *not* be the same endpoint the service user utilizes for validating tokens,
|
||||
# because normal end users may not be able to reach that endpoint. This option
|
||||
# is deprecated in favor of www_authenticate_uri and will be removed in the S
|
||||
# release. (string value)
|
||||
# This option is deprecated for removal since Queens.
|
||||
# Its value may be silently ignored in the future.
|
||||
# Reason: The auth_uri option is deprecated in favor of www_authenticate_uri
|
||||
# and will be removed in the S release.
|
||||
#auth_uri = <None>
|
||||
|
||||
# API version of the Identity API endpoint. (string value)
|
||||
#auth_version = <None>
|
||||
|
||||
# Interface to use for the Identity API endpoint. Valid values are "public",
|
||||
# "internal" (default) or "admin". (string value)
|
||||
#interface = internal
|
||||
|
||||
# Do not handle authorization requests within the middleware, but delegate the
|
||||
# authorization decision to downstream WSGI components. (boolean value)
|
||||
#delay_auth_decision = false
|
||||
|
||||
# Request timeout value for communicating with Identity API server. (integer
|
||||
# value)
|
||||
#http_connect_timeout = <None>
|
||||
|
||||
# How many times are we trying to reconnect when communicating with Identity
|
||||
# API Server. (integer value)
|
||||
#http_request_max_retries = 3
|
||||
|
||||
# Request environment key where the Swift cache object is stored. When
|
||||
# auth_token middleware is deployed with a Swift cache, use this option to have
|
||||
# the middleware share a caching backend with swift. Otherwise, use the
|
||||
# ``memcached_servers`` option instead. (string value)
|
||||
#cache = <None>
|
||||
|
||||
# Required if identity server requires client certificate (string value)
|
||||
#certfile = <None>
|
||||
|
||||
# Required if identity server requires client certificate (string value)
|
||||
#keyfile = <None>
|
||||
|
||||
# A PEM encoded Certificate Authority to use when verifying HTTPs connections.
|
||||
# Defaults to system CAs. (string value)
|
||||
#cafile = <None>
|
||||
|
||||
# Verify HTTPS connections. (boolean value)
|
||||
#insecure = false
|
||||
|
||||
# The region in which the identity server can be found. (string value)
|
||||
#region_name = <None>
|
||||
|
||||
# Optionally specify a list of memcached server(s) to use for caching. If left
|
||||
# undefined, tokens will instead be cached in-process. (list value)
|
||||
# Deprecated group/name - [keystone_authtoken]/memcache_servers
|
||||
#memcached_servers = <None>
|
||||
|
||||
# In order to prevent excessive effort spent validating tokens, the middleware
|
||||
# caches previously-seen tokens for a configurable duration (in seconds). Set
|
||||
# to -1 to disable caching completely. (integer value)
|
||||
#token_cache_time = 300
|
||||
|
||||
# (Optional) If defined, indicate whether token data should be authenticated or
|
||||
# authenticated and encrypted. If MAC, token data is authenticated (with HMAC)
|
||||
# in the cache. If ENCRYPT, token data is encrypted and authenticated in the
|
||||
# cache. If the value is not one of these options or empty, auth_token will
|
||||
# raise an exception on initialization. (string value)
|
||||
# Possible values:
|
||||
# None - <No description provided>
|
||||
# MAC - <No description provided>
|
||||
# ENCRYPT - <No description provided>
|
||||
#memcache_security_strategy = None
|
||||
|
||||
# (Optional, mandatory if memcache_security_strategy is defined) This string is
|
||||
# used for key derivation. (string value)
|
||||
#memcache_secret_key = <None>
|
||||
|
||||
# (Optional) Number of seconds memcached server is considered dead before it is
|
||||
# tried again. (integer value)
|
||||
#memcache_pool_dead_retry = 300
|
||||
|
||||
# (Optional) Maximum total number of open connections to every memcached
|
||||
# server. (integer value)
|
||||
#memcache_pool_maxsize = 10
|
||||
|
||||
# (Optional) Socket timeout in seconds for communicating with a memcached
|
||||
# server. (integer value)
|
||||
#memcache_pool_socket_timeout = 3
|
||||
|
||||
# (Optional) Number of seconds a connection to memcached is held unused in the
|
||||
# pool before it is closed. (integer value)
|
||||
#memcache_pool_unused_timeout = 60
|
||||
|
||||
# (Optional) Number of seconds that an operation will wait to get a memcached
|
||||
# client connection from the pool. (integer value)
|
||||
#memcache_pool_conn_get_timeout = 10
|
||||
|
||||
# (Optional) Use the advanced (eventlet safe) memcached client pool. The
|
||||
# advanced pool will only work under python 2.x. (boolean value)
|
||||
#memcache_use_advanced_pool = false
|
||||
|
||||
# (Optional) Indicate whether to set the X-Service-Catalog header. If False,
|
||||
# middleware will not ask for service catalog on token validation and will not
|
||||
# set the X-Service-Catalog header. (boolean value)
|
||||
#include_service_catalog = true
|
||||
|
||||
# Used to control the use and type of token binding. Can be set to: "disabled"
|
||||
# to not check token binding. "permissive" (default) to validate binding
|
||||
# information if the bind type is of a form known to the server and ignore it
|
||||
# if not. "strict" like "permissive" but if the bind type is unknown the token
|
||||
# will be rejected. "required" any form of token binding is needed to be
|
||||
# allowed. Finally the name of a binding method that must be present in tokens.
|
||||
# (string value)
|
||||
#enforce_token_bind = permissive
|
||||
|
||||
# A choice of roles that must be present in a service token. Service tokens are
|
||||
# allowed to request that an expired token can be used and so this check should
|
||||
# tightly control that only actual services should be sending this token. Roles
|
||||
# here are applied as an ANY check so any role in this list must be present.
|
||||
# For backwards compatibility reasons this currently only affects the
|
||||
# allow_expired check. (list value)
|
||||
#service_token_roles = service
|
||||
|
||||
# For backwards compatibility reasons we must let valid service tokens pass
|
||||
# that don't pass the service_token_roles check as valid. Setting this true
|
||||
# will become the default in a future release and should be enabled if
|
||||
# possible. (boolean value)
|
||||
#service_token_roles_required = false
|
||||
|
||||
# The name or type of the service as it appears in the service catalog. This is
|
||||
# used to validate tokens that have restricted access rules. (string value)
|
||||
#service_type = <None>
|
||||
|
||||
# Authentication type to load (string value)
|
||||
# Deprecated group/name - [keystone_authtoken]/auth_plugin
|
||||
#auth_type = <None>
|
||||
auth_type=password
|
||||
|
||||
# Config Section from which to load plugin specific options (string value)
|
||||
#auth_section = <None>
|
||||
auth_url={{ fm_var_dict['fm::keystone::authtoken::auth_url'] | default('http://localhost:35357') }}
|
||||
username={{ fm_var_dict['fm::keystone::authtoken::username'] | default('fm') }}
|
||||
password={{ fm_var_dict['fm::keystone::authtoken::password'] }}
|
||||
user_domain_name={{ fm_var_dict['fm::keystone::authtoken::user_domain_name'] | default('Default') }}
|
||||
project_name={{ fm_var_dict['fm::keystone::authtoken::project_name'] | default('services') }}
|
||||
project_domain_name={{ fm_var_dict['fm::keystone::authtoken::project_domain_name'] | default('Default') }}
|
||||
|
||||
|
||||
[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
|
||||
|
||||
# DEPRECATED: The HTTP Header that will be used to determine what the original
|
||||
# request protocol scheme was, even if it was hidden by a SSL termination
|
||||
# proxy. (string value)
|
||||
# This option is deprecated for removal.
|
||||
# Its value may be silently ignored in the future.
|
||||
#secure_proxy_ssl_header = X-Forwarded-Proto
|
||||
|
||||
# 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
|
||||
enable_proxy_headers_parsing={{ fm_var_dict['fm::api::enable_proxy_headers_parsing'] }}
|
||||
|
||||
|
||||
[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 (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>
|
||||
|
||||
[sysinv]
|
||||
catalog_info=platform:sysinv:internalURL
|
||||
|
||||
[snmp]
|
||||
snmp_enabled={{ fm_var_dict['platform::fm::params::snmp_enabled'] | default(0) }}
|
||||
trap_server_ip=controller
|
||||
trap_server_port={{ fm_var_dict['platform::fm::params::snmp_trap_server_port'] | default(162) }}
|
||||
|
||||
[api]
|
||||
bind_host={{ fm_var_dict['platform::fm::params::api_host'] | default('127.0.0.1') }}
|
||||
bind_port={{ fm_var_dict['platform::fm::params::api_port'] | default(18002) }}
|
||||
api_workers=1
|
||||
api_paste_config=/etc/fm/api-paste.ini
|
Loading…
Reference in New Issue