---
- name: Ensure sysctl
  hosts: graylog_hosts
  gather_facts: true
  tasks:
    - name: Setup sysctl
      sysctl:
        name: vm.max_map_count
        value: "262144"
        state: present
      delegate_to: "{{ physical_host }}"

- name: Install java from openjdk
  hosts: graylog_hosts
  tasks:
    # TODO: Replace this with a group var to log_hosts to use openstack_hosts role.
    - name: installing repo for Java 8 in Ubuntu 16.04
      apt_repository: repo='ppa:openjdk-r/ppa'
      when: ansible_distribution_release == 'xenial'

    - name: Install Java for Ubuntu
      include_role:
        name: geerlingguy.java
      when:
        - ansible_os_family | lower == 'debian'
        - ansible_distribution_release == 'xenial'
      vars:
        java_packages:
          - openjdk-8-jdk

    # TODO: Add SUSE support
    - name: Install Java on CentOS
      package:
        name: java-1.8.0-openjdk-headless.x86_64
        state: present
      when: ansible_os_family | lower == 'redhat'

- name: Install graylog
  hosts: graylog_hosts
  vars:
    # Graylog is compatible with elasticsearch 5.x since version 2.3.0, so ensure to use the right combination for your installation
    # Also use the right branch of the Elasticsearch Ansible role, master supports 5.x.
    es_java_install: False
    es_java: openjdk-8-jre-headless
    es_major_version: "5.x"
    es_version: "5.6.7"
    es_instance_name: 'graylog'
    es_scripts: False
    es_templates: False
    es_version_lock: False
    es_heap_size: 1g
    es_config: {
      node.name: "graylog",
      cluster.name: "graylog",
      http.port: 9200,
      transport.tcp.port: 9300,
      network.host: "{{ es_bind_address | default('0.0.0.0') }}",
      node.data: true,
      node.master: "{{ inventory_hostname == groups['graylog_hosts'][0] }}",
    }

    graylog_install_java: False
    graylog_install_mongodb: True
    graylog_install_nginx: False #Will be behind your LB
    graylog_web_endpoint_uri: "https://{{ external_lb_vip_address }}:9000/api/"
    graylog_is_master: "{{ inventory_hostname == groups['graylog_hosts'][0] }}"
    graylog_elasticsearch_hosts: "{{ groups['graylog_hosts'] | map('extract', hostvars, 'ansible_host') | map('regex_replace', '^(.*)$', 'http://\\1:9200') | join(', ') }}"
    graylog_web_listen_uri: "http://{{ ansible_host }}:9000/"
    graylog_rest_listen_uri: "http://{{ ansible_host }}:9000/api/"
    # TODO(evrardjp): Replace this with a proper test when
    # https://github.com/Graylog2/graylog-ansible-role/pull/88 has merged
    graylog_not_testing: False
  roles:
    # TODO: Contribute to the role for SUSE support
    - role: Graylog2.graylog-ansible-role
      tags: graylog