kolla-ansible/ansible/roles/monasca/tasks/bootstrap.yml
Doug Szumski 82cf40edf2 Remove Monasca Grafana service
In the Xena cycle it was decided to remove the Monasca
Grafana fork due to lack of maintenance. This commit removes
the service and provides a limited workaround using the
Monasca Grafana datasource with vanilla Grafana.

Depends-On: I9db7ec2df050fa20317d84f6cea40d1f5fd42e60
Change-Id: I4917ece1951084f6665722ba9a91d47764d3709a
2021-04-27 11:06:25 +00:00

107 lines
3.8 KiB
YAML

---
- name: Creating monasca database
become: true
kolla_toolbox:
module_name: mysql_db
module_args:
login_host: "{{ monasca_database_address }}"
login_port: "{{ monasca_database_port }}"
login_user: "{{ database_user }}"
login_password: "{{ database_password }}"
name: "{{ item }}"
run_once: True
delegate_to: "{{ groups['monasca-api'][0] }}"
with_items:
- "{{ monasca_database_name }}"
when:
- not use_preconfigured_databases | bool
- name: Creating monasca database user and setting permissions
become: true
kolla_toolbox:
module_name: mysql_user
module_args:
login_host: "{{ monasca_database_address }}"
login_port: "{{ monasca_database_port }}"
login_user: "{{ database_user }}"
login_password: "{{ database_password }}"
name: "{{ monasca_database_user }}"
password: "{{ monasca_database_password }}"
host: "%"
priv: "{{ monasca_database_name }}.*:ALL"
append_privs: "yes"
run_once: True
delegate_to: "{{ groups['monasca-api'][0] }}"
when:
- not use_preconfigured_databases | bool
- import_tasks: bootstrap_service.yml
# 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
become: true
command: "docker exec influxdb influx -host {{ monasca_influxdb_address }} -port {{ monasca_influxdb_http_port }} -execute 'show databases'"
run_once: True
delegate_to: "{{ groups['influxdb'][0] }}"
register: monasca_influxdb_database
changed_when: False
- name: Creating monasca influxdb database
become: true
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): Although we can take advantage of automatic topic
# creation in Kafka, creating the topics manually allows unique settings
# to be used per topic, rather than the defaults. It also avoids an edge
# case where services on multiple nodes may race to create topics, and
# paves the way for enabling things like compression on a per topic basis.
- name: List monasca kafka topics
become: true
command: >
docker exec kafka /opt/kafka/bin/kafka-topics.sh
--zookeeper localhost
--list
register: kafka_topics
run_once: True
delegate_to: "{{ groups['kafka'][0] }}"
- name: Create monasca kafka topics if they don't exist
become: true
command: >
docker exec kafka /opt/kafka/bin/kafka-topics.sh
--create
--topic {{ item.name }}
--partitions {{ item.partitions }}
--replication-factor {{ item.replication_factor }}
--zookeeper localhost
run_once: True
delegate_to: "{{ groups['kafka'][0] }}"
when:
- item.name not in kafka_topics.stdout_lines
- item.enabled | bool
with_items: "{{ monasca_all_topics }}"
- name: Remove monasca kafka topics for disabled services
become: true
command: >
docker exec kafka /opt/kafka/bin/kafka-topics.sh
--delete
--topic "{{ item.name }}"
--zookeeper localhost
run_once: True
delegate_to: "{{ groups['kafka'][0] }}"
when:
- item.name in kafka_topics.stdout_lines
- not item.enabled | bool
with_items: "{{ monasca_all_topics }}"