diff --git a/ansible/roles/monasca/defaults/main.yml b/ansible/roles/monasca/defaults/main.yml index 29536d33f7..5fe661fefb 100644 --- a/ansible/roles/monasca/defaults/main.yml +++ b/ansible/roles/monasca/defaults/main.yml @@ -114,6 +114,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