INF-162 - Init role for keycloak

- Download the keycloak installation file
- Install service file
- Create admin account

Change-Id: I18ef42f072f0fc071cb448bc4ab7e0a388748054
diff --git a/tasks/main.yml b/tasks/main.yml
new file mode 100644
index 0000000..0df97e8
--- /dev/null
+++ b/tasks/main.yml
@@ -0,0 +1,77 @@
+---
+# keycloak tasks/main.yml
+#
+# SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+- name: include OS-specific tasks
+  include_tasks: "{{ ansible_os_family }}.yml"
+
+- name: Create group for Keycloak
+  group:
+    name: "{{ keycloak_groupname }}"
+
+- name: Create user for Keycloak
+  user:
+    name: "{{ keycloak_username }}"
+    group: "{{ keycloak_groupname }}"
+    comment: "{{ keycloak_comment }}"
+    shell: "{{ keycloak_shell }}"
+    system: true
+    password_lock: true
+
+- name: Create keycloak dist directory
+  file:
+    path: "{{ keycloak_dist_dir }}"
+    owner: "{{ keycloak_username }}"
+    group: "{{ keycloak_groupname }}"
+    state: directory
+    mode: 0700
+
+- name: Download keycloak
+  get_url:
+    url: "{{ keycloak_download_url }}"
+    dest: "{{ keycloak_dist_dir }}"
+    timeout: 30
+    checksum: "{{ keycloak_checksum }}"
+  become: true
+  become_user: "{{ keycloak_username }}"
+
+- name: Extract keycloak
+  unarchive:
+    remote_src: true
+    src: "{{ keycloak_dist_dir }}/keycloak-{{ keycloak_version }}.tar.gz"
+    dest: "{{ keycloak_base_dir }}"
+    owner: "{{ keycloak_username }}"
+    group: "{{ keycloak_groupname }}"
+    creates: "{{ keycloak_base_dir }}/keycloak-{{ keycloak_version }}"
+
+- name: Link Keycloak distro to working dir
+  file:
+    state: "link"
+    src: "{{ keycloak_base_dir }}/keycloak-{{ keycloak_version }}"
+    dest: "{{ keycloak_working_dir }}"
+
+- name: Check admin account
+  command:
+    chdir: "{{ keycloak_working_dir }}/bin/"
+    cmd: >
+      ./kcadm.sh get users
+      --server http://localhost:8080/auth
+      --realm master --user {{ keycloak_admin_username }}
+      --password {{ keycloak_admin_password }}
+  register: kcadm_result
+  changed_when: false
+  failed_when: false
+
+- name: Create admin account
+  command:
+    chdir: "{{ keycloak_working_dir }}/bin/"
+    cmd: >
+      ./add-user-keycloak.sh
+      --realm master --user {{ keycloak_admin_username }}
+      --password {{ keycloak_admin_password }}
+  when: kcadm_result.rc != 0
+  notify:
+    - "start-keycloak"
+    - "restart-keycloak"