ansible/roles/keycloak/tasks/main.yml (66 lines of code) (raw):

# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you 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. # --- - name: Create Keycloak source directory file: path={{ keycloak_deployment_dir }} state=directory mode=0755 owner={{ user }} group={{ group }} become: yes - name: Create Keycloak source directory file: path={{ keycloak_source_dir }} state=directory mode=0755 owner={{ user }} group={{ group }} become: yes # Clone Keycloak repo - name: git checkout from Keycloak github repo {{ keycloak_repo }} # branch {{ keycloak_git_branch }} git: repo: "{{ keycloak_repo }}" dest: "{{ keycloak_source_dir }}" version: "9.0.2" force: yes register: checkout tags: update become: yes become_user: "{{ user }}" #- name: Run Keycloak maven build # command: mvn -Pdistribution -pl distribution/server-dist -am -Dmaven.test.skip clean install chdir="{{ keycloak_source_dir }}/" # environment: # MAVEN_OPTS: "-Xmx2048m" # register: build # tags: update # become: yes # become_user: "{{ user }}" - name: Delete configuration directories of the distributions file: state: absent path: "{{ keycloak_install_dir }}/standalone/configuration" become: yes become_user: "{{ user }}" ignore_errors: yes # Unarchive keycloak distribution - name: Unarchive keycloak unarchive: src: "{{ keycloak_source_dir }}/distribution/server-dist/target/keycloak-{{ keycloak_version }}.zip" dest: "{{ user_home }}" copy: no become: yes become_user: "{{ user }}" - name: Create modules/system/layers/keycloak/org/postgresql directory become: yes file: path: "{{ keycloak_deployment_dir }}/modules/system/layers/keycloak/org/postgresql/main" state: directory mode: 0755 owner: "{{ user }}" group: "{{ group }}" - name: copy module.xml to org/postgresql dir template: src: module.xml.j2 dest: "{{ keycloak_deployment_dir }}/modules/system/layers/keycloak/org/postgresql/main/module.xml" owner: "{{ user }}" group: "{{ group }}" mode: '0644' become: yes become_user: "{{ user }}" - name: Download postgresql jar ansible.builtin.get_url: url: https://jdbc.postgresql.org/download/postgresql-42.3.6.jar dest: "{{ keycloak_deployment_dir }}/modules/system/layers/keycloak/org/postgresql/main/postgresql-42.3.6.jar" mode: '0644' become: yes become_user: "{{ user }}" - name: Setup postgresql for keycloak include_tasks: setup_postgres.yml - name: Restore old server's dump file include_tasks: restore_db.yml tags: [never, migrate_db] # <---------------------------- Server Configuration --------------------------------> # SSL Configuration & postgresql - name: copy keycloak configuration file (Standalone) template: > src=standalone.xml.j2 dest="{{ user_home }}/{{ keycloak_install_dir }}/standalone/configuration/standalone.xml" owner="{{ user }}" group="{{ group }}" mode="u=rw,g=r,o=r" become: yes become_user: "{{ user }}" tags: - standalone # </------------------------------ Server Configuration ends ----------------------------> # <---------- setup init script for keycloak, starts the server after reboot -----------> - name: Create Keycloak run directory become: yes file: path: "{{ user_home }}/run" state: directory mode: 0755 owner: "{{ user }}" group: "{{ group }}" - name: Copy keycloak script to run directory template: > src=keycloak-standalone-init.j2 dest="{{ user_home }}/run/keycloak.sh" owner="{{ user }}" group="{{ group }}" mode="u=rwx,g=rx,o=rx" become: yes become_user: "{{ user }}" tags: - standalone - name: copy systemd script file (Standalone) for {{ user }} template: > src=keycloak.service.j2 dest="/etc/systemd/system/keycloak.service" owner="{{ user }}" group="{{ group }}" mode="u=rwx,g=rx,o=rx" become: yes tags: - standalone # <--------------------------start keycloak Identity server------------------------------> - name: reload systemctl daemon command: systemctl daemon-reload become: yes tags: - always - name: Restart Keycloak server service: name: keycloak state: restarted enabled: yes become: yes