Skip to content

Commit b9d9874

Browse files
committed
feat: ubuntu compatibility
1 parent d748201 commit b9d9874

22 files changed

+222
-26
lines changed

bindep.txt

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
python3-dev [compile platform:dpkg]
12
python3-devel [compile platform:rpm]
23
python39-devel [compile platform:centos-8 platform:rhel-8]
3-
git-lfs [platform:rpm]
4-
python3-netaddr [platform:rpm]
5-
python3-lxml [platform:rpm]
6-
python3-jmespath [platform:rpm]
7-
python3-requests [platform:rpm]
4+
git-lfs [platform:rpm platform:dpkg]
5+
python3-netaddr [platform:rpm platform:dpkg]
6+
python3-lxml [platform:rpm platform:dpkg]
7+
python3-jmespath [platform:rpm platform:dpkg]
8+
python3-requests [platform:rpm platform:dpkg]
89

molecule/default/prepare.yml

+8-1
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,12 @@
1818
name:
1919
- java-1.8.0-openjdk
2020
state: present
21+
when: ansible_facts['os_family'] == "RedHat"
2122

22-
23+
- name: Install JDK8
24+
become: yes
25+
ansible.builtin.apt:
26+
name:
27+
- openjdk-8-jdk
28+
state: present
29+
when: ansible_facts['os_family'] == "Debian"

molecule/quarkus-devmode/prepare.yml

+24
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,43 @@
22
- name: Prepare
33
hosts: all
44
tasks:
5+
- name: Install sudo
6+
ansible.builtin.apt:
7+
name:
8+
- sudo
9+
- openjdk-17-jdk-headless
10+
state: present
11+
when:
12+
- ansible_facts.os_family == 'Debian'
13+
514
- name: Install sudo
615
ansible.builtin.yum:
716
name:
817
- sudo
918
- java-17-openjdk-headless
1019
state: present
20+
when:
21+
- ansible_facts.os_family == 'RedHat'
1122

23+
- name: Link default logs directory
24+
ansible.builtin.file:
25+
state: link
26+
src: "{{ item }}"
27+
dest: /opt/openjdk
28+
force: true
29+
with_fileglob:
30+
- /usr/lib/jvm/java-17-openjdk*
31+
when:
32+
- ansible_facts.os_family == "Debian"
33+
1234
- name: Link default logs directory
1335
ansible.builtin.file:
1436
state: link
1537
src: /usr/lib/jvm/jre-17-openjdk
1638
dest: /opt/openjdk
1739
force: true
40+
when:
41+
- ansible_facts.os_family == "RedHat"
1842

1943
- name: "Display hera_home if defined."
2044
ansible.builtin.set_fact:

molecule/quarkus/prepare.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
hosts: all
44
tasks:
55
- name: Install sudo
6-
ansible.builtin.yum:
6+
ansible.builtin.package:
77
name: sudo
88
state: present
99

roles/keycloak/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Requirements
1010
This role requires the `python3-netaddr` library installed on the controller node.
1111

1212
* to install via yum/dnf: `dnf install python3-netaddr`
13+
* to install via apt: `apt install python3-netaddr`
1314
* or via pip: `pip install netaddr==0.8.0`
1415
* or via the collection: `pip install -r requirements.txt`
1516

roles/keycloak/defaults/main.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ keycloak_installdir: "{{ keycloak_dest }}/keycloak-{{ keycloak_version }}"
88
keycloak_offline_install: false
99

1010
### Install location and service settings
11-
keycloak_jvm_package: java-1.8.0-openjdk-headless
11+
keycloak_jvm_package: "{{ 'java-1.8.0-openjdk-headless' if ansible_facts.os_family == 'RedHat' else 'openjdk-8-jdk-headless' }}"
12+
1213
keycloak_java_home:
1314
keycloak_dest: /opt/keycloak
1415
keycloak_jboss_home: "{{ keycloak_installdir }}"
@@ -33,6 +34,7 @@ keycloak_service_startlimitburst: "5"
3334
keycloak_service_restartsec: "10s"
3435

3536
keycloak_configure_firewalld: false
37+
keycloak_configure_iptables: false
3638

3739
### administrator console password
3840
keycloak_admin_password: ''

roles/keycloak/meta/argument_specs.yml

+5
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ argument_specs:
1111
default: "keycloak-legacy-{{ keycloak_version }}.zip"
1212
description: "keycloak install archive filename"
1313
type: "str"
14+
keycloak_configure_iptables:
15+
# line 33 of keycloak/defaults/main.yml
16+
default: false
17+
description: "Ensure iptables is running and configure keycloak ports"
18+
type: "bool"
1419
keycloak_configure_firewalld:
1520
# line 33 of keycloak/defaults/main.yml
1621
default: false

roles/keycloak/tasks/debian.yml

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
- name: Include firewall config tasks
3+
ansible.builtin.include_tasks: iptables.yml
4+
when: keycloak_configure_iptables
5+
tags:
6+
- firewall

roles/keycloak/tasks/fastpackages.yml

