---
# tasks file for artifactory
- name: Set artifactory major version
  set_fact:
    artifactory_major_verion: "{{ artifactory_version.split('.')[0] }}"

- name: create group for artifactory
  group:
    name: "{{ artifactory_group }}"
    state: present
  become: yes

- name: create user for artifactory
  user:
    name: "{{ artifactory_user }}"
    group: "{{ artifactory_group }}"
    system: yes
  become: yes

- name: ensure artifactory_download_directory exists
  file:
    path: "{{ artifactory_download_directory }}"
    state: directory
  become: yes

- name: ensure artifactory_file_store_dir exists
  file:
    path: "{{ artifactory_file_store_dir }}"
    state: directory
    owner: "{{ artifactory_user }}"
    group: "{{ artifactory_group }}"
  become: yes

- name: setup directory symlink for using custom data directory/volume
  include_tasks: custom-data-directory.yml
  when: use_custom_data_directory and custom_data_directory is defined

- name: ensure data subdirectories exist and have correct ownership
  file:
    path: "{{ artifactory_home }}/var/{{ item }}"
    state: directory
    owner: "{{ artifactory_user }}"
    group: "{{ artifactory_group }}"
  loop:
    - "bootstrap"
    - "etc"
    - "data"
    - "etc/info"
    - "etc/security"
    - "etc/artifactory"
  become: yes

- name: check if system yaml file exits
  stat:
    path: "{{ artifactory_home }}/var/etc/system.yaml"
  register: system_yaml

- name: use specified system yaml
  copy:
    src: "{{ system_file }}"
    dest: "{{ artifactory_home }}/var/etc/system.yaml"
  become: yes
  when: system_file is defined and not system_yaml.stat.exists

- name: configure system yaml
  template:
    src: system.yaml.j2
    dest: "{{ artifactory_home }}/var/etc/system.yaml"
  become: yes
  when: system_file is not defined and not system_yaml.stat.exists

- name: configure master key
  template:
    src: master.key.j2
    dest: "{{ artifactory_home }}/var/etc/security/master.key"
    force: no # only create if file doesn't exist
  become: yes

- name: configure join key
  template:
    src: join.key.j2
    dest: "{{ artifactory_home }}/var/etc/security/join.key"
    force: no # only create if file doesn't exist
  become: yes

- name: configure installer info
  template:
    src: installer-info.json.j2
    dest: "{{ artifactory_home }}/var/etc/info/installer-info.json"
  become: yes

- name: use specified binary store file
  copy:
    src: "{{ binary_store_file }}"
    dest: "{{ artifactory_home }}/var/etc/artifactory/binarystore.xml"
    force: no # only copy if file doesn't exist
  become: yes
  when: binary_store_file is defined

- name: set default binary store
  template:
    src: binarystore.xml.j2
    dest: "{{ artifactory_home }}/var/etc/artifactory/binarystore.xml"
    force: no # only create if file doesn't exist
  become: yes
  when: binary_store_file is not defined

- name: configure licenses
  include_tasks: configure-licenses.yml

- name: create artifactory service
  shell: "{{ artifactory_home }}/app/bin/installService.sh"
  become: yes

- name: start and enable the primary node
  service:
    name: artifactory
    state: restarted
  become: yes
  when: artifactory_is_primary == true

- name: random wait before restarting to prevent secondary nodes from hitting DB first
  pause:
    seconds: "{{ 120 | random + 10}}"
  when: artifactory_is_primary == false

- name: start and enable the secondary nodes
  service:
    name: artifactory
    state: restarted
  become: yes
  when: artifactory_is_primary == false
