# Copyright 2020 Adarsh yadav
#
# 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.
---
#EFK setup in k8s cluster

#***********************************************************************************************************
#copy all yaml to /tmp/files/
#***********************************************************************************************************
- name: copy all yaml to /tmp/files/
  copy:
    src: ../files/
    dest: /tmp/files/

#***********************************************************************************************************
#Creating Namespace
#***********************************************************************************************************
- name: Creating Namespace
  k8s:
    state: present
    src: /tmp/files/namespace.yaml
    namespace: logging

#***********************************************************************************************************
#creating Storage Class
#***********************************************************************************************************
- name: creating Storage Class
  k8s:
    state: present
    src: /tmp/files/storageClass.yaml
    namespace: logging

#***********************************************************************************************************
#creating Persistent Volume
#***********************************************************************************************************
- name: creating Persistent Volume
  k8s:
    state: present
    src: /tmp/files/persistentVolume.yaml
    namespace: logging

#***********************************************************************************************************
#add user
#***********************************************************************************************************
- name: add user
  k8s:
    state: present
    src: /tmp/files/elasticsearch/user-secret.yaml
    namespace: logging

#***********************************************************************************************************
#Starting Elasticsearch operator
#***********************************************************************************************************
- name: Starting Elasticsearch operator
  shell: kubectl apply -f https://download.elastic.co/downloads/eck/1.2.0/all-in-one.yaml
  ignore_errors: yes

#***********************************************************************************************************
#Starting Elasticsearch
#***********************************************************************************************************
- name: Starting Elasticsearch
  k8s:
    state: present
    src: /tmp/files/elasticsearch/elasticsearch.yaml
    namespace: logging

#***********************************************************************************************************
#Starting Kibana
#***********************************************************************************************************
- name: Starting Kibana
  k8s:
    state: present
    src: /tmp/files/kibana/kibana.yaml
    namespace: logging

#***********************************************************************************************************
#Starting nginx
#***********************************************************************************************************
- name: creating nginx configmap
  k8s:
    state: present
    src: /tmp/files/nginx/nginx-conf-cm.yaml
    namespace: logging

- name: creating nginx key configmap
  k8s:
    state: present
    src: /tmp/files/nginx/nginx-key-cm.yaml
    namespace: logging

- name: creating nginx pod
  k8s:
    state: present
    src: /tmp/files/nginx/nginx.yaml
    namespace: logging

- name: creating nginx service
  k8s:
    state: present
    src: /tmp/files/nginx/nginx-service.yaml
    namespace: logging
#***********************************************************************************************************
#Starting fluentd
#***********************************************************************************************************
- name: creating fluentd configmap
  k8s:
    state: present
    src: /tmp/files/fluentd/fluent-cm.yaml
    namespace: logging

- name: creating fluentd pod
  k8s:
    state: present
    src: /tmp/files/fluentd/fluent.yaml
    namespace: logging

- name: creating fluentd service
  k8s:
    state: present
    src: /tmp/files/fluentd/fluent-service.yaml
    namespace: logging
#***********************************************************************************************************
#Starting elastalert
#***********************************************************************************************************
- name: creating elastalert config configmap
  k8s:
    state: present
    src: /tmp/files/elastalert/ealert-conf-cm.yaml
    namespace: logging

- name: creating elastalert key configmap
  k8s:
    state: present
    src: /tmp/files/elastalert/ealert-key-cm.yaml
    namespace: logging

- name: creating elastalert rule configmap
  k8s:
    state: present
    src: /tmp/files/elastalert/ealert-rule-cm.yaml
    namespace: logging

- name: creating elastalert pod
  k8s:
    state: present
    src: /tmp/files/elastalert/elastalert.yaml
    namespace: logging

#***********************************************************************************************************
#removing /tmp/files
#***********************************************************************************************************
- name: Removing /tmp/files
  file:
    path: "/tmp/files"
    state: absent