+14-1
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,27 @@
44
register: rpm_info
55
changed_when: false
66
failed_when: false
7+
when: ansible_facts.os_family == "RedHat"
78

89
- name: "Add missing packages to the yum install list"
910
ansible.builtin.set_fact:
1011
packages_to_install: "{{ packages_to_install | default([]) + rpm_info.stdout_lines | map('regex_findall', 'package (.+) is not installed$') | default([]) | flatten }}"
12+
when: ansible_facts.os_family == "RedHat"
1113

1214
- name: "Install packages: {{ packages_to_install }}"
1315
become: true
1416
ansible.builtin.yum:
1517
name: "{{ packages_to_install }}"
1618
state: present
17-
when: packages_to_install | default([]) | length > 0
19+
when:
20+
- packages_to_install | default([]) | length > 0
21+
- ansible_facts.os_family == "RedHat"
22+
23+
- name: "Install packages: {{ packages_list }}"
24+
become: true
25+
ansible.builtin.package:
26+
name: "{{ packages_list }}"
27+
state: present
28+
when:
29+
- packages_list | default([]) | length > 0
30+
- ansible_facts.os_family == "Debian"

roles/keycloak/tasks/iptables.yml

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
- name: Ensure required package iptables are installed
3+
ansible.builtin.include_tasks: fastpackages.yml
4+
vars:
5+
packages_list:
6+
- iptables
7+
8+
- name: "Configure firewall ports for {{ keycloak.service_name }}"
9+
become: true
10+
ansible.builtin.iptables:
11+
destination_port: "{{ item }}"
12+
action: "insert"
13+
rule_num: 6 # magic number I forget why
14+
chain: "INPUT"
15+
policy: "ACCEPT"
16+
protocol: tcp
17+
loop:
18+
- "{{ keycloak_http_port }}"
19+
- "{{ keycloak_https_port }}"
20+
- "{{ keycloak_management_http_port }}"
21+
- "{{ keycloak_management_https_port }}"
22+
- "{{ keycloak_jgroups_port }}"
23+
- "{{ keycloak_ajp_port }}"

roles/keycloak/tasks/main.yml

+11-4
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,17 @@
55
tags:
66
- prereqs
77

8-
- name: Include firewall config tasks
9-
ansible.builtin.include_tasks: firewalld.yml
10-
when: keycloak_configure_firewalld
8+
- name: Debian specific tasks
9+
ansible.builtin.include_tasks: debian.yml
10+
when: ansible_facts.os_family == "Debian"
1111
tags:
12-
- firewall
12+
- unbound
13+
14+
- name: RedHat specific tasks
15+
ansible.builtin.include_tasks: redhat.yml
16+
when: ansible_facts.os_family == "RedHat"
17+
tags:
18+
- unbound
1319

1420
- name: Include install tasks
1521
ansible.builtin.include_tasks: install.yml
@@ -26,6 +32,7 @@
2632
when:
2733
- sso_apply_patches is defined and sso_apply_patches
2834
- sso_enable is defined and sso_enable
35+
- ansible_facts.os_family == "RedHat"
2936
tags:
3037
- install
3138
- patch

roles/keycloak/tasks/prereqs.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,6 @@
4242
packages_list:
4343
- "{{ keycloak_jvm_package }}"
4444
- unzip
45-
- procps-ng
46-
- initscripts
47-
- tzdata-java
45+
- "{{ 'procps-ng' if ansible_facts.os_family == 'RedHat' else 'procps' }}"
46+
- "{{ 'initscripts' if ansible_facts.os_family == 'RedHat' else 'apt' }}"
47+
- "{{ 'tzdata-java' if ansible_facts.os_family == 'RedHat' else 'tzdata' }}"

roles/keycloak/tasks/redhat.yml

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
- name: Include firewall config tasks
3+
ansible.builtin.include_tasks: firewalld.yml
4+
when: keycloak_configure_firewalld
5+
tags:
6+
- firewall

roles/keycloak/tasks/systemd.yml

+25
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,32 @@
1010
notify:
1111
- restart keycloak
1212

13+
- name: Determine JAVA_HOME for selected JVM RPM
14+
ansible.builtin.set_fact:
15+
rpm_java_home: "/lib/jvm/java-{{ keycloak_jvm_package | regex_search('(?<=java-)[0-9.]+') }}-openjdk-{{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }}"
16+
when:
17+
- ansible_facts.os_family == 'Debian'
18+
1319
- name: Determine JAVA_HOME for selected JVM RPM
1420
ansible.builtin.set_fact:
1521
rpm_java_home: "/etc/alternatives/jre_{{ keycloak_jvm_package | regex_search('(?<=java-)[0-9.]+') }}"
22+
when:
23+
- ansible_facts.os_family == 'RedHat'
24+
25+
- name: "Configure sysconfig file for {{ keycloak.service_name }} service"
26+
become: true
27+
ansible.builtin.template:
28+
src: keycloak-sysconfig.j2
29+
dest: /etc/default/keycloak
30+
owner: root
31+
group: root
32+
mode: 0644
33+
vars:
34+
keycloak_rpm_java_home: "{{ rpm_java_home }}"
35+
when:
36+
- ansible_facts.os_family == "Debian"
37+
notify:
38+
- restart keycloak
1639

