From 758e85b2ac785e87654e6f99fbb9576972e5c64b Mon Sep 17 00:00:00 2001 From: uumas Date: Fri, 22 Apr 2022 12:47:02 +0300 Subject: [PATCH] kimai --- docs/kimai.md | 21 +++++++++++++ roles/composer/tasks/main.yml | 20 +++++++++++++ roles/kimai/meta/main.yml | 4 +++ roles/kimai/tasks/main.yml | 55 +++++++++++++++++++++++++++++++++++ 4 files changed, 100 insertions(+) create mode 100644 docs/kimai.md create mode 100644 roles/composer/tasks/main.yml create mode 100644 roles/kimai/meta/main.yml create mode 100644 roles/kimai/tasks/main.yml diff --git a/docs/kimai.md b/docs/kimai.md new file mode 100644 index 0000000..eb9091f --- /dev/null +++ b/docs/kimai.md @@ -0,0 +1,21 @@ +# Required variables +These variables are required by multiple roles. Example values included. + +``` +timezone: 'Europe/Helsinki' +admin_email: 'admin@domain.tld' + +smtp_server: smtp.domain.tld +smtp_from: sender@domain.tld +``` + +# Optional variables +These variables are used by multiple roles and have the following default values: + +``` +reverse_proxy_type: caddy # Allowed values: caddy, traefik, none + +smtp_from: # not defined, no smtp login by default +smtp_pw: # not defined, see above + +``` diff --git a/roles/composer/tasks/main.yml b/roles/composer/tasks/main.yml new file mode 100644 index 0000000..122cb63 --- /dev/null +++ b/roles/composer/tasks/main.yml @@ -0,0 +1,20 @@ +--- + +- name: Test if composer is installed system-wide + stat: + path: /usr/bin/composer + register: global_composer + +- block: + - name: Download latest version of composer locally + get_url: + url: https://getcomposer.org/download/latest-stable/composer.phar + dest: "{{ ansible_user_dir }}/.local/bin/composer" + mode: 0755 + + - name: Set composer path to use local installation + set_fact: + composer_path: "{{ ansible_user_dir }}/.local/bin/composer" + + when: not global_composer.stat.exists + diff --git a/roles/kimai/meta/main.yml b/roles/kimai/meta/main.yml new file mode 100644 index 0000000..fcc852d --- /dev/null +++ b/roles/kimai/meta/main.yml @@ -0,0 +1,4 @@ +--- + +dependencies: + - composer diff --git a/roles/kimai/tasks/main.yml b/roles/kimai/tasks/main.yml new file mode 100644 index 0000000..9075895 --- /dev/null +++ b/roles/kimai/tasks/main.yml @@ -0,0 +1,55 @@ +--- + +- name: Clone kimai git repo + git: + repo: 'https://github.com/kevinpapst/kimai2.git' + dest: "{{ kimai_installdir }}" + version: 'master' + +- name: Install kimai dependencies using composer + composer: + working_dir: "{{ kimai_installdir }}" + composer_executable: "{{ composer_path | default(omit) }}" + +- name: Configure kimai database + lineinfile: + path: "{{ kimai_installdir }}/.env" + regexp: "^DATABASE_URL=.*$" + line: "DATABASE_URL=mysql://{{ kimai_db_user | default(kimai_db) }}:{{ kimai_db_pw }}@{{ kimai_db_host | default('localhost') }}:3306/{{ kimai_db }}?charset=utf8&serverVersion={{ kimai_db_server }}" + +- name: Run kimai install script + command: "bin/console kimai:install -n" + args: + chdir: "{{ kimai_installdir }}" + register: kimai_install + changed_when: "'[OK] Already at the latest version' not in kimai_install.stdout" + failed_when: "'[OK] Congratulations! Successfully installed Kimai' not in kimai_install.stdout" + +- name: Get webroot stat + stat: + path: "{{ kimai_webroot }}" + register: kimai_webroot_stat + +- name: Delete kimai webroot if it's a directory + file: + path: "{{ kimai_webroot }}" + state: absent + when: kimai_webroot_stat.stat.isdir + +- name: Symlink webroot to public + file: + src: "{{ kimai_installdir }}/public" + dest: "{{ kimai_webroot }}" + state: link + force: yes + +- name: Set https redirect + blockinfile: + path: "{{ kimai_webroot }}/.htaccess" + marker: "# {mark} ANSIBLE MANAGED BLOCK http -> https" + block: | + RewriteEngine On + RewriteCond %{ENV:HTTPS} !on + RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] + insertbefore: BOF +