From 2af1d1d95e2e28b5985e3129c3654aee0b942b87 Mon Sep 17 00:00:00 2001 From: Doug Szumski Date: Fri, 14 Sep 2018 16:51:25 +0000 Subject: [PATCH] Improve registration of Monasca InfluxDB database Monasca is not yet compatible with InfluxDB > 1.1.10, which means that the official Ansible modules for managing InfluxDB don't work [1]. We therefore fall back to manual commands to register the database and a default retention policy. [1] https://github.com/influxdata/influxdb-python #influxdb-pre-v110-users Partially-Implements: blueprint monasca-roles Change-Id: I59ceda1e7a6e945b13872089011045db04548b94 --- ansible/roles/monasca/defaults/main.yml | 4 ++++ ansible/roles/monasca/tasks/bootstrap.yml | 24 +++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/ansible/roles/monasca/defaults/main.yml b/ansible/roles/monasca/defaults/main.yml index 8e80bdb5ea..453d037856 100644 --- a/ansible/roles/monasca/defaults/main.yml +++ b/ansible/roles/monasca/defaults/main.yml @@ -92,6 +92,10 @@ monasca_database_address: "{{ database_address }}:{{ database_port }}" monasca_influxdb_name: "monasca" monasca_influxdb_address: "{{ kolla_internal_fqdn }}" monasca_influxdb_http_port: "{{ influxdb_http_port }}" +monasca_influxdb_retention_policy: + name: 'monasca_metrics' + duration: "1w" + replication_count: 1 #################### # Monasca diff --git a/ansible/roles/monasca/tasks/bootstrap.yml b/ansible/roles/monasca/tasks/bootstrap.yml index 6a3c3af58b..c298ff7da1 100644 --- a/ansible/roles/monasca/tasks/bootstrap.yml +++ b/ansible/roles/monasca/tasks/bootstrap.yml @@ -36,15 +36,23 @@ - include_tasks: bootstrap_service.yml when: database.changed or use_preconfigured_databases | bool -- name: Creating monasca influxdb database - kolla_toolbox: - module_name: influxdb_database - module_args: - hostname: "{{ monasca_influxdb_address }}" - port: "{{ monasca_influxdb_http_port }}" - database_name: "{{ monasca_influxdb_name }}" +# NOTE(dszumski): Monasca is not yet compatible with InfluxDB > 1.1.10, which means +# that the official Ansible modules for managing InfluxDB don't work [1]. +# We therefore fall back to manual commands to register the database +# and set a default retention policy. +# [1] https://github.com/influxdata/influxdb-python#influxdb-pre-v110-users +- name: List influxdb databases + command: "docker exec influxdb influx -host {{ monasca_influxdb_address }} -port {{ monasca_influxdb_http_port }} -execute 'show databases'" run_once: True - delegate_to: "{{ groups['monasca-api'][0] }}" + delegate_to: "{{ groups['influxdb'][0] }}" + register: monasca_influxdb_database + changed_when: False + +- name: Creating monasca influxdb database + command: "docker exec influxdb influx -host {{ monasca_influxdb_address }} -port {{ monasca_influxdb_http_port }} -execute 'CREATE DATABASE {{ monasca_influxdb_name }} WITH DURATION {{ monasca_influxdb_retention_policy.duration }} REPLICATION {{ monasca_influxdb_retention_policy.replication_count }} NAME {{ monasca_influxdb_retention_policy.name }}'" + run_once: True + delegate_to: "{{ groups['influxdb'][0] }}" + when: monasca_influxdb_name not in monasca_influxdb_database.stdout_lines # NOTE(dszumski): The Monasca APIs write logs and messages to Kafka. Since # Kafka has automatic topic generation enabled by default we don't need to