mirror of
https://github.com/ansible-middleware/keycloak.git
synced 2025-07-30 16:41:30 -07:00
This commit is contained in:
parent
60ca798e1a
commit
0ee29eb483
7 changed files with 94 additions and 0 deletions
64
roles/keycloak_quarkus/tasks/config_store.yml
Normal file
64
roles/keycloak_quarkus/tasks/config_store.yml
Normal file
|
@ -0,0 +1,64 @@
|
|||
---
|
||||
- name: "Check if keytool exists in path"
|
||||
block:
|
||||
- name: "Attempt to run keytool"
|
||||
ansible.builtin.command: keytool -help
|
||||
register: keytool_check
|
||||
ignore_errors: true
|
||||
|
||||
- name: "Fail when no keytool found"
|
||||
when: keytool_check.rc != 0
|
||||
ansible.builtin.fail:
|
||||
msg: "keytool NOT found in the PATH, but is required for setting up the configuration key store"
|
||||
|
||||
- name: "Initialize configuration key store variables to be written"
|
||||
ansible.builtin.set_fact:
|
||||
store_items:
|
||||
- key: "kc.db-password"
|
||||
value: "{{ keycloak_quarkus_db_pass }}"
|
||||
|
||||
- name: "Initialize empty configuration key store"
|
||||
become: true
|
||||
# keytool doesn't allow creating an empty key store, so this is a hacky way around it
|
||||
ansible.builtin.shell: |
|
||||
set -o nounset # abort on unbound variable
|
||||
set -o pipefail # do not hide errors within pipes
|
||||
set -o errexit # abort on nonzero exit status
|
||||
|
||||
echo dummy | keytool -noprompt -importpass -alias dummy -keystore {{ keycloak_quarkus_config_key_store_file | quote }} -storepass {{ keycloak_quarkus_config_key_store_password | quote }} -storetype PKCS12
|
||||
keytool -delete -alias dummy -keystore {{ keycloak_quarkus_config_key_store_file | quote }} -storepass {{ keycloak_quarkus_config_key_store_password | quote }}
|
||||
args:
|
||||
creates: "{{ keycloak_quarkus_config_key_store_file }}"
|
||||
|
||||
- name: "Set configuration key store using keytool"
|
||||
ansible.builtin.shell: |
|
||||
set -o nounset # abort on unbound variable
|
||||
set -o pipefail # do not hide errors within pipes
|
||||
|
||||
keytool -list -alias {{ item.key | quote }} -keystore {{ keycloak_quarkus_config_key_store_file | quote }} -storepass {{ keycloak_quarkus_config_key_store_password | quote }}
|
||||
retVal=$?
|
||||
|
||||
set -o errexit # abort on nonzero exit status
|
||||
|
||||
if [ $retVal -eq 0 ]; then
|
||||
# value is already in keystore, but keytool has no replace function: delete and re-create instead
|
||||
# note that we can not read whether the value has changed either[^1], so we need to override it
|
||||
# [^1]: https://stackoverflow.com/a/37491400
|
||||
keytool -delete -alias {{ item.key | quote }} -keystore {{ keycloak_quarkus_config_key_store_file | quote }} -storepass {{ keycloak_quarkus_config_key_store_password | quote }}
|
||||
fi
|
||||
|
||||
echo {{ item.value | quote }} | keytool -noprompt -importpass -alias {{ item.key | quote }} -keystore {{ keycloak_quarkus_config_key_store_file | quote }} -storepass {{ keycloak_quarkus_config_key_store_password | quote }} -storetype PKCS12
|
||||
with_items: "{{ store_items }}"
|
||||
no_log: true
|
||||
become: true
|
||||
changed_when: true
|
||||
notify:
|
||||
- restart keycloak
|
||||
|
||||
- name: "Set owner of configuration key store {{ keycloak_quarkus_config_key_store_file }}"
|
||||
ansible.builtin.file:
|
||||
path: "{{ keycloak_quarkus_config_key_store_file }}"
|
||||
owner: "{{ keycloak.service_user }}"
|
||||
group: "{{ keycloak.service_group }}"
|
||||
mode: '0400'
|
||||
become: true
|
|
@ -26,6 +26,12 @@
|
|||
tags:
|
||||
- systemd
|
||||
|
||||
- name: Include configuration key store tasks
|
||||
when: keycloak.config_key_store_enabled
|
||||
ansible.builtin.include_tasks: config_store.yml
|
||||
tags:
|
||||
- install
|
||||
|
||||
- name: "Configure config for keycloak service"
|
||||
ansible.builtin.template:
|
||||
src: keycloak.conf.j2
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue