--- - 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