| ssl_enabled = attribute("ssl", default: false) |
| |
| keystone_oslo_messaging_default = { |
| 'transport_url' => 'rabbit://openstack:password@127.0.0.1:5672//openstack', |
| } |
| |
| keystone_oslo_messaging_default_ssl = { |
| 'transport_url' => 'rabbit://openstack:password@127.0.0.1:5671//openstack' |
| } |
| |
| keystone_default = { |
| 'log_config_append' => '/etc/keystone/logging.conf', |
| 'debug' => 'false', |
| 'log_file' => 'keystone.log', |
| 'log_dir' => '/var/log/keystone', |
| 'use_syslog' => 'false', |
| 'syslog_log_facility' => 'LOG_USER', |
| 'notification_format' => 'cadf', |
| 'executor_thread_pool_size' => '64', |
| 'rpc_response_timeout' => '60', |
| 'control_exchange' => 'keystone', |
| } |
| |
| keystone_assignment = { |
| 'driver' => 'sql' |
| } |
| |
| keystone_auth = { |
| 'methods' => 'password,token', |
| 'oidc' => 'keystone.auth.plugins.mapped.Mapped', |
| 'saml2' => 'keystone.auth.plugins.mapped.Mapped', |
| } |
| |
| #hardcod in config |
| keystone_catalog = { |
| 'template_file' => 'default_catalog.templates', |
| 'driver' => 'sql', |
| } |
| |
| keystone_credential = { |
| 'key_repository' => '/var/lib/keystone/credential-keys' |
| } |
| |
| keystone_fernet_tokens = { |
| 'key_repository' => '/var/lib/keystone/fernet-keys', |
| 'max_active_keys' => '3', |
| } |
| |
| #hardcod in config |
| keystone_identity = { |
| 'driver' => 'sql', |
| 'default_domain_id' => 'default', |
| 'domain_specific_drivers_enabled' => 'True', |
| 'domain_config_dir' => '/etc/keystone/domains', |
| } |
| |
| #hardcod in config |
| keystone_policy = { |
| 'driver' => 'sql' |
| } |
| |
| keystone_token = { |
| 'expiration' => '86400', |
| 'provider' => 'fernet', |
| 'caching' => 'false', |
| 'hash_algorithm' => 'sha256', |
| } |
| |
| keystone_cache = { |
| 'backend' => 'oslo_cache.memcache_pool', |
| 'enabled' => 'True', |
| 'memcache_servers' => '127.0.0.1:11211', |
| } |
| |
| #hardcod in config |
| keystone_oslo_messaging_rabbit = { |
| 'rabbit_qos_prefetch_count' => '64', |
| 'heartbeat_timeout_threshold' => '0', |
| 'heartbeat_rate' => '2', |
| } |
| |
| keystone_database_ssl = { |
| 'connection' => 'mysql+pymysql://keystone:passw0rd@127.0.0.1/keystone?charset=utf8&ssl_ca=/etc/keystone/ssl/mysql/ca-cert.pem&ssl_cert=/etc/keystone/ssl/mysql/client-cert.pem&ssl_key=/etc/keystone/ssl/mysql/client-key.pem', |
| } |
| |
| keystone_database = { |
| 'connection' => 'mysql+pymysql://keystone:passw0rd@127.0.0.1/keystone?charset=utf8&ssl_ca=/etc/ssl/certs/ca-certificates.crt', |
| 'max_pool_size' => '10', |
| 'max_retries' => '-1', |
| 'max_overflow' => '30', |
| 'connection_recycle_time' => '3600', |
| } |
| |
| keystone_oslo_middleware = { |
| 'max_request_body_size' => '114688', |
| 'enable_proxy_headers_parsing' => 'True', |
| } |
| |
| keystone_cors = { |
| 'allowed_origin' => 'https://horizon.example.com', |
| 'allow_credentials' => 'True', |
| 'expose_headers' => 'X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token', |
| 'max_age' => '3600', |
| 'allow_methods' => 'GET,PUT,POST,DELETE,PATCH', |
| 'allow_headers' => 'X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token,X-Project-Id,X-Project-Name,X-Project-Domain-Id,X-Project-Domain-Name,X-Domain-Id,X-Domain-Name', |
| } |
| |
| keystone_healthcheck = { |
| 'path' => '/healthcheck' |
| } |
| |
| keystone_profiler = { |
| 'enabled' => 'True', |
| } |
| |
| keystone_oslo_policy = { |
| 'policy_file' => 'policy.json' |
| } |
| |
| keystone_oidc = { |
| 'remote_id_attribute' => 'HTTP_OIDC_ISS' |
| } |
| |
| keystone_saml2 = { |
| 'remote_id_attribute' => 'HTTP_OIDC_ISS' |
| } |
| |
| keystone_federation = { |
| 'driver' => 'sql', |
| 'federated_domain_name' => 'Federated', |
| 'trusted_dashboard' => 'https://acme.example.com/auth/websso', |
| 'cache_group_membership_in_db' => 'true', |
| } |
| |
| keystone_resource = { |
| 'admin_project_domain_name' => 'project', |
| 'admin_project_name' => 'projectname', |
| } |
| |
| control 'Keystone' do |
| |
| describe parse_config_file('/etc/keystone/keystone.conf') do |
| |
| describe 'Keystone messaging' do |
| |
| if ssl_enabled |
| keystone_oslo_messaging_rabbit.merge!(keystone_oslo_messaging_rabbit_ssl) |
| keystone_oslo_messaging_default.merge!(keystone_oslo_messaging_default_ssl) |
| describe 'SSL' do |
| its('DEFAULT') { |
| should include(keystone_oslo_messaging_default) |
| } |
| its('oslo_messaging_rabbit') { |
| should include(keystone_oslo_messaging_rabbit) |
| } |
| end |
| else |
| describe 'non SSL' do |
| its('DEFAULT') { |
| should include(keystone_oslo_messaging_default) |
| } |
| its('oslo_messaging_rabbit') { |
| should include(keystone_oslo_messaging_rabbit) |
| } |
| end |
| end |
| |
| end |
| |
| describe 'Keystone database' do |
| |
| if ssl_enabled |
| keystone_database.merge!(keystone_database_ssl) |
| describe 'SSL' do |
| its('database') { |
| should include(keystone_database) |
| } |
| end |
| else |
| describe 'non SSL' do |
| its('database') { |
| should include(keystone_database) |
| } |
| end |
| end |
| |
| end |
| |
| describe 'Keystone config' do |
| |
| its('DEFAULT') { |
| should include(keystone_default) |
| } |
| its('assignment') { |
| should include(keystone_assignment) |
| } |
| its('auth') { |
| should include(keystone_auth) |
| } |
| its('catalog') { |
| should include(keystone_catalog) |
| } |
| its('credential') { |
| should include(keystone_credential) |
| } |
| its('fernet_tokens') { |
| should include(keystone_fernet_tokens) |
| } |
| its('identity') { |
| should include(keystone_identity) |
| } |
| its('policy') { |
| should include(keystone_policy) |
| } |
| its('token') { |
| should include(keystone_token) |
| } |
| its('oslo_messaging_rabbit') { |
| should include(keystone_oslo_messaging_rabbit) |
| } |
| its('database') { |
| should include(keystone_database) |
| } |
| its('cors') { |
| should include(keystone_cors) |
| } |
| its('healthcheck') { |
| should include(keystone_healthcheck) |
| } |
| its('profiler') { |
| should include(keystone_profiler) |
| } |
| its('oslo_policy') { |
| should include(keystone_oslo_policy) |
| } |
| its('oidc') { |
| should include(keystone_oidc) |
| } |
| its('saml2') { |
| should include(keystone_saml2) |
| } |
| its('federation') { |
| should include(keystone_federation) |
| } |
| its('resource') { |
| should include(keystone_resource) |
| } |
| |
| end |
| end |
| end |