summaryrefslogtreecommitdiff
path: root/roles/goaccess/main.yml
blob: 7db4771b1d69ab5fa7020dab36927d0d24e34267 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
---
- name: Container Setup

  vars:
    lxc_base: ansible-alpine3.11
    lxc_name: test

  import_playbook: ../common/tasks/lxc.yml

- name: Installing GoAccess
  hosts: test

  vars_files:
    - ../variables.yml

  tasks:

  - name: Ensuring group exists
    group:
      name: "{{ goaccess_user }}"
      state: present

  - name: Creating user and making home directory
    user:
      system: yes
      state: present
      name: "{{ goaccess_user }}"
      groups: "{{ goaccess_user }}"
      home: "{{ goaccess_home }}"

  - name: Installing the required dependencies
    apk:
      state: present
      update_cache: yes
      name:
        - sudo
        - git
        - supervisor
        - tar
        - autoconf
        - automake
        - gcc
        - g++
        - libmaxminddb-dev
        - gettext-dev
        - ncurses-dev
        - openssl-dev
        - make

  - block:

    - name: Cloning repository
      git:
        repo: "{{ goaccess_repository }}"
        dest: "{{ goaccess_home }}"
        version: "{{ goaccess_version }}"
        force: yes

    - name: Creating configuration
      shell: autoreconf -fiv
      args:
        chdir: "{{ goaccess_home }}"
        creates: configure

    - name: Configuring application
      shell: ./configure --enable-utf8 --enable-geoip=mmdb --with-openssl
      args:
        chdir: "{{ goaccess_home }}"
        creates: config.status

    - name: Compiling application
      shell: make
      args:
        chdir: "{{ goaccess_home }}"
        creates: goaccess

    - name: Creating directories
      file:
        path: "{{ goaccess_home }}/{{ item }}"
        state: directory
      with_items:
        - public
        - database
        - database/geoip

    - name: Downloading referrer spam list
      get_url:
        url:  https://raw.githubusercontent.com/matomo-org/referrer-spam-blacklist/master/spammers.txt
        dest: "{{ goaccess_home }}/config"
        mode: '0644'

    - name: Downloading GeoLite2 city database
      get_url:
        url:  "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key={{ maxmind_geoip2_key }}&suffix=tar.gz"
        dest: "{{ goaccess_home }}/database/geoip/geolite2-city.tar.gz"
        mode: '0644'

    - name: Extracting GeoLite2 city database
      shell: tar -xf geolite2-city.tar.gz --strip 1
      args:
        chdir: "{{ goaccess_home }}/database/geoip"
        creates: config.status
        warn: false
      changed_when: false

    - name: Placing configuration files
      template:
        src: "templates/{{ item | basename }}.j2"
        dest: "{{ goaccess_home }}/{{ item }}"
      with_items:
        - public/favicon.ico
        - config/goaccess.conf
        - config/browsers.list

    become: true
    become_user: "{{ goaccess_user }}"

  - name: Copying supervisord config files
    template:
      src: "templates/{{ item | basename }}.j2"
      dest: "{{ item }}"
    with_items:
      - /etc/supervisord.conf

  - name: Ensuring supervisord has been started and enabled
    service:
      name: supervisord
      state: restarted
      enabled: yes
    changed_when: false

  - name: Waiting for supervisor to become active
    wait_for:
      port: 9100