---
# file: roles/netdata/tasks/main.yml

- name: "NetData Role"
  set_fact: role_netdata_started=true
  tags: always

- block:

  - name: "Install required packages"
    apt:
      pkg={{ item }}
      state=installed
      update_cache=yes
    with_items:
      - zlib1g-dev
      - gcc
      - make
      - git
      - autoconf
      - autogen
      - automake
      - pkg-config
      - uuid-dev
      - python-dev
      - python-yaml
      #FireQOS available from 15.04
      #- firehol

  - name: "Ensure Directory"
    file:
      path='/etc/netdata/python.d'
      state='directory'

  - include: install.yml

  - name: "Install startup script"
    template:
      src=etc_init_d_netdata
      dest=/etc/init.d/netdata
      owner=root
      group=root
      mode=755
    notify:
      - "Include NetData to Boot-List"
      - "Re-start NetData"

  - name: "Install logrotate script"
    template:
      src=etc_logrotate_d_netdata
      dest=/etc/logrotate.d/netdata
      owner=root
      group=root
      mode=644

  - name: "Configure Registry"
    ini_file:
      dest='/etc/netdata/netdata.conf'
      create=yes
      section='registry'
      option='{{ item.option }}'
      value='{{ item.value }}'
    with_items:
      - option: 'enabled'
        value: '{{ (netdata_registry|default("pmon1") == inventory_hostname)|ternary("yes", "no") }}'
      - option: 'registry to announce'
        value: 'http://{{ netdata_registry|default("pmon1") }}:19999'
    notify:
      - "Re-start NetData"

  - name: "Configure NetData"
    template:
      src='{{ item }}'
      dest='/etc/netdata/{{ item }}'
      owner='root'
      group='root'
      mode=644
      backup=yes
    with_items:
      - 'python.d.conf'
      - 'health_alarm_notify.conf'
    notify:
      - "Re-start NetData"

  - name: "Configure Plugins"
    template:
      src='{{ item }}.conf'
      dest='/etc/netdata/python.d/{{ item }}.conf'
      owner='root'
      group='root'
      mode=644
    with_items:
      - 'mysql'
    notify:
      - "Re-start NetData"

  - name: "Check if KSM is available"
    stat: path='/sys/kernel/mm/ksm'
    register: ksm

  # Note: copy module doesn't work here because parent directory /sys
  # is not writable, not even by root
  - name: "Configure KSM"
    shell: echo {{ item.value }} >/sys/kernel/mm/ksm/{{ item.file }}
    with_items:
      - file: 'run'
        value: '1'
      - file: 'sleep_millisecs'
        value: '1000'
    when: ksm.stat.exists
    notify:
      - "Re-start NetData"

  when: '"netdata" not in excluded_roles'