# 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 29 through 126. - name: Start MariaDB action: service name=mysql state=started - name: Create MariaDB Database for Matomo community.mysql.mysql_db: name: "{{ mdb_dbname }}" state: present login_unix_socket: /var/run/mysqld/mysqld.sock - name: Add Admin User to MariaDB Database community.mysql.mysql_user: name: "{{ mdb_username }}" password: "{{ mdb_password }}" host: localhost state: present update_password: on_create priv: "{{ mdb_dbname }}.*:ALL" login_unix_socket: /var/run/mysqld/mysqld.sock - name: Download and Extract Matomo unarchive: src: https://builds.matomo.org/matomo.zip dest: "{{ nginx_loc }}" remote_src: yes - name: Set Matomo Directory Permissions file: path: "{{ nginx_loc }}/matomo" recurse: yes owner: www-data group: www-data - name: HTTP Get Welcome uri: url: "{{ matomo_url }}index.php?action=welcome" method: GET status_code: 200 register: matomo_welcome - name: debug welcome debug: var: matomo_welcome verbosity: 2 - 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_url}}index.php?action=systemCheck" method: GET headers: Cookie: "{{ matomo_session_cookie }}" return_content: true timeout: 120 status_code: 200 register: matomo_system_check - name: debug syscheck debug: var: matomo_system_check verbosity: 2 - name: Matomo Database Setup uri: url: "{{ matomo_url }}index.php?action=databaseSetup" method: POST headers: Cookie: "{{ matomo_session_cookie }}" body: username: "{{ mdb_username }}" password: "{{ mdb_password }}" dbname: "{{ mdb_dbname }}" tables_prefix: "matomo_" adapter: "PDO\\MYSQL" body_format: form-urlencoded status_code: 302 register: matomo_database_setup - name: Matomo Table Creation uri: url: "{{ matomo_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 - name: debug tablecreation debug: var: matomo_table_creation verbosity: 2 - name: Matomo User Setup uri: url: "{{ matomo_url }}index.php?action=setupSuperUser&module=Installation" method: POST headers: Cookie: "{{ matomo_session_cookie }}" body: login: "{{ mdb_username }}" password: "{{ mdb_password }}" password_bis: "{{ mdb_password }}" e-mail: "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_url }}index.php?action=firstWebsiteSetup&module=Installation" method: POST headers: Cookie: "{{ matomo_session_cookie }}" body: name: "IIAB" url: "{{ host_url }}" timezone: "Europe/London" ecommerce: 0 body_format: form-urlencoded status_code: 302 register: matomo_first_website_setup - name: Matomo Tracking Code uri: url: "{{ matomo_url }}index.php?action=trackingCode&module=Installation&site_idSite=1&site_name={{ 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_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 Matomo state variable set_fact: matomo_installed: True - name: Set Matomo state variable in IIAB state file lineinfile: path: "{{ iiab_state_file }}" regexp: '^matomo_installed' line: 'matomo_installed: True'