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.
83 lines
3.0 KiB
YAML
83 lines
3.0 KiB
YAML
3 years ago
|
---
|
||
|
|
||
|
- 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:
|
||
|
# - restart kimai
|
||
|
# - fixup var
|
||
|
# - fixup kimai install
|
||
|
|
||
|
- name: restart kimais mysql
|
||
|
docker_compose:
|
||
|
project_src: "{{ kimai.general.base_path }}"
|
||
|
restarted: true
|
||
|
services:
|
||
|
- "{{ kimai.services.mysql.service_name }}"
|
||
|
timeout: 30
|
||
|
- name: gather mysql ip
|
||
|
shell: docker inspect -f {% raw %}'{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}'{% endraw %} $(docker-compose ps -q {{ kimai.services.mysql.service_name }} )
|
||
|
args:
|
||
|
chdir: "{{ kimai.general.base_path }}"
|
||
|
register: kimai_db
|
||
|
|
||
|
- name: Wait for kimai db become ready
|
||
|
ansible.builtin.wait_for:
|
||
|
host: "{{ kimai_db.stdout }}"
|
||
|
port: 3306
|
||
|
delay: 10
|
||
|
|
||
|
- name: restart kimais normal services
|
||
|
docker_compose:
|
||
|
project_src: "{{ kimai.general.base_path }}"
|
||
|
restarted: true
|
||
|
services:
|
||
|
- "{{ kimai.services.nginx.service_name }}"
|
||
|
- "{{ kimai.services.postfix.service_name }}"
|
||
|
- "{{ kimai.main.service_name }}"
|
||
|
timeout: 10
|
||
|
|
||
|
- 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: Register existing users as facts
|
||
|
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
|
||
|
check_mode: 'no'
|
||
|
ignore_errors: 'yes'
|
||
|
register: admin_lines
|
||
|
loop: "{{ kimai.main.users | dict2items | selectattr('value.roles', 'search', 'ROLE_SUPER_ADMIN')}}"
|
||
|
changed_when: admin_lines.rc != 0
|
||
|
failed_when: admin_lines is not defined or admin_lines.rc > 1
|
||
|
|
||
|
- name: Debug admin_lines
|
||
|
debug:
|
||
|
msg: "Creating user: {{ result.item.key }}"
|
||
|
loop: "{{ admin_lines.results | selectattr('changed', 'equalto', True) | rejectattr('failed', 'equalto', True) }}"
|
||
|
loop_control:
|
||
|
loop_var: result
|
||
|
|
||
|
# TODO: NOT WORKING YET! Missing parts for mail, password and such. But it's triggered just with absent users already!
|
||
|
- name: Create non-existent admins
|
||
|
shell: >
|
||
|
docker-compose exec {{ kimai.main.service_name }} bash -c '/opt/kimai/bin/console kimai:user:create {{ result.item.key }}'
|
||
|
loop: "{{ admin_lines.results | selectattr('changed', 'equalto', True) | rejectattr('failed', 'equalto', True) }}"
|
||
|
loop_control:
|
||
|
loop_var: result
|
||
|
changed_when: result.changed
|