1740
- name: "Configure sysconfig file for {{ keycloak.service_name }} service"
1841
become: true
@@ -24,6 +47,8 @@
2447
mode: 0644
2548
vars:
2649
keycloak_rpm_java_home: "{{ rpm_java_home }}"
50+
when:
51+
- ansible_facts.os_family == "RedHat"
2752
notify:
2853
- restart keycloak
2954

roles/keycloak_quarkus/defaults/main.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ keycloak_quarkus_installdir: "{{ keycloak_quarkus_dest }}/keycloak-{{ keycloak_q
99
keycloak_quarkus_offline_install: false
1010

1111
### Install location and service settings
12-
keycloak_quarkus_jvm_package: java-17-openjdk-headless
12+
keycloak_quarkus_jvm_package: "{{ 'java-17-openjdk-headless' if ansible_facts.os_family == 'RedHat' else 'openjdk-17-jdk-headless' }}"
1313
keycloak_quarkus_java_home:
1414
keycloak_quarkus_dest: /opt/keycloak
1515
keycloak_quarkus_home: "{{ keycloak_quarkus_installdir }}"
+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
- name: Include firewall config tasks
3+
ansible.builtin.include_tasks: iptables.yml
4+
when: keycloak_configure_iptables
5+
tags:
6+
- firewall

roles/keycloak_quarkus/tasks/fastpackages.yml

+14-1
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,27 @@
44
register: rpm_info
55
changed_when: false
66
failed_when: false
7+
when: ansible_facts.os_family == "RedHat"
78

89
- name: "Add missing packages to the yum install list"
910
ansible.builtin.set_fact:
1011
packages_to_install: "{{ packages_to_install | default([]) + rpm_info.stdout_lines | map('regex_findall', 'package (.+) is not installed$') | default([]) | flatten }}"
12+
when: ansible_facts.os_family == "RedHat"
1113

1214
- name: "Install packages: {{ packages_to_install }}"
1315
become: true
1416
ansible.builtin.yum:
1517
name: "{{ packages_to_install }}"
1618
state: present
17-
when: packages_to_install | default([]) | length > 0
19+
when:
20+
- packages_to_install | default([]) | length > 0
21+
- ansible_facts.os_family == "RedHat"
22+
23+
- name: "Install packages: {{ packages_list }}"
24+
become: true
25+
ansible.builtin.package:
26+
name: "{{ packages_list }}"
27+
state: present
28+
when:
29+
- packages_list | default([]) | length > 0
30+
- ansible_facts.os_family == "Debian"
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
- name: Ensure required package iptables are installed
3+
ansible.builtin.include_tasks: fastpackages.yml
4+
vars:
5+
packages_list:
6+
- iptables
7+
8+
- name: "Configure firewall ports for {{ keycloak.service_name }}"
9+
become: true
10+
ansible.builtin.iptables:
11+
destination_port: "{{ item }}"
12+
action: "insert"
13+
rule_num: 6 # magic number I forget why
14+
chain: "INPUT"
15+
policy: "ACCEPT"
16+
protocol: tcp
17+
loop:
18+
- "{{ keycloak_quarkus_http_port }}"
19+
- "{{ keycloak_quarkus_https_port }}"
20+
- "{{ keycloak_quarkus_jgroups_port }}"

roles/keycloak_quarkus/tasks/main.yml

+10-4
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,17 @@
55
tags:
66
- prereqs
77

8-
- name: Include firewall config tasks
9-
ansible.builtin.include_tasks: firewalld.yml
10-
when: keycloak_quarkus_configure_firewalld
8+
- name: Debian specific tasks
9+
ansible.builtin.include_tasks: debian.yml
10+
when: ansible_facts.os_family == "Debian"
1111
tags:
12-
- firewall
12+
- unbound
13+
14+
- name: RedHat specific tasks
15+
ansible.builtin.include_tasks: redhat.yml
16+
when: ansible_facts.os_family == "RedHat"
17+
tags:
18+
- unbound
1319

1420
- name: Include install tasks
1521
ansible.builtin.include_tasks: install.yml

roles/keycloak_quarkus/tasks/prereqs.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@
2929
packages_list:
3030
- "{{ keycloak_quarkus_jvm_package }}"
3131
- unzip
32-
- procps-ng
33-
- initscripts
34-
- tzdata-java
32+
- "{{ 'procps-ng' if ansible_facts.os_family == 'RedHat' else 'procps' }}"
33+
- "{{ 'initscripts' if ansible_facts.os_family == 'RedHat' else 'apt' }}"
34+
- "{{ 'tzdata-java' if ansible_facts.os_family == 'RedHat' else 'tzdata' }}"
+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
- name: Include firewall config tasks
3+
ansible.builtin.include_tasks: firewalld.yml
4+
when: keycloak_quarkus_configure_firewalld
5+
tags:
6+
- firewall

0 commit comments

Comments
 (0)