5e8be5c339
This PS removes the pregenerated config templates producing using the hacked oslo-genconfig tool. This results in both a much smaller codebase and also more readable configuration by removing the requirement to specify settings via oslo namespaced references. This initial PS applies only to Keystone, A follow up will extend to all remaining services. Partially implements: blueprint remove-pregenerated-config-templates See: https://blueprints.launchpad.net/openstack-helm/+spec/remove-pregenerated-config-templates Change-Id: I3ced7ad02c703c767925a17b1a18f6158a878e83
3.5 KiB
3.5 KiB
OSLO-Config Values
OpenStack-Helm generates oslo-config compatible formatted configuration files for services dynamically from values specified in a yaml tree. This allows operators to control any and all aspects of an OpenStack services configuration. An example snippet for an imaginary Keystone configuration is described here:
conf:
keystone:
DEFAULT: # Keys at this level are used for section headings
max_token_size: 255
token:
provider: fernet
fernet_tokens:
key_repository: /etc/keystone/fernet-keys/
credential:
key_repository: /etc/keystone/credential-keys/
database:
max_retries: -1
cache:
enabled: true
backend: dogpile.cache.memcached
oslo_messaging_notifications:
driver: # An example of a multistring option's syntax
type: multistring
values:
- messagingv2
- log
security_compliance:
password_expires_ignore_user_ids:
# Values in a list will be converted to a comma seperated key
- "123"
- "456"
This will be consumed by the templated
configmap-etc.yaml
manifest to produce the following config
file:
---
# Source: keystone/templates/configmap-etc.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: keystone-etc
data:
keystone.conf: |+
[DEFAULT]
max_token_size = 255
transport_url = rabbit://keystone:password@rabbitmq.default.svc.cluster.local:5672/openstack
[cache]
backend = dogpile.cache.memcached
enabled = true
memcache_servers = memcached.default.svc.cluster.local:11211
[credential]
key_repository = /etc/keystone/credential-keys/
[database]
connection = mysql+pymysql://keystone:password@mariadb.default.svc.cluster.local:3306/keystone
max_retries = -1
[fernet_tokens]
key_repository = /etc/keystone/fernet-keys/
[oslo_messaging_notifications]
driver = messagingv2
driver = log
[security_compliance]
password_expires_ignore_user_ids = 123,456
[token]
provider = fernet
Note that some additional values have been injected into the config
file, this is performed via statements in the configmap template, which
also calls the helm-toolkit.utils.to_oslo_conf
to convert
the yaml to the required layout:
{{- if empty .Values.conf.keystone.database.connection -}}
{{- tuple "oslo_db" "internal" "user" "mysql" . | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup"| set .Values.conf.keystone.database "connection" | quote | trunc 0 -}}
{{- end -}}
{{- if empty .Values.conf.keystone.DEFAULT.transport_url -}}
{{- tuple "oslo_messaging" "internal" "user" "amqp" . | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup" | set .Values.conf.keystone.DEFAULT "transport_url" | quote | trunc 0 -}}
{{- end -}}
{{- if empty .Values.conf.keystone.cache.memcache_servers -}}
{{- tuple "oslo_cache" "internal" "memcache" . | include "helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup" | set .Values.conf.keystone.cache "memcache_servers" | quote | trunc 0 -}}
{{- end -}}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: keystone-etc
data:
keystone.conf: |+
{{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.keystone | indent 4 }}
{{- end }}