@@ -94,6 +94,62 @@ azimuth_curated_sizes: []
94
94
# description: >-
95
95
# {% raw %}{{ cpus }} CPUs, {{ ram }} RAM, {{ disk }} disk, {{ ephemeral_disk }} ephemeral disk{% endraw %}
96
96
97
+ # The authentication type to use - oidc and openstack are supported
98
+ azimuth_authentication_type : openstack
99
+
100
+ # Settings for OIDC authentication
101
+ # The name of the identity realm to create for Azimuth users
102
+ # This will result in a realm in Keycloak named {namespace}-{name}, e.g. azimuth-users
103
+ # Only used if azimuth_oidc_issuer_url is not given
104
+ azimuth_oidc_users_realm_name : users
105
+ # The OIDC issuer URL (must support the OIDC discovery specification)
106
+ # If not given, this is set to the issuer URL for the identity realm
107
+ azimuth_oidc_issuer_url :
108
+ # The OIDC client ID
109
+ # If an identity realm is being used and no client secret is given, a client is created
110
+ # with this ID using the spec that follows
111
+ azimuth_oidc_client_id : azimuth-portal
112
+ # The spec for the OIDC client
113
+ # Used to create an OIDC client when no client secret is given
114
+ azimuth_oidc_client_spec :
115
+ # Use the realm that we created
116
+ realmName : " {{ azimuth_oidc_users_realm_name }}"
117
+ # Azimuth uses a confidential client with the authcode grant
118
+ public : false
119
+ grantTypes : [AuthorizationCode]
120
+ redirectUris :
121
+ - >-
122
+ {{
123
+ "{}://{}/auth/oidc/complete/".format(
124
+ 'https' if azimuth_ingress_tls_enabled else 'http',
125
+ azimuth_ingress_host
126
+ )
127
+ }}
128
+ # The client secret
129
+ # If not given and an identity realm is being used, a client is created - see above
130
+ azimuth_oidc_client_secret : " {{ undef(hint = 'azimuth_oidc_client_secret is required') }}"
131
+ # The scope to use when requesting tokens
132
+ azimuth_oidc_scope : " openid profile email groups"
133
+ # The claims to use for the user ID, username, email and groups respectively
134
+ azimuth_oidc_userid_claim : sub
135
+ azimuth_oidc_username_claim : preferred_username
136
+ azimuth_oidc_email_claim : email
137
+ azimuth_oidc_groups_claim : groups
138
+ # Indicates whether to verify SSL when talking to the OIDC provider
139
+ azimuth_oidc_verify_ssl : true
140
+ # The aggregated settings object for OIDC authentication
141
+ azimuth_oidc_authentication :
142
+ issuerUrl : " {{ azimuth_oidc_issuer_url }}"
143
+ scope : " {{ azimuth_oidc_scope }}"
144
+ claims :
145
+ userid : " {{ azimuth_oidc_userid_claim }}"
146
+ username : " {{ azimuth_oidc_username_claim }}"
147
+ email : " {{ azimuth_oidc_email_claim }}"
148
+ groups : " {{ azimuth_oidc_groups_claim }}"
149
+ clientID : " {{ azimuth_oidc_client_id }}"
150
+ clientSecret : " {{ azimuth_oidc_client_secret }}"
151
+ verifySsl : " {{ azimuth_oidc_verify_ssl }}"
152
+
97
153
# Settings for OpenStack authentication
98
154
# The Keystone auth URL
99
155
azimuth_openstack_auth_url : " {{ undef(hint = 'azimuth_openstack_auth_url is required') }}"
@@ -147,62 +203,81 @@ azimuth_authenticator_federated_identity_providers:
147
203
provider : " {{ azimuth_authenticator_federated_provider }}"
148
204
# A human-readble label for the identity provider, used in the selection form
149
205
label : " {{ azimuth_authenticator_federated_label }}"
150
- # The authentication settings, structured as defaults + overrides
151
- azimuth_authentication_defaults :
152
- type : openstack
153
- openstack : >-
154
- {{-
155
- {
156
- "authUrl": azimuth_openstack_auth_url,
157
- "interface": azimuth_openstack_interface,
158
- "verifySsl": azimuth_openstack_verify_ssl,
159
- "appcred": {
160
- "hidden": azimuth_authenticator_appcred_hidden,
161
- },
162
- "password": {
163
- "enabled": azimuth_authenticator_password_enabled,
164
- },
165
- "federated": {
166
- "enabled": azimuth_authenticator_federated_enabled,
167
- },
168
- } |
169
- combine(
170
- { "region": azimuth_openstack_region }
171
- if azimuth_openstack_region
206
+ # The aggregated settings object for OpenStack auth
207
+ azimuth_openstack_authentication : >-
208
+ {{-
209
+ {
210
+ "authUrl": azimuth_openstack_auth_url,
211
+ "interface": azimuth_openstack_interface,
212
+ "verifySsl": azimuth_openstack_verify_ssl,
213
+ "appcred": {
214
+ "hidden": azimuth_authenticator_appcred_hidden,
215
+ },
216
+ "password": {
217
+ "enabled": azimuth_authenticator_password_enabled,
218
+ },
219
+ "federated": {
220
+ "enabled": azimuth_authenticator_federated_enabled,
221
+ },
222
+ } |
223
+ combine(
224
+ { "region": azimuth_openstack_region }
225
+ if azimuth_openstack_region
226
+ else {}
227
+ ) |
228
+ combine(
229
+ (
230
+ {
231
+ "password": {
232
+ "domains": azimuth_authenticator_password_domains,
233
+ },
234
+ }
235
+ if azimuth_authenticator_password_enabled
172
236
else {}
173
- ) |
174
- combine(
175
- (
176
- {
177
- "password": {
178
- "domains": azimuth_authenticator_password_domains,
179
- },
180
- }
181
- if azimuth_authenticator_password_enabled
182
- else {}
183
- ),
184
- recursive = True
185
- ) |
186
- combine(
187
- (
188
- {
189
- "federated": {
190
- "identityProviders": azimuth_authenticator_federated_identity_providers,
191
- },
192
- }
193
- if azimuth_authenticator_federated_enabled
194
- else {}
195
- ),
196
- recursive = True
197
- )
198
- }}
237
+ ),
238
+ recursive = True
239
+ ) |
240
+ combine(
241
+ (
242
+ {
243
+ "federated": {
244
+ "identityProviders": azimuth_authenticator_federated_identity_providers,
245
+ },
246
+ }
247
+ if azimuth_authenticator_federated_enabled
248
+ else {}
249
+ ),
250
+ recursive = True
251
+ )
252
+ }}
253
+
254
+ # The authentication settings, structured as defaults + overrides
255
+ azimuth_authentication_defaults : >-
256
+ {{-
257
+ { "type": azimuth_authentication_type } |
258
+ combine(
259
+ { "openstack": azimuth_openstack_authentication }
260
+ if azimuth_authentication_type == "openstack"
261
+ else {}
262
+ ) |
263
+ combine(
264
+ { "oidc": azimuth_oidc_authentication }
265
+ if azimuth_authentication_type == "oidc"
266
+ else {}
267
+ )
268
+ }}
199
269
azimuth_authentication_overrides : {}
200
270
azimuth_authentication : >-
201
271
{{-
202
272
azimuth_authentication_defaults |
203
273
combine(azimuth_authentication_overrides, recursive = True)
204
274
}}
205
275
276
+ # The type of provider to use
277
+ # Setting this to "null" disables all cloud functionality, only retaining support
278
+ # for deploying onto a pre-configured Kubernetes cluster for each tenant
279
+ azimuth_cloud_provider_type : openstack
280
+
206
281
# OpenStack provider settings
207
282
# The template to use when searching for the internal network
208
283
# Only used if the internal network is not tagged
@@ -222,7 +297,6 @@ azimuth_openstack_create_internal_net: true
222
297
azimuth_openstack_internal_net_cidr : 192.168.3.0/24
223
298
# The nameservers to set on auto-created tenant internal networks
224
299
azimuth_openstack_internal_net_dns_nameservers : []
225
-
226
300
# Azimuth OpenStack provider configuration
227
301
azimuth_openstack_provider : >-
228
302
{{-
@@ -367,8 +441,15 @@ azimuth_release_defaults:
367
441
supportUrl : " {{ azimuth_support_url }}"
368
442
curatedSizes : " {{ azimuth_curated_sizes }}"
369
443
authentication : " {{ azimuth_authentication }}"
370
- provider :
371
- openstack : " {{ azimuth_openstack_provider }}"
444
+ provider : >-
445
+ {{-
446
+ { "type": azimuth_cloud_provider_type } |
447
+ combine(
448
+ { "openstack": azimuth_openstack_provider }
449
+ if azimuth_cloud_provider_type == "openstack"
450
+ else {}
451
+ )
452
+ }}
372
453
apps : >-
373
454
{{-
374
455
{
0 commit comments