From fc24e9af7cc8e8adb5dac1784b92c5e958072bc9 Mon Sep 17 00:00:00 2001
From: Krzysztof Klimonda <kklimonda@cloudferro.com>
Date: Thu, 30 May 2019 13:26:50 +0000
Subject: [PATCH] Add support for elasticsearch TLS and authentication in
 fluentd

Add options for configuring TLS and authentication for elasticsearch
connections in in fluentd.

Change-Id: I936adc2aeaa3c87081be1c44aa0221caf2124e23
Closes-Bug: #1831078
---
 ansible/roles/common/defaults/main.yml        | 10 ++++++++
 .../templates/conf/output/00-local.conf.j2    | 24 +++++++++++++++++++
 .../templates/conf/output/01-es.conf.j2       | 12 ++++++++++
 3 files changed, 46 insertions(+)

diff --git a/ansible/roles/common/defaults/main.yml b/ansible/roles/common/defaults/main.yml
index 7076c81f79..25b63eb6e7 100644
--- a/ansible/roles/common/defaults/main.yml
+++ b/ansible/roles/common/defaults/main.yml
@@ -45,6 +45,16 @@ common_services:
       - "kolla_logs:/var/log/kolla/"
     dimensions: "{{ cron_dimensions }}"
 
+#######################
+# TLS and authenication
+#######################
+
+fluentd_elasticsearch_path: ""
+fluentd_elasticsearch_scheme: "http"
+fluentd_elasticsearch_user: ""
+fluentd_elasticsearch_password: ""
+fluentd_elasticsearch_ssl_version: "TLSv1_2"
+fluentd_elasticsearch_ssl_verify: "true"
 
 ####################
 # Docker
diff --git a/ansible/roles/common/templates/conf/output/00-local.conf.j2 b/ansible/roles/common/templates/conf/output/00-local.conf.j2
index 1837b0c5ce..a46c6a7488 100644
--- a/ansible/roles/common/templates/conf/output/00-local.conf.j2
+++ b/ansible/roles/common/templates/conf/output/00-local.conf.j2
@@ -12,6 +12,18 @@
        type elasticsearch
        host {{ elasticsearch_address }}
        port {{ elasticsearch_port }}
+       scheme {{ fluentd_elasticsearch_scheme }}
+{% if fluentd_elasticsearch_path != '' %}
+       path {{ fluentd_elasticsearch_path }}
+{% endif %}
+{% if fluentd_elasticsearch_scheme == 'https' %}
+       ssl_version {{ fluentd_elasticsearch_ssl_version }}
+       ssl_verify {{ fluentd_elasticsearch_ssl_verify }}
+{% endif %}
+{% if fluentd_elasticsearch_user != '' and fluentd_elasticsearch_password != ''%}
+       user {{ fluentd_elasticsearch_user }}
+       password {{ fluentd_elasticsearch_password }}
+{% endif %}
        logstash_format true
        logstash_prefix {{ kibana_log_prefix }}
        flush_interval 15s
@@ -47,6 +59,18 @@
        type elasticsearch
        host {{ elasticsearch_address }}
        port {{ elasticsearch_port }}
+       scheme {{ fluentd_elasticsearch_scheme }}
+{% if fluentd_elasticsearch_path != '' %}
+       path {{ fluentd_elasticsearch_path }}
+{% endif %}
+{% if fluentd_elasticsearch_scheme == 'https' %}
+       ssl_version {{ fluentd_elasticsearch_ssl_version }}
+       ssl_verify {{ fluentd_elasticsearch_ssl_verify }}
+{% endif %}
+{% if fluentd_elasticsearch_user != '' and fluentd_elasticsearch_password != ''%}
+       user {{ fluentd_elasticsearch_user }}
+       password {{ fluentd_elasticsearch_password }}
+{% endif %}
        logstash_format true
        logstash_prefix {{ kibana_log_prefix }}
        flush_interval 15s
diff --git a/ansible/roles/common/templates/conf/output/01-es.conf.j2 b/ansible/roles/common/templates/conf/output/01-es.conf.j2
index 1ab109aaef..178acf407a 100644
--- a/ansible/roles/common/templates/conf/output/01-es.conf.j2
+++ b/ansible/roles/common/templates/conf/output/01-es.conf.j2
@@ -4,6 +4,18 @@
        @type elasticsearch
        host {{ elasticsearch_address }}
        port {{ elasticsearch_port }}
+       scheme {{ fluentd_elasticsearch_scheme }}
+{% if fluentd_elasticsearch_path != '' %}
+       path {{ fluentd_elasticsearch_path }}
+{% endif %}
+{% if fluentd_elasticsearch_scheme == 'https' %}
+       ssl_version {{ fluentd_elasticsearch_ssl_version }}
+       ssl_verify {{ fluentd_elasticsearch_ssl_verify }}
+{% endif %}
+{% if fluentd_elasticsearch_user != '' and fluentd_elasticsearch_password != ''%}
+       user {{ fluentd_elasticsearch_user }}
+       password {{ fluentd_elasticsearch_password }}
+{% endif %}
        logstash_format true
        logstash_prefix {{ kibana_log_prefix }}
        flush_interval 15s