|
5 | 5 | - name: Wait for SSH |
6 | 6 | ansible.builtin.wait_for_connection: |
7 | 7 |
|
8 | | -- name: Check Docker socket |
9 | | - become: true |
10 | | - ansible.builtin.stat: |
11 | | - path: /var/run/docker.sock |
12 | | - register: keycloak_docker_socket |
| 8 | +- name: Detect tmachine container runtime |
| 9 | + ansible.builtin.include_role: |
| 10 | + name: tmachine_container_runtime |
13 | 11 |
|
14 | | -- name: Select Keycloak container runtime |
| 12 | +- name: Set Keycloak runtime values |
15 | 13 | ansible.builtin.set_fact: |
16 | | - keycloak_runtime: "{{ 'docker' if keycloak_docker_socket.stat.exists else 'podman' }}" |
| 14 | + keycloak_runtime_user: >- |
| 15 | + {{ 'tmachine' if tmachine_container_runtime_is_rootless else 'root' }} |
| 16 | + keycloak_runtime_home: >- |
| 17 | + {{ '/home/tmachine' if tmachine_container_runtime_is_rootless else '/root' }} |
| 18 | + keycloak_runtime_state_directory: >- |
| 19 | + {{ '/home/tmachine/.local/share/openshell-keycloak' |
| 20 | + if tmachine_container_runtime_is_rootless else keycloak_state_directory }} |
17 | 21 |
|
18 | 22 | - name: Require Keycloak container runtime |
19 | 23 | become: true |
| 24 | + become_user: "{{ keycloak_runtime_user }}" |
20 | 25 | ansible.builtin.command: |
21 | 26 | argv: |
22 | | - - "{{ keycloak_runtime }}" |
| 27 | + - "{{ tmachine_container_runtime_name }}" |
23 | 28 | - --version |
| 29 | + environment: |
| 30 | + HOME: "{{ keycloak_runtime_home }}" |
24 | 31 | changed_when: false |
25 | 32 |
|
26 | 33 | - name: Create Keycloak state directory |
27 | 34 | become: true |
28 | 35 | ansible.builtin.file: |
29 | | - path: "{{ keycloak_state_directory }}" |
| 36 | + path: "{{ keycloak_runtime_state_directory }}" |
30 | 37 | state: directory |
| 38 | + owner: "{{ keycloak_runtime_user }}" |
| 39 | + group: "{{ keycloak_runtime_user }}" |
31 | 40 | mode: "0755" |
32 | 41 |
|
33 | 42 | - name: Install Keycloak realm fixture |
34 | 43 | become: true |
35 | 44 | ansible.builtin.copy: |
36 | 45 | src: "{{ keycloak_realm_file }}" |
37 | | - dest: "{{ keycloak_state_directory }}/realm.json" |
| 46 | + dest: "{{ keycloak_runtime_state_directory }}/realm.json" |
| 47 | + owner: "{{ keycloak_runtime_user }}" |
| 48 | + group: "{{ keycloak_runtime_user }}" |
38 | 49 | mode: "0644" |
39 | 50 |
|
40 | 51 | - name: Remove an existing Keycloak fixture |
41 | 52 | become: true |
| 53 | + become_user: "{{ keycloak_runtime_user }}" |
42 | 54 | ansible.builtin.command: |
43 | 55 | argv: |
44 | | - - "{{ keycloak_runtime }}" |
| 56 | + - "{{ tmachine_container_runtime_name }}" |
45 | 57 | - rm |
46 | 58 | - --force |
47 | 59 | - "{{ keycloak_container_name }}" |
| 60 | + environment: |
| 61 | + HOME: "{{ keycloak_runtime_home }}" |
48 | 62 | changed_when: false |
49 | 63 | failed_when: false |
50 | 64 |
|
51 | 65 | - name: Start Keycloak fixture |
52 | 66 | become: true |
| 67 | + become_user: "{{ keycloak_runtime_user }}" |
53 | 68 | ansible.builtin.command: |
54 | 69 | argv: |
55 | | - - "{{ keycloak_runtime }}" |
| 70 | + - "{{ tmachine_container_runtime_name }}" |
56 | 71 | - run |
57 | 72 | - --detach |
58 | 73 | - --name |
|
64 | 79 | - --env |
65 | 80 | - "KEYCLOAK_ADMIN_PASSWORD={{ keycloak_admin_password }}" |
66 | 81 | - --volume |
67 | | - - "{{ keycloak_state_directory }}/realm.json:/opt/keycloak/data/import/realm.json:ro,z" |
| 82 | + - "{{ keycloak_runtime_state_directory }}/realm.json:/opt/keycloak/data/import/realm.json:ro,z" |
68 | 83 | - "{{ keycloak_image }}" |
69 | 84 | - start-dev |
70 | 85 | - --import-realm |
| 86 | + environment: |
| 87 | + HOME: "{{ keycloak_runtime_home }}" |
71 | 88 | changed_when: true |
72 | 89 |
|
73 | 90 | - name: Wait for Keycloak discovery endpoint |
|
83 | 100 |
|
84 | 101 | - name: Read Keycloak logs after failed health check |
85 | 102 | become: true |
| 103 | + become_user: "{{ keycloak_runtime_user }}" |
86 | 104 | ansible.builtin.command: |
87 | 105 | argv: |
88 | | - - "{{ keycloak_runtime }}" |
| 106 | + - "{{ tmachine_container_runtime_name }}" |
89 | 107 | - logs |
90 | 108 | - --tail |
91 | 109 | - "30" |
92 | 110 | - "{{ keycloak_container_name }}" |
| 111 | + environment: |
| 112 | + HOME: "{{ keycloak_runtime_home }}" |
93 | 113 | register: keycloak_logs |
94 | 114 | changed_when: false |
95 | 115 | failed_when: false |
|
0 commit comments