mirror of
https://github.com/iiab/iiab.git
synced 2025-02-13 03:32:12 +00:00
281 lines
8.7 KiB
YAML
281 lines
8.7 KiB
YAML
# The sections of code interacting with the Matomo website are modified from code found at https://git.coop/webarch/matomo/. This code is distributed under
|
|
# Version 3 of the GNU General Public License. We modified this code and applied it here in April 2022. The derived sections correspond to the tasks running
|
|
# from "HTTP Get Welcome" through "Finish Matomo Setup", lines 63 through 199.
|
|
|
|
|
|
- name: "WARNING: './runrole --reinstall matomo' CAN FAIL AS OF 2022-06-15, e.g. if /library/www/matomo already exists"
|
|
meta: noop
|
|
|
|
# EXAMPLE OF ABOVE ERROR:
|
|
|
|
# TASK [matomo : HTTP Get Welcome] ***************************************************************************************************************************************
|
|
# fatal: [127.0.0.1]: FAILED! => {"cache_control": "private, no-cache, no-store", "changed": false, "connection": "close", "content_type": "text/html; charset=utf-8", "date": "Wed, 15 Jun 2022 05:07:41 GMT", "elapsed": 0, "expires": "Thu, 19 Nov 1981 08:52:00 GMT", "msg": "Status code was 500 and not [200]: HTTP Error 500: Internal Server Error", "pragma": "no-cache", "redirected": false, "server": "nginx/1.18.0 (Ubuntu)", "set_cookie": "MATOMO_SESSID=psak3aem27vrdrt8t2f016600f; path=/; HttpOnly; SameSite=Lax", "status": 500, "transfer_encoding": "chunked", "url": "http://box.lan/matomo/index.php?action=welcome", "x_matomo_request_id": "fbfd2"}
|
|
|
|
|
|
- name: "Set 'mysql_install: True' and 'mysql_enabled: True'"
|
|
set_fact:
|
|
mysql_install: True
|
|
mysql_enabled: True
|
|
|
|
- name: MYSQL - run 'mysql' role (attempt to install & enable MySQL / MariaDB)
|
|
include_role:
|
|
name: mysql
|
|
|
|
- name: FAIL (STOP THE INSTALL) IF 'mysql_installed is undefined'
|
|
fail:
|
|
msg: "Matomo install cannot proceed, as MySQL / MariaDB is not installed."
|
|
when: mysql_installed is undefined
|
|
|
|
|
|
- name: Record (initial) disk space used
|
|
shell: df -B1 --output=used / | tail -1
|
|
register: df1
|
|
|
|
|
|
# https://matomo.org/faq/on-premise/matomo-requirements/
|
|
- name: Install Matomo's recommended PHP extensions
|
|
package:
|
|
name:
|
|
- php{{ php_version }}-curl
|
|
- php{{ php_version }}-gd
|
|
- php{{ php_version }}-cli
|
|
- php{{ php_version }}-mysql
|
|
- php{{ php_version }}-xml
|
|
- php{{ php_version }}-mbstring
|
|
|
|
- name: "Run roles/www_options/tasks/php-settings.yml with 'nginx_high_php_limits: False' by default"
|
|
include_tasks: roles/www_options/tasks/php-settings.yml
|
|
when: php_settings_done is undefined
|
|
|
|
|
|
- name: Start MariaDB
|
|
#action: service name=mysql state=started
|
|
systemd:
|
|
name: "{{ mysql_service }}"
|
|
state: started
|
|
|
|
- name: Create MariaDB Database for Matomo
|
|
community.mysql.mysql_db:
|
|
name: "{{ matomo_db_name }}"
|
|
#login_unix_socket: /var/run/mysqld/mysqld.sock
|
|
|
|
- name: Add Admin User to MariaDB Database
|
|
community.mysql.mysql_user:
|
|
name: "{{ matomo_db_user }}"
|
|
password: "{{ matomo_db_pass }}"
|
|
update_password: on_create # OR SHOULD './runrole --reinstall matomo' FORCE A COMPLETELY CLEAN INSTALL?
|
|
priv: "{{ matomo_db_name }}.*:ALL"
|
|
#login_unix_socket: /var/run/mysqld/mysqld.sock
|
|
|
|
- name: Download and Extract Matomo (~1 min)
|
|
unarchive:
|
|
src: "{{ matomo_dl_url }}" # e.g. https://builds.matomo.org/matomo.tar.gz
|
|
dest: "{{ matomo_path }}" # e.g. /library/www
|
|
remote_src: yes
|
|
|
|
- name: Set Matomo Directory Permissions
|
|
file:
|
|
path: "{{ matomo_path }}/matomo"
|
|
recurse: yes
|
|
owner: "{{ apache_user }}" # e.g. www-data
|
|
group: "{{ apache_user }}"
|
|
|
|
- name: HTTP Get Welcome
|
|
uri:
|
|
url: "{{ matomo_full_url }}index.php?action=welcome" # e.g. http://box.lan/matomo
|
|
method: GET
|
|
status_code: 200
|
|
register: matomo_welcome
|
|
|
|
- debug:
|
|
var: matomo_welcome
|
|
|
|
- name: Set a variable for the MATOMO_SESSID cookie
|
|
set_fact:
|
|
matomo_session_cookie: "MATOMO_SESSID={{ cookie.value }}"
|
|
when: cookie.key == "MATOMO_SESSID"
|
|
loop: "{{ matomo_welcome.cookies | dict2items }}"
|
|
loop_control:
|
|
loop_var: cookie
|
|
|
|
- name: Get Matomo System Check
|
|
uri:
|
|
url: "{{ matomo_full_url }}index.php?action=systemCheck"
|
|
method: GET
|
|
headers:
|
|
Cookie: "{{ matomo_session_cookie }}"
|
|
return_content: true
|
|
timeout: 120
|
|
status_code: 200
|
|
register: matomo_system_check
|
|
|
|
- debug:
|
|
var: matomo_system_check
|
|
|
|
- name: Matomo Database Setup
|
|
uri:
|
|
url: "{{ matomo_full_url }}index.php?action=databaseSetup"
|
|
method: POST
|
|
headers:
|
|
Cookie: "{{ matomo_session_cookie }}"
|
|
body:
|
|
username: "{{ matomo_db_user }}"
|
|
password: "{{ matomo_db_pass }}"
|
|
dbname: "{{ matomo_db_name }}"
|
|
tables_prefix: "matomo_"
|
|
adapter: "PDO\\MYSQL"
|
|
body_format: form-urlencoded
|
|
status_code: 302
|
|
#register: matomo_database_setup
|
|
|
|
- name: Matomo Table Creation
|
|
uri:
|
|
url: "{{ matomo_full_url }}index.php?action=tablesCreation&module=Installation"
|
|
method: GET
|
|
status_code: 200
|
|
register: matomo_table_creation
|
|
|
|
- name: Set a variable for the MATOMO_SESSID cookie
|
|
set_fact:
|
|
matomo_session_cookie: "MATOMO_SESSID={{ cookie.value }}"
|
|
when:
|
|
- matomo_table_creation.cookies is defined
|
|
- matomo_table_creation.cookies | length > 0
|
|
- cookie.key == "MATOMO_SESSID"
|
|
loop: "{{ matomo_table_creation.cookies | dict2items }}"
|
|
loop_control:
|
|
loop_var: cookie
|
|
|
|
- debug:
|
|
var: matomo_table_creation
|
|
|
|
- name: Matomo User Setup
|
|
uri:
|
|
url: "{{ matomo_full_url }}index.php?action=setupSuperUser&module=Installation"
|
|
method: POST
|
|
headers:
|
|
Cookie: "{{ matomo_session_cookie }}"
|
|
body:
|
|
login: "{{ matomo_db_user }}"
|
|
password: "{{ matomo_db_pass }}"
|
|
password_bis: "{{ matomo_db_pass }}"
|
|
email: "nobody@dev.null"
|
|
subscribe_newsletter_piwikorg: 0
|
|
subscribe_newsletter_professionalservices: 0
|
|
body_format: form-urlencoded
|
|
status_code: 302
|
|
#register: matomo_setup_superuser
|
|
|
|
- name: Configure Matomo to track IIAB
|
|
uri:
|
|
url: "{{ matomo_full_url }}index.php?action=firstWebsiteSetup&module=Installation"
|
|
method: POST
|
|
headers:
|
|
Cookie: "{{ matomo_session_cookie }}"
|
|
body:
|
|
siteName: "IIAB"
|
|
url: "{{ matomo_host_url }}"
|
|
ecommerce: 0
|
|
body_format: form-urlencoded
|
|
status_code: [200, 302]
|
|
register: _result
|
|
|
|
- name: Fallback Configure Matomo to track IIAB
|
|
uri:
|
|
url: "{{ matomo_full_url }}index.php?action=firstWebsiteSetup&module=Installation"
|
|
method: POST
|
|
headers:
|
|
Cookie: "{{ matomo_session_cookie }}"
|
|
body:
|
|
siteName: "IIAB"
|
|
url: "{{ matomo_host_url }}"
|
|
timezone: "Europe/London"
|
|
ecommerce: 0
|
|
body_format: form-urlencoded
|
|
status_code: 302
|
|
when: _result.status == 200
|
|
|
|
- name: Matomo Tracking Code
|
|
uri:
|
|
url: "{{ matomo_full_url }}index.php?action=trackingCode&module=Installation&site_idSite=1&site_name={{ matomo_host_url }}"
|
|
method: GET
|
|
headers:
|
|
Cookie: "{{ matomo_session_cookie }}"
|
|
return_content: true
|
|
status_code: 200
|
|
#register: matomo_tracking_code
|
|
|
|
- name: Finish Matomo Setup
|
|
uri:
|
|
url: "{{ matomo_full_url }}index.php?action=finished&module=Installation"
|
|
method: POST
|
|
headers:
|
|
Cookie: "{{ matomo_session_cookie }}"
|
|
body:
|
|
do_not_track: 1
|
|
anonymise_ip: 1
|
|
submit: "Continue to Matomo"
|
|
body_format: form-urlencoded
|
|
status_code: 302
|
|
|
|
- name: Start Collecting Matomo Data
|
|
cron:
|
|
name: "MatomoDataIngestionOnReboot"
|
|
special_time: reboot
|
|
job: "{{ matomo_cronjob }}"
|
|
user: root
|
|
cron_file: "matomo_reboot"
|
|
|
|
- name: Run Daily Job Collecting Matomo Data
|
|
cron:
|
|
name: "DailyMatomoDataIngestion"
|
|
minute: "0"
|
|
hour: "0"
|
|
job: "{{ matomo_cronjob }}"
|
|
user: root
|
|
cron_file: "matomo_daily"
|
|
|
|
- name: Set Permissions for token.php
|
|
copy:
|
|
content: ""
|
|
dest: "{{ matomo_path }}/matomo/tmp/cache/token.php"
|
|
group: "{{ apache_user }}"
|
|
owner: "{{ apache_user }}"
|
|
|
|
- name: Set Permissions for tracker Directory
|
|
file:
|
|
path: "{{ matomo_path }}/matomo/tmp/cache/tracker"
|
|
state: directory
|
|
owner: "{{ apache_user }}"
|
|
group: "{{ apache_user }}"
|
|
|
|
- name: Don't Check for Trusted Host
|
|
ini_file:
|
|
path: "{{ matomo_path }}/matomo/config/config.ini.php"
|
|
section: General
|
|
option: enable_trusted_host_check
|
|
value: 0
|
|
|
|
|
|
# RECORD Matomo AS INSTALLED
|
|
|
|
- name: Record (final) disk space used
|
|
shell: df -B1 --output=used / | tail -1
|
|
register: df2
|
|
|
|
- name: Add 'matomo_disk_usage = {{ df2.stdout|int - df1.stdout|int }}' to {{ iiab_ini_file }}
|
|
ini_file:
|
|
path: "{{ iiab_ini_file }}" # /etc/iiab/iiab.ini
|
|
section: matomo
|
|
option: matomo_disk_usage
|
|
value: "{{ df2.stdout|int - df1.stdout|int }}"
|
|
|
|
- name: "Set 'matomo_installed: True'"
|
|
set_fact:
|
|
matomo_installed: True
|
|
|
|
- name: "Add 'matomo_installed: True' to {{ iiab_state_file }}"
|
|
lineinfile:
|
|
path: "{{ iiab_state_file }}" # /etc/iiab/iiab_state.yml
|
|
regexp: '^matomo_installed'
|
|
line: 'matomo_installed: True'
|