--- - name: Exiger le mot de passe admin Keycloak (Vault) ansible.builtin.assert: that: - serveur_keycloak_admin_password | length > 0 fail_msg: "serveur_keycloak_admin_password est requis (Ansible Vault)." - name: Charger le registre des bases applicatives ansible.builtin.include_vars: file: "{{ role_path }}/../../docs/bases-donnees.yml" - name: Resoudre l'entree de base de donnees Keycloak (par consommateur) ansible.builtin.set_fact: serveur_keycloak_entree: >- {{ ((bases_donnees | default({})) | dict2items | selectattr('value.consommateur', 'defined') | selectattr('value.consommateur', 'equalto', serveur_keycloak_groupe) | map(attribute='value') | list | first) | default({}) }} - name: Exiger une entree de registre et son secret ansible.builtin.assert: that: - serveur_keycloak_entree.base is defined - serveur_keycloak_entree.proprietaire is defined - serveur_keycloak_entree.secret is defined fail_msg: "Aucune base avec consommateur '{{ serveur_keycloak_groupe }}' dans docs/bases-donnees.yml." - name: Resoudre le mot de passe de base de donnees (Vault) ansible.builtin.set_fact: serveur_keycloak_db_password: "{{ lookup('vars', serveur_keycloak_entree.secret) }}" no_log: true - name: Resoudre l'hote du serveur de base de donnees (registre) ansible.builtin.set_fact: serveur_keycloak_db_host: >- {{ (serveurs_bd | default({}))[serveur_keycloak_entree.serveur].hote | default(serveur_keycloak_db_host) }} - name: Installer le JRE ansible.builtin.apt: name: "{{ serveur_keycloak_java_paquet }}" state: present update_cache: true cache_valid_time: 3600 - name: Creer l'utilisateur systeme keycloak ansible.builtin.user: name: "{{ serveur_keycloak_utilisateur }}" system: true home: "{{ serveur_keycloak_home }}" create_home: false shell: /usr/sbin/nologin - name: Creer le repertoire d'installation ansible.builtin.file: path: "{{ serveur_keycloak_home }}" state: directory owner: "{{ serveur_keycloak_utilisateur }}" group: "{{ serveur_keycloak_utilisateur }}" mode: "0750" - name: Telecharger la distribution Keycloak ansible.builtin.get_url: url: "{{ serveur_keycloak_url }}" dest: "/tmp/keycloak-{{ serveur_keycloak_version }}.tar.gz" mode: "0644" - name: Extraire Keycloak ansible.builtin.unarchive: src: "/tmp/keycloak-{{ serveur_keycloak_version }}.tar.gz" dest: "{{ serveur_keycloak_home }}" remote_src: true extra_opts: ["--strip-components=1"] owner: "{{ serveur_keycloak_utilisateur }}" group: "{{ serveur_keycloak_utilisateur }}" creates: "{{ serveur_keycloak_home }}/bin/kc.sh" - name: Deployer keycloak.conf (config non sensible) ansible.builtin.template: src: keycloak.conf.j2 dest: "{{ serveur_keycloak_home }}/conf/keycloak.conf" owner: "{{ serveur_keycloak_utilisateur }}" group: "{{ serveur_keycloak_utilisateur }}" mode: "0640" notify: Redemarrer keycloak - name: Creer le repertoire de configuration des secrets ansible.builtin.file: path: /etc/keycloak state: directory owner: root group: "{{ serveur_keycloak_utilisateur }}" mode: "0750" - name: Deployer le fichier d'environnement (secrets) ansible.builtin.template: src: keycloak.env.j2 dest: /etc/keycloak/keycloak.env owner: root group: "{{ serveur_keycloak_utilisateur }}" mode: "0640" no_log: true notify: Redemarrer keycloak - name: Construire Keycloak (une fois par version) ansible.builtin.shell: cmd: >- {{ serveur_keycloak_home }}/bin/kc.sh build --db=postgres && touch {{ serveur_keycloak_home }}/.kc-built-{{ serveur_keycloak_version }} creates: "{{ serveur_keycloak_home }}/.kc-built-{{ serveur_keycloak_version }}" become: true become_user: "{{ serveur_keycloak_utilisateur }}" notify: Redemarrer keycloak - name: Deployer l'unite systemd keycloak ansible.builtin.template: src: keycloak.service.j2 dest: /etc/systemd/system/keycloak.service owner: root group: root mode: "0644" notify: Redemarrer keycloak - name: Activer et demarrer keycloak ansible.builtin.systemd: name: "{{ serveur_keycloak_service }}" enabled: true state: started daemon_reload: true