Vendor middleware_automation.keycloak collection
Needed for keycloak_authentication_v2, to manage Keycloak authentication flows (e.g. the CCCHH browser flow) as YAML. Chosen over community.general's own copy of the module (deprecated in favor of this collection, and limited to 4 sub-flow levels there vs. 10 here).
This commit is contained in:
parent
4540dc5516
commit
4832e5da5d
159 changed files with 34399 additions and 0 deletions
|
|
@ -0,0 +1,119 @@
|
|||
{{ ansible_managed | comment('xml') }}
|
||||
<!--
|
||||
~ Copyright 2019 Red Hat, Inc. and/or its affiliates
|
||||
~ and other contributors as indicated by the @author tags.
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
|
||||
<infinispan
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="urn:infinispan:config:15.0 http://www.infinispan.org/schemas/infinispan-config-15.0.xsd"
|
||||
xmlns="urn:infinispan:config:15.0">
|
||||
|
||||
{% set stack_expression='' %}
|
||||
{% if keycloak_quarkus_version is version_compare('26.2.0', '<') %}
|
||||
{% if keycloak_quarkus_ha_enabled %}
|
||||
{% if keycloak_quarkus_ha_discovery == 'TCPPING' %}
|
||||
{% set stack_expression='stack="tcpping"' %}
|
||||
<jgroups>
|
||||
<stack name="tcpping" extends="tcp">
|
||||
<!-- <TCP external_addr="${env.KC_EXTERNAL_ADDR}" bind_addr="{{ keycloak_quarkus_http_host }}" bind_port="{{ keycloak_quarkus_jgroups_port }}" /> -->
|
||||
<TCPPING
|
||||
initial_hosts="{{ keycloak_quarkus_cluster_nodes | map(attribute='inventory_host') | join (',') }}"
|
||||
port_range="0"
|
||||
stack.combine="REPLACE"
|
||||
stack.position="MPING"
|
||||
/>
|
||||
</stack>
|
||||
</jgroups>
|
||||
{% elif keycloak_quarkus_ha_discovery == 'JDBCPING' %}
|
||||
{% set stack_expression='stack="JDBC_PING2"' %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<cache-container name="keycloak">
|
||||
<transport lock-timeout="60000" {{ stack_expression }}/>
|
||||
<local-cache name="realms" simple-cache="true">
|
||||
<encoding>
|
||||
<key media-type="application/x-java-object"/>
|
||||
<value media-type="application/x-java-object"/>
|
||||
</encoding>
|
||||
<memory max-count="10000"/>
|
||||
</local-cache>
|
||||
<local-cache name="users" simple-cache="true">
|
||||
<encoding>
|
||||
<key media-type="application/x-java-object"/>
|
||||
<value media-type="application/x-java-object"/>
|
||||
</encoding>
|
||||
<memory max-count="10000"/>
|
||||
</local-cache>
|
||||
<distributed-cache name="sessions" owners="2">
|
||||
<expiration lifespan="-1"/>
|
||||
<memory max-count="10000"/>
|
||||
</distributed-cache>
|
||||
<distributed-cache name="authenticationSessions" owners="2">
|
||||
<expiration lifespan="-1"/>
|
||||
</distributed-cache>
|
||||
<distributed-cache name="offlineSessions" owners="2">
|
||||
<expiration lifespan="-1"/>
|
||||
<memory max-count="10000"/>
|
||||
</distributed-cache>
|
||||
<distributed-cache name="clientSessions" owners="2">
|
||||
<expiration lifespan="-1"/>
|
||||
<memory max-count="10000"/>
|
||||
</distributed-cache>
|
||||
<distributed-cache name="offlineClientSessions" owners="2">
|
||||
<expiration lifespan="-1"/>
|
||||
<memory max-count="10000"/>
|
||||
</distributed-cache>
|
||||
<distributed-cache name="loginFailures" owners="2">
|
||||
<expiration lifespan="-1"/>
|
||||
</distributed-cache>
|
||||
<local-cache name="authorization" simple-cache="true">
|
||||
<encoding>
|
||||
<key media-type="application/x-java-object"/>
|
||||
<value media-type="application/x-java-object"/>
|
||||
</encoding>
|
||||
<memory max-count="10000"/>
|
||||
</local-cache>
|
||||
<replicated-cache name="work">
|
||||
<expiration lifespan="-1"/>
|
||||
</replicated-cache>
|
||||
<local-cache name="keys" simple-cache="true">
|
||||
<encoding>
|
||||
<key media-type="application/x-java-object"/>
|
||||
<value media-type="application/x-java-object"/>
|
||||
</encoding>
|
||||
<expiration max-idle="3600000"/>
|
||||
<memory max-count="1000"/>
|
||||
</local-cache>
|
||||
<local-cache name="crl" simple-cache="true">
|
||||
<encoding>
|
||||
<key media-type="application/x-java-object"/>
|
||||
<value media-type="application/x-java-object"/>
|
||||
</encoding>
|
||||
<expiration lifespan="-1"/>
|
||||
<memory max-count="1000"/>
|
||||
</local-cache>
|
||||
<distributed-cache name="actionTokens" owners="2">
|
||||
<encoding>
|
||||
<key media-type="application/x-java-object"/>
|
||||
<value media-type="application/x-java-object"/>
|
||||
</encoding>
|
||||
<expiration max-idle="-1" lifespan="-1" interval="300000"/>
|
||||
<memory max-count="-1"/>
|
||||
</distributed-cache>
|
||||
</cache-container>
|
||||
</infinispan>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
{{ ansible_managed | comment }}
|
||||
{% if not ansible_local.keycloak.general.bootstrapped | default(false) | bool %}
|
||||
KC_BOOTSTRAP_ADMIN_USERNAME={{ keycloak_quarkus_bootstrap_admin_user }}
|
||||
KC_BOOTSTRAP_ADMIN_PASSWORD='{{ keycloak_quarkus_bootstrap_admin_password }}'
|
||||
{% else %}
|
||||
{{ keycloak.bootstrap_mnemonic }}
|
||||
{% endif %}
|
||||
PATH="{{ keycloak_quarkus_java_home | default(keycloak_sys_pkg_java_home, true) }}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
JAVA_HOME="{{ keycloak_quarkus_java_home | default(keycloak_sys_pkg_java_home, true) }}"
|
||||
JAVA_OPTS="{{ keycloak_quarkus_java_opts }}"
|
||||
|
||||
# Custom ENV variables
|
||||
{% for env in keycloak_quarkus_additional_env_vars %}
|
||||
{{ env.key }}={{ env.value }}
|
||||
{% endfor %}
|
||||
|
|
@ -0,0 +1,110 @@
|
|||
{{ ansible_managed | comment }}
|
||||
|
||||
{% if keycloak_quarkus_db_enabled %}
|
||||
# Database
|
||||
db={{ keycloak_quarkus_db_engine }}
|
||||
db-url={{ keycloak_quarkus_db_url }}
|
||||
db-username={{ keycloak_quarkus_db_user }}
|
||||
{% if not keycloak.config_key_store_enabled %}
|
||||
db-password={{ keycloak_quarkus_db_pass }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if keycloak.config_key_store_enabled %}
|
||||
# Config store
|
||||
config-keystore={{ keycloak_quarkus_config_key_store_file }}
|
||||
config-keystore-password={{ keycloak_quarkus_config_key_store_password }}
|
||||
{% endif %}
|
||||
|
||||
# Observability
|
||||
metrics-enabled={{ keycloak_quarkus_metrics_enabled | lower }}
|
||||
health-enabled={{ keycloak_quarkus_health_enabled | lower }}
|
||||
|
||||
# HTTP
|
||||
http-enabled={{ keycloak_quarkus_http_enabled | lower }}
|
||||
{% if keycloak_quarkus_http_enabled %}
|
||||
http-port={{ keycloak_quarkus_http_port }}
|
||||
{% endif %}
|
||||
http-relative-path={{ keycloak_quarkus_http_relative_path }}
|
||||
http-host={{ keycloak_quarkus_http_host }}
|
||||
|
||||
# Management
|
||||
http-management-port={{ keycloak_quarkus_http_management_port }}
|
||||
{% if keycloak_quarkus_http_management_relative_path is defined and keycloak_quarkus_http_management_relative_path | length > 0 %}
|
||||
http-management-relative-path={{ keycloak_quarkus_http_management_relative_path }}
|
||||
{% endif %}
|
||||
|
||||
# HTTPS
|
||||
https-port={{ keycloak_quarkus_https_port }}
|
||||
{% if keycloak_quarkus_https_key_file_enabled %}
|
||||
https-certificate-file={{ keycloak_quarkus_cert_file}}
|
||||
https-certificate-key-file={{ keycloak_quarkus_key_file }}
|
||||
{% endif %}
|
||||
{% if keycloak_quarkus_https_key_store_enabled %}
|
||||
https-key-store-file={{ keycloak_quarkus_https_key_store_file }}
|
||||
https-key-store-password={{ keycloak_quarkus_https_key_store_password }}
|
||||
{% endif %}
|
||||
{% if keycloak_quarkus_https_trust_store_enabled %}
|
||||
https-trust-store-file={{ keycloak_quarkus_https_trust_store_file }}
|
||||
https-trust-store-password={{ keycloak_quarkus_https_trust_store_password }}
|
||||
{% endif %}
|
||||
|
||||
# Client URL configuration
|
||||
hostname={{ keycloak_quarkus_hostname }}
|
||||
hostname-admin={{ keycloak_quarkus_hostname_admin }}
|
||||
hostname-strict={{ keycloak_quarkus_hostname_strict | lower }}
|
||||
hostname-backchannel-dynamic={{ keycloak_quarkus_hostname_backchannel_dynamic | lower }}
|
||||
|
||||
# Cluster
|
||||
{% if keycloak_quarkus_ha_enabled %}
|
||||
cache=ispn
|
||||
{% if keycloak_quarkus_cache_managed_infinispan_config %}
|
||||
cache-config-file=cache-ispn.xml
|
||||
{% endif %}
|
||||
{% if keycloak_quarkus_cache_remote %}
|
||||
cache-remote-username={{ keycloak_quarkus_cache_remote_username }}
|
||||
cache-remote-password={{ keycloak_quarkus_cache_remote_password }}
|
||||
cache-remote-host={{ keycloak_quarkus_cache_remote_host }}
|
||||
cache-remote-port={{ keycloak_quarkus_cache_remote_port }}
|
||||
cache-remote-tls-enabled={{ keycloak_quarkus_cache_remote_tls_enabled | lower }}
|
||||
{% endif %}
|
||||
{{ keycloak_quarkus_cache_embedded_properties }}
|
||||
{% endif %}
|
||||
|
||||
{% if keycloak_quarkus_proxy_headers | length > 0 %}
|
||||
proxy-headers={{ keycloak_quarkus_proxy_headers | lower }}
|
||||
{% elif keycloak_quarkus_proxy_mode is defined and keycloak_quarkus_proxy_mode != "none" %}
|
||||
# Deprecated Proxy configuration
|
||||
proxy={{ keycloak_quarkus_proxy_mode }}
|
||||
{% endif %}
|
||||
|
||||
spi-sticky-session-encoder-infinispan-should-attach-route={{ keycloak_quarkus_spi_sticky_session_encoder_infinispan_should_attach_route | d(true) | lower }}
|
||||
|
||||
# Transaction
|
||||
transaction-xa-enabled={{ keycloak_quarkus_transaction_xa_enabled | lower }}
|
||||
|
||||
# Logging
|
||||
#log-format=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n
|
||||
log={{ keycloak_quarkus_log }}
|
||||
log-level={{ keycloak.log.level }}
|
||||
log-file={{ keycloak.log.file }}
|
||||
log-file-format={{ keycloak.log.format }}
|
||||
|
||||
# Vault
|
||||
{% if keycloak_quarkus_ks_vault_enabled %}
|
||||
vault=keystore
|
||||
vault-file={{ keycloak_quarkus_ks_vault_file }}
|
||||
vault-type={{ keycloak_quarkus_ks_vault_type }}
|
||||
vault-pass={{ keycloak_quarkus_ks_vault_pass }}
|
||||
{% endif %}
|
||||
|
||||
|
||||
# Providers
|
||||
{% for provider in keycloak_quarkus_providers %}
|
||||
{% if provider.default is defined and provider.default %}
|
||||
spi-{{ provider.spi }}-provider={{ provider.id }}
|
||||
{% endif %}
|
||||
{% if provider.properties is defined %}{% for property in provider.properties %}
|
||||
spi-{{ provider.spi }}-{{ provider.id }}-{{ property.key }}={{ property.value }}
|
||||
{% endfor %}{% endif %}
|
||||
{% endfor %}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[general]
|
||||
bootstrapped={{ bootstrapped | lower }}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
{{ ansible_managed | comment }}
|
||||
[Unit]
|
||||
Description=Keycloak Server
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=-{{ keycloak_quarkus_sysconf_file }}
|
||||
{% if keycloak_quarkus_start_dev %}
|
||||
ExecStart={{ keycloak.home }}/bin/kc.sh start-dev
|
||||
{% else %}
|
||||
ExecStart={{ keycloak.home }}/bin/kc.sh start --optimized
|
||||
{% endif %}
|
||||
User={{ keycloak.service_user }}
|
||||
Group={{ keycloak.service_group }}
|
||||
SuccessExitStatus=0 143
|
||||
{% if keycloak_quarkus_service_restart_always %}
|
||||
Restart=always
|
||||
{% elif keycloak_quarkus_service_restart_on_failure %}
|
||||
Restart=on-failure
|
||||
{% endif %}
|
||||
RestartSec={{ keycloak_quarkus_service_restartsec }}
|
||||
{% if keycloak_quarkus_http_port | int < 1024 or keycloak_quarkus_https_port | int < 1024 %}
|
||||
AmbientCapabilities=CAP_NET_BIND_SERVICE
|
||||
{% endif %}
|
||||
{% if keycloak_quarkus_systemd_wait_for_port %}
|
||||
ExecStartPost=/usr/bin/timeout {{ keycloak_quarkus_systemd_wait_for_timeout }} sh -c 'while ! ss -H -t -l -n sport = :{{ keycloak_quarkus_systemd_wait_for_port_number }} | grep -q "^LISTEN.*:{{ keycloak_quarkus_systemd_wait_for_port_number }}"; do sleep 1; done && /bin/sleep {{ keycloak_quarkus_systemd_wait_for_delay }}'
|
||||
{% endif %}
|
||||
{% if keycloak_quarkus_systemd_wait_for_log %}
|
||||
ExecStartPost=/usr/bin/timeout {{ keycloak_quarkus_systemd_wait_for_timeout }} sh -c 'cat {{ keycloak.log.file }} | sed "/Profile.*activated/ q" && /bin/sleep {{ keycloak_quarkus_systemd_wait_for_delay }}'
|
||||
{% endif %}
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
{{ ansible_managed | comment }}
|
||||
{% if keycloak_quarkus_ha_enabled %}
|
||||
{% if keycloak_quarkus_version.split('.')[0] | int < 22 %}
|
||||
quarkus.infinispan-client.server-list={{ keycloak_quarkus_cache_remote_host }}:{{ keycloak_quarkus_cache_remote_port }}
|
||||
quarkus.infinispan-client.auth-username={{ keycloak_quarkus_cache_remote_username }}
|
||||
quarkus.infinispan-client.auth-password={{ keycloak_quarkus_cache_remote_password }}
|
||||
{% else %}
|
||||
quarkus.infinispan-client.hosts={{ keycloak_quarkus_cache_remote_host }}:{{ keycloak_quarkus_cache_remote_port }}
|
||||
quarkus.infinispan-client.username={{ keycloak_quarkus_cache_remote_username }}
|
||||
quarkus.infinispan-client.password={{ keycloak_quarkus_cache_remote_password }}
|
||||
{% endif %}
|
||||
quarkus.infinispan-client.client-intelligence=HASH_DISTRIBUTION_AWARE
|
||||
quarkus.infinispan-client.use-auth=true
|
||||
quarkus.infinispan-client.auth-realm=default
|
||||
quarkus.infinispan-client.auth-server-name=infinispan
|
||||
quarkus.infinispan-client.sasl-mechanism={{ keycloak_quarkus_cache_remote_sasl_mechanism }}
|
||||
{% if keycloak_quarkus_cache_remote_tls_enabled %}
|
||||
quarkus.infinispan-client.trust-store={{ keycloak_quarkus_https_trust_store_file }}
|
||||
quarkus.infinispan-client.trust-store-password={{ keycloak_quarkus_https_trust_store_password }}
|
||||
quarkus.infinispan-client.trust-store-type=jks
|
||||
{% endif %}
|
||||
#quarkus.infinispan-client.use-schema-registration=true
|
||||
{% endif %}
|
||||
quarkus.log.file.rotation.max-file-size={{ keycloak_quarkus_log_max_file_size }}
|
||||
quarkus.log.file.rotation.max-backup-index={{ keycloak_quarkus_log_max_backup_index }}
|
||||
quarkus.log.file.rotation.file-suffix={{ keycloak_quarkus_log_file_suffix }}
|
||||
{% if keycloak_quarkus_db_enabled %}
|
||||
quarkus.transaction-manager.enable-recovery=true
|
||||
{% endif %}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
{{ ansible_managed | comment }}
|
||||
{% if not ansible_local.keycloak.general.bootstrapped | default(false) | bool %}
|
||||
KC_BOOTSTRAP_ADMIN_USERNAME={{ keycloak_quarkus_bootstrap_admin_user }}
|
||||
KC_BOOTSTRAP_ADMIN_PASSWORD='{{ keycloak_quarkus_bootstrap_admin_password }}'
|
||||
{% else %}
|
||||
{{ keycloak.bootstrap_mnemonic }}
|
||||
{% endif %}
|
||||
PATH="{{ keycloak_quarkus_java_home | default(keycloak_sys_pkg_java_home, true) }}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
JAVA_HOME="{{ keycloak_quarkus_java_home | default(keycloak_sys_pkg_java_home, true) }}"
|
||||
JAVA_OPTS="{{ keycloak_quarkus_java_opts }}"
|
||||
|
||||
# Custom ENV variables
|
||||
{% for env in keycloak_quarkus_additional_env_vars %}
|
||||
{{ env.key }}={{ env.value }}
|
||||
{% endfor %}
|
||||
|
|
@ -0,0 +1,110 @@
|
|||
{{ ansible_managed | comment }}
|
||||
|
||||
{% if keycloak_quarkus_db_enabled %}
|
||||
# Database
|
||||
db={{ keycloak_quarkus_db_engine }}
|
||||
db-url={{ keycloak_quarkus_db_url }}
|
||||
db-username={{ keycloak_quarkus_db_user }}
|
||||
{% if not keycloak.config_key_store_enabled %}
|
||||
db-password={{ keycloak_quarkus_db_pass }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if keycloak.config_key_store_enabled %}
|
||||
# Config store
|
||||
config-keystore={{ keycloak_quarkus_config_key_store_file }}
|
||||
config-keystore-password={{ keycloak_quarkus_config_key_store_password }}
|
||||
{% endif %}
|
||||
|
||||
# Observability
|
||||
metrics-enabled={{ keycloak_quarkus_metrics_enabled | lower }}
|
||||
health-enabled={{ keycloak_quarkus_health_enabled | lower }}
|
||||
|
||||
# HTTP
|
||||
http-enabled={{ keycloak_quarkus_http_enabled | lower }}
|
||||
{% if keycloak_quarkus_http_enabled %}
|
||||
http-port={{ keycloak_quarkus_http_port }}
|
||||
{% endif %}
|
||||
http-relative-path={{ keycloak_quarkus_http_relative_path }}
|
||||
http-host={{ keycloak_quarkus_http_host }}
|
||||
|
||||
# Management
|
||||
http-management-port={{ keycloak_quarkus_http_management_port }}
|
||||
{% if keycloak_quarkus_http_management_relative_path is defined and keycloak_quarkus_http_management_relative_path | length > 0 %}
|
||||
http-management-relative-path={{ keycloak_quarkus_http_management_relative_path }}
|
||||
{% endif %}
|
||||
|
||||
# HTTPS
|
||||
https-port={{ keycloak_quarkus_https_port }}
|
||||
{% if keycloak_quarkus_https_key_file_enabled %}
|
||||
https-certificate-file={{ keycloak_quarkus_cert_file}}
|
||||
https-certificate-key-file={{ keycloak_quarkus_key_file }}
|
||||
{% endif %}
|
||||
{% if keycloak_quarkus_https_key_store_enabled %}
|
||||
https-key-store-file={{ keycloak_quarkus_https_key_store_file }}
|
||||
https-key-store-password={{ keycloak_quarkus_https_key_store_password }}
|
||||
{% endif %}
|
||||
{% if keycloak_quarkus_https_trust_store_enabled %}
|
||||
https-trust-store-file={{ keycloak_quarkus_https_trust_store_file }}
|
||||
https-trust-store-password={{ keycloak_quarkus_https_trust_store_password }}
|
||||
{% endif %}
|
||||
|
||||
# Client URL configuration
|
||||
hostname={{ keycloak_quarkus_hostname }}
|
||||
hostname-admin={{ keycloak_quarkus_hostname_admin }}
|
||||
hostname-strict={{ keycloak_quarkus_hostname_strict | lower }}
|
||||
hostname-backchannel-dynamic={{ keycloak_quarkus_hostname_backchannel_dynamic | lower }}
|
||||
|
||||
# Cluster
|
||||
{% if keycloak_quarkus_ha_enabled %}
|
||||
cache=ispn
|
||||
{% if keycloak_quarkus_cache_managed_infinispan_config %}
|
||||
cache-config-file=cache-ispn.xml
|
||||
{% endif %}
|
||||
{% if keycloak_quarkus_cache_remote %}
|
||||
cache-remote-username={{ keycloak_quarkus_cache_remote_username }}
|
||||
cache-remote-password={{ keycloak_quarkus_cache_remote_password }}
|
||||
cache-remote-host={{ keycloak_quarkus_cache_remote_host }}
|
||||
cache-remote-port={{ keycloak_quarkus_cache_remote_port }}
|
||||
cache-remote-tls-enabled={{ keycloak_quarkus_cache_remote_tls_enabled | lower }}
|
||||
{% endif %}
|
||||
{{ keycloak_quarkus_cache_embedded_properties }}
|
||||
{% endif %}
|
||||
|
||||
{% if keycloak_quarkus_proxy_headers | length > 0 %}
|
||||
proxy-headers={{ keycloak_quarkus_proxy_headers | lower }}
|
||||
{% elif keycloak_quarkus_proxy_mode is defined and keycloak_quarkus_proxy_mode != "none" %}
|
||||
# Deprecated Proxy configuration
|
||||
proxy={{ keycloak_quarkus_proxy_mode }}
|
||||
{% endif %}
|
||||
|
||||
spi-sticky-session-encoder-infinispan-should-attach-route={{ keycloak_quarkus_spi_sticky_session_encoder_infinispan_should_attach_route | d(true) | lower }}
|
||||
|
||||
# Transaction
|
||||
transaction-xa-enabled={{ keycloak_quarkus_transaction_xa_enabled | lower }}
|
||||
|
||||
# Logging
|
||||
#log-format=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n
|
||||
log={{ keycloak_quarkus_log }}
|
||||
log-level={{ keycloak.log.level }}
|
||||
log-file={{ keycloak.log.file }}
|
||||
log-file-format={{ keycloak.log.format }}
|
||||
|
||||
# Vault
|
||||
{% if keycloak_quarkus_ks_vault_enabled %}
|
||||
vault=keystore
|
||||
vault-file={{ keycloak_quarkus_ks_vault_file }}
|
||||
vault-type={{ keycloak_quarkus_ks_vault_type }}
|
||||
vault-pass={{ keycloak_quarkus_ks_vault_pass }}
|
||||
{% endif %}
|
||||
|
||||
|
||||
# Providers
|
||||
{% for provider in keycloak_quarkus_providers %}
|
||||
{% if provider.default is defined and provider.default %}
|
||||
spi-{{ provider.spi }}-provider={{ provider.id }}
|
||||
{% endif %}
|
||||
{% if provider.properties is defined %}{% for property in provider.properties %}
|
||||
spi-{{ provider.spi }}-{{ provider.id }}-{{ property.key }}={{ property.value }}
|
||||
{% endfor %}{% endif %}
|
||||
{% endfor %}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[general]
|
||||
bootstrapped={{ bootstrapped | lower }}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
{{ ansible_managed | comment }}
|
||||
[Unit]
|
||||
Description=Keycloak Server
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=-{{ keycloak_quarkus_sysconf_file }}
|
||||
{% if keycloak_quarkus_start_dev %}
|
||||
ExecStart={{ keycloak.home }}/bin/kc.sh start-dev
|
||||
{% else %}
|
||||
ExecStart={{ keycloak.home }}/bin/kc.sh start --optimized
|
||||
{% endif %}
|
||||
User={{ keycloak.service_user }}
|
||||
Group={{ keycloak.service_group }}
|
||||
SuccessExitStatus=0 143
|
||||
{% if keycloak_quarkus_service_restart_always %}
|
||||
Restart=always
|
||||
{% elif keycloak_quarkus_service_restart_on_failure %}
|
||||
Restart=on-failure
|
||||
{% endif %}
|
||||
RestartSec={{ keycloak_quarkus_service_restartsec }}
|
||||
{% if keycloak_quarkus_http_port | int < 1024 or keycloak_quarkus_https_port | int < 1024 %}
|
||||
AmbientCapabilities=CAP_NET_BIND_SERVICE
|
||||
{% endif %}
|
||||
{% if keycloak_quarkus_systemd_wait_for_port %}
|
||||
ExecStartPost=/usr/bin/timeout {{ keycloak_quarkus_systemd_wait_for_timeout }} sh -c 'while ! ss -H -t -l -n sport = :{{ keycloak_quarkus_systemd_wait_for_port_number }} | grep -q "^LISTEN.*:{{ keycloak_quarkus_systemd_wait_for_port_number }}"; do sleep 1; done && /bin/sleep {{ keycloak_quarkus_systemd_wait_for_delay }}'
|
||||
{% endif %}
|
||||
{% if keycloak_quarkus_systemd_wait_for_log %}
|
||||
ExecStartPost=/usr/bin/timeout {{ keycloak_quarkus_systemd_wait_for_timeout }} sh -c 'cat {{ keycloak.log.file }} | sed "/Profile.*activated/ q" && /bin/sleep {{ keycloak_quarkus_systemd_wait_for_delay }}'
|
||||
{% endif %}
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Loading…
Reference in a new issue