
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


---
# elasticstack/tasks/main.yml

- name: Add ElasticStack apt-key
  apt_key:
    data: "{{ lookup('file','elastic.asc') }}"
    state: present

- name: Add ElasticStack repositories
  apt_repository:
    repo: "deb https://artifacts.elastic.co/packages/5.x/apt stable main"

- name: Install ElasticStack
  apt:
    name: "{{ item }}"
    update_cache: yes
    cache_valid_time: 3600
  with_items:
    - elasticsearch
    - kibana
    - logstash

- name: Configure Kibana for HTTP proxy
  lineinfile:
    dest: /etc/kibana/kibana.yml
    regexp: '^server.basePath:'
    line: 'server.basePath: "/kibana"'
    insertafter: '^#server.basePath*'
  notify:
    - restart kibana

- name: Configure Logstash inputs and outputs
  copy:
    src: "{{ item }}"
    dest: "/etc/logstash/conf.d/{{ item }}"
    owner: root
    group: root
    mode: "0644"
  with_items:
    - 10-udp-input.conf
    - 11-log4j-input.conf
    - 12-syslog-input.conf
    - 30-elasticsearch-output.conf
  notify:
    - restart logstash

- name: Start ElasticStack
  service:
    name: "{{ item }}"
    enabled: yes
    state: started
  with_items:
    - logstash
    - elasticsearch
    - kibana

