![Mark Goddard](/assets/img/avatar_default.png)
A common class of problems goes like this: * kolla-ansible deploy * Hit a problem, often in ansible/roles/*/tasks/bootstrap.yml * Re-run kolla-ansible deploy * Service fails to start This happens because the DB is created during the first run, but for some reason we fail before performing the DB sync. This means that on the second run we don't include ansible/roles/*/tasks/bootstrap_service.yml because the DB already exists, and therefore still don't perform the DB sync. However this time, the command may complete without apparent error. We should be less careful about when we perform the DB sync, and do it whenever it is necessary. There is an argument for not doing the sync during a 'reconfigure' command, although we will not change that here. This change only always performs the DB sync during 'deploy' and 'reconfigure' commands. Change-Id: I82d30f3fcf325a3fdff3c59f19a1f88055b566cc Closes-Bug: #1823766 Closes-Bug: #1797814
64 lines
2.6 KiB
YAML
64 lines
2.6 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 }}"
|
|
- "{{ monasca_grafana_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/{{ monasca_grafana_database_name }}.*:ALL"
|
|
append_privs: "yes"
|
|
run_once: True
|
|
delegate_to: "{{ groups['monasca-api'][0] }}"
|
|
when:
|
|
- not use_preconfigured_databases | bool
|
|
|
|
- include_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): The Monasca APIs write logs and messages to Kafka. Since
|
|
# Kafka has automatic topic generation enabled by default we don't need to
|
|
# create topics here.
|