From 535094d15d56b465eda43dde2f0777dead8ede90 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Thu, 21 Aug 2025 16:23:08 +0200 Subject: [PATCH] Added more update tasks for ESPOCRM config --- roles/web-app-espocrm/config/main.yml | 2 +- .../web-app-espocrm/tasks/01_patch_config.yml | 44 ++++++++++++++----- roles/web-app-espocrm/tasks/main.yml | 5 ++- .../templates/docker-compose.yml.j2 | 10 ++--- roles/web-app-espocrm/templates/env.j2 | 8 ++-- roles/web-app-espocrm/vars/main.yml | 26 ++++++----- 6 files changed, 61 insertions(+), 34 deletions(-) diff --git a/roles/web-app-espocrm/config/main.yml b/roles/web-app-espocrm/config/main.yml index a090b21e..84ddcc7a 100644 --- a/roles/web-app-espocrm/config/main.yml +++ b/roles/web-app-espocrm/config/main.yml @@ -38,4 +38,4 @@ docker: version: "latest" name: "espocrm" volumes: - data: espocrm_data + data: ESPOCRM_data diff --git a/roles/web-app-espocrm/tasks/01_patch_config.yml b/roles/web-app-espocrm/tasks/01_patch_config.yml index 44fa7de5..ab3004b0 100644 --- a/roles/web-app-espocrm/tasks/01_patch_config.yml +++ b/roles/web-app-espocrm/tasks/01_patch_config.yml @@ -1,25 +1,25 @@ - name: Update DB host command: > - docker exec --user root {{ espocrm_name }} - sed -i "s/'host' => .*/'host' => '{{ database_host }}',/" {{ espocrm_config_file }} + docker exec --user root {{ ESPOCRM_NAME }} + sed -i "s/'host' => .*/'host' => '{{ database_host }}',/" {{ ESPOCRM_CONFIG_FILE_PRIVATE }} notify: docker compose restart - name: Update DB name command: > - docker exec --user root {{ espocrm_name }} - sed -i "s/'dbname' => .*/'dbname' => '{{ database_name }}',/" {{ espocrm_config_file }} + docker exec --user root {{ ESPOCRM_NAME }} + sed -i "s/'dbname' => .*/'dbname' => '{{ database_name }}',/" {{ ESPOCRM_CONFIG_FILE_PRIVATE }} notify: docker compose restart - name: Update DB user command: > - docker exec --user root {{ espocrm_name }} - sed -i "s/'user' => .*/'user' => '{{ database_username }}',/" {{ espocrm_config_file }} + docker exec --user root {{ ESPOCRM_NAME }} + sed -i "s/'user' => .*/'user' => '{{ database_username }}',/" {{ ESPOCRM_CONFIG_FILE_PRIVATE }} notify: docker compose restart - name: Update DB password command: > - docker exec --user root {{ espocrm_name }} - sed -i "s/'password' => .*/'password' => '{{ database_password }}',/" {{ espocrm_config_file }} + docker exec --user root {{ ESPOCRM_NAME }} + sed -i "s/'password' => .*/'password' => '{{ database_password }}',/" {{ ESPOCRM_CONFIG_FILE_PRIVATE }} notify: docker compose restart no_log: "{{ MASK_CREDENTIALS_IN_LOGS | bool }}" @@ -31,7 +31,7 @@ $c = $app->getContainer(); $cfg = $c->get("config"); $writer = $c->get("injectableFactory")->create("\Espo\Core\Utils\Config\ConfigWriter"); - $new = "{{ espocrm_url }}"; + $new = "{{ ESPOCRM_URL }}"; if ($cfg->get("siteUrl") !== $new) { $writer->set("siteUrl", $new); $writer->save(); @@ -41,4 +41,28 @@ args: chdir: "{{ docker_compose.directories.instance }}" register: siteurl_set - changed_when: "'CHANGED' in siteurl_set.stdout" \ No newline at end of file + changed_when: "'CHANGED' in siteurl_set.stdout" + +- name: Disable EspoCRM maintenance mode + ansible.builtin.shell: | + docker exec -u root {{ ESPOCRM_NAME }} \ + sed -i "s/'maintenanceMode' => true/'maintenanceMode' => false/" {{ ESPOCRM_CONFIG_FILE_PUBLIC }} + register: disable_maintenance + changed_when: disable_maintenance.rc == 0 + failed_when: disable_maintenance.rc != 0 + +- name: Enable EspoCRM cache + ansible.builtin.shell: | + docker exec -u root {{ ESPOCRM_NAME }} \ + sed -i "s/'useCache' => false/'useCache' => true/" {{ ESPOCRM_CONFIG_FILE_PUBLIC }} + register: enable_cache + changed_when: enable_cache.rc == 0 + failed_when: enable_cache.rc != 0 + +- name: Enable EspoCRM cron + ansible.builtin.shell: | + docker exec -u root {{ ESPOCRM_NAME }} \ + sed -i "s/'cronDisabled' => true/'cronDisabled' => false/" {{ ESPOCRM_CONFIG_FILE_PUBLIC }} + register: enable_cron + changed_when: enable_cron.rc == 0 + failed_when: enable_cron.rc != 0 diff --git a/roles/web-app-espocrm/tasks/main.yml b/roles/web-app-espocrm/tasks/main.yml index eadd8c37..b4054c01 100644 --- a/roles/web-app-espocrm/tasks/main.yml +++ b/roles/web-app-espocrm/tasks/main.yml @@ -6,7 +6,7 @@ docker_compose_flush_handlers: true - name: Check if config.php exists in EspoCRM - command: docker exec --user root {{ espocrm_name }} test -f {{ espocrm_config_file }} + command: docker exec --user root {{ ESPOCRM_NAME }} test -f {{ ESPOCRM_CONFIG_FILE_PRIVATE }} register: config_file_exists changed_when: false failed_when: false @@ -30,4 +30,5 @@ $writer->save(); ' args: - chdir: "{{ docker_compose.directories.instance }}" \ No newline at end of file + chdir: "{{ docker_compose.directories.instance }}" + when: ESPOCRM_OIDC_ENABLED | bool \ No newline at end of file diff --git a/roles/web-app-espocrm/templates/docker-compose.yml.j2 b/roles/web-app-espocrm/templates/docker-compose.yml.j2 index 01fd5c28..dac0b96b 100644 --- a/roles/web-app-espocrm/templates/docker-compose.yml.j2 +++ b/roles/web-app-espocrm/templates/docker-compose.yml.j2 @@ -1,7 +1,7 @@ {% include 'roles/docker-compose/templates/base.yml.j2' %} web: - container_name: {{ espocrm_name }} - image: "{{ espocrm_image }}:{{ espocrm_version }}" + container_name: {{ ESPOCRM_NAME }} + image: "{{ ESPOCRM_IMAGE }}:{{ ESPOCRM_VERSION }}" {% include 'roles/docker-container/templates/base.yml.j2' %} {% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %} ports: @@ -12,7 +12,7 @@ - data:/var/www/html daemon: - image: "{{ espocrm_image }}:{{ espocrm_version }}" + image: "{{ ESPOCRM_IMAGE }}:{{ ESPOCRM_VERSION }}" restart: {{ DOCKER_RESTART_POLICY }} logging: driver: journald @@ -22,7 +22,7 @@ - data:/var/www/html websocket: - image: "{{ espocrm_image }}:{{ espocrm_version }}" + image: "{{ ESPOCRM_IMAGE }}:{{ ESPOCRM_VERSION }}" restart: {{ DOCKER_RESTART_POLICY }} logging: driver: journald @@ -41,6 +41,6 @@ {% include 'roles/docker-compose/templates/volumes.yml.j2' %} data: - name: {{ espocrm_volume }} + name: {{ ESPOCRM_VOLUME }} {% include 'roles/docker-compose/templates/networks.yml.j2' %} \ No newline at end of file diff --git a/roles/web-app-espocrm/templates/env.j2 b/roles/web-app-espocrm/templates/env.j2 index a158a1e4..f08c38c4 100644 --- a/roles/web-app-espocrm/templates/env.j2 +++ b/roles/web-app-espocrm/templates/env.j2 @@ -23,7 +23,7 @@ ESPOCRM_ADMIN_USERNAME={{ applications | get_app_conf(application_id, 'users.adm ESPOCRM_ADMIN_PASSWORD={{ applications | get_app_conf(application_id, 'credentials.administrator_password', True) }} # Public base URL of the EspoCRM instance -ESPOCRM_SITE_URL={{ espocrm_url }} +ESPOCRM_SITE_URL={{ ESPOCRM_URL }} # ------------------------------------------------ # General UI & locale settings @@ -77,7 +77,7 @@ ESPOCRM_CONFIG_LDAP_USER_LOGIN_FILTER=(sAMAccountName=%USERNAME%) # OpenID Connect settings (optional) # Applied only if the feature flag is true # ------------------------------------------------ -{% if applications | get_app_conf(application_id, 'features.oidc', False) %} +{% if ESPOCRM_OIDC_ENABLED | bool %} # ------------------------------------------------ # OpenID Connect settings @@ -94,12 +94,12 @@ ESPOCRM_CONFIG_OIDC_TOKEN_ENDPOINT={{ OIDC.CLIENT.TOKEN_URL }} ESPOCRM_CONFIG_OIDC_USER_INFO_ENDPOINT={{ OIDC.CLIENT.USER_INFO_URL }} ESPOCRM_CONFIG_OIDC_JWKS_ENDPOINT={{ OIDC.CLIENT.CERTS }} -ESPOCRM_CONFIG_OIDC_AUTHORIZATION_REDIRECT_URI={{ espocrm_url }}/oidc/callback +ESPOCRM_CONFIG_OIDC_AUTHORIZATION_REDIRECT_URI={{ ESPOCRM_URL }}/oidc/callback #ESPOCRM_CONFIG_OIDC_SCOPES=openid,profile,email # Defined in main.yml ESPOCRM_CONFIG_OIDC_CREATE_USER=true ESPOCRM_CONFIG_OIDC_SYNC=true -ESPOCRM_CONFIG_OIDC_USERNAME_CLAIM={{OIDC.ATTRIBUTES.USERNAME}} +ESPOCRM_CONFIG_OIDC_USERNAME_CLAIM={{ OIDC.ATTRIBUTES.USERNAME }} # ESPOCRM_CONFIG_OIDC_SYNC_TEAMS=true # ESPOCRM_CONFIG_OIDC_GROUP_CLAIM=group {% endif %} diff --git a/roles/web-app-espocrm/vars/main.yml b/roles/web-app-espocrm/vars/main.yml index 498aec41..f1c7882a 100644 --- a/roles/web-app-espocrm/vars/main.yml +++ b/roles/web-app-espocrm/vars/main.yml @@ -1,19 +1,21 @@ # General -application_id: "web-app-espocrm" +application_id: "web-app-espocrm" # Database -database_type: "mariadb" +database_type: "mariadb" # Webserver -location_ws: "/ws" -ws_port: "{{ ports.localhost.websocket[application_id] }}" -client_max_body_size: "100m" -vhost_flavour: "ws_generic" +location_ws: "/ws" +ws_port: "{{ ports.localhost.websocket[application_id] }}" +client_max_body_size: "100m" +vhost_flavour: "ws_generic" # Espocrm -espocrm_version: "{{ applications | get_app_conf(application_id, 'docker.services.espocrm.version', True) }}" -espocrm_image: "{{ applications | get_app_conf(application_id, 'docker.services.espocrm.image', True) }}" -espocrm_name: "{{ applications | get_app_conf(application_id, 'docker.services.espocrm.name', True) }}" -espocrm_volume: "{{ applications | get_app_conf(application_id, 'docker.volumes.data', True) }}" -espocrm_config_file: "/var/www/html/data/config-internal.php" -espocrm_url: "{{ domains | get_url(application_id, WEB_PROTOCOL) }}" \ No newline at end of file +ESPOCRM_VERSION: "{{ applications | get_app_conf(application_id, 'docker.services.espocrm.version', True) }}" +ESPOCRM_IMAGE: "{{ applications | get_app_conf(application_id, 'docker.services.espocrm.image', True) }}" +ESPOCRM_NAME: "{{ applications | get_app_conf(application_id, 'docker.services.espocrm.name', True) }}" +ESPOCRM_VOLUME: "{{ applications | get_app_conf(application_id, 'docker.volumes.data', True) }}" +ESPOCRM_CONFIG_FILE_PRIVATE: "/var/www/html/data/config-internal.php" +ESPOCRM_CONFIG_FILE_PUBLIC: "/var/www/html/data/config.php" +ESPOCRM_URL: "{{ domains | get_url(application_id, WEB_PROTOCOL) }}" +ESPOCRM_OIDC_ENABLED: "{{ applications | get_app_conf(application_id, 'features.central_database', False) }}"