You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
2.0 KiB
YAML

---
- name: create kimai directory
file:
path: "{{ kimai.general.base_path }}"
state: directory
recurse: true
notify: install required packages
- name: process docker-compose file and setup kimai
template:
src: "docker-compose.yml.j2"
dest: "{{ kimai.general.base_path }}/docker-compose.yml"
notify: kimai_services_restart
- name: Flush handlers
meta: flush_handlers
- name: fixup var
shell: 'cd {{ kimai.general.base_path }}; docker-compose exec -u root {{ kimai.main.service_name }} bash -c "chmod 777 -R /opt/kimai/var";'
- name: Create admins
block:
- name: Gather existing users
shell: >
docker-compose exec {{ kimai.services.mysql.service_name }} mysql -u{{ kimai.services.mysql.user }} -p{{ kimai.services.mysql.password}} --execute "SELECT username,roles FROM {{ kimai.services.mysql.db }}.kimai2_users;" -sN 2>/dev/null | awk '{ gsub(/^[ \t]+|[ \t]+$/, ""); gsub(/[ ]+/," "); print $1,"|",$2}' > ./kimai_users.txt
args:
chdir: "{{ kimai.general.base_path }}"
- name: Check existing kimai_users
command: grep -Fqe "{{ item.key }}" ./kimai_users.txt
args:
chdir: "{{ kimai.general.base_path }}"
check_mode: 'no'
ignore_errors: 'no'
register: admin_lines
loop: "{{ kimai.main.users | dict2items | selectattr('value.role', 'search', 'ROLE_SUPER_ADMIN')}}"
changed_when: admin_lines.rc != 0
failed_when: admin_lines is not defined or admin_lines.rc > 1
- name: Init fact
set_fact:
kimai_users:
- name: Make existing admins a fact and model that fact as it is expected
set_fact:
kimai_users: "{{ kimai_users | combine({ result.item.key: {'mail': result.item.value.mail, 'password': result.item.value.password, 'role': result.item.value.role, '_changed': result.changed} }) }}"
loop: "{{ admin_lines.results | rejectattr('failed', 'equalto', True) }}"
loop_control:
loop_var: result
changed_when: result.changed
notify:
- create_non_existing_users