tripleo-validations/validations/ceilometerdb-size.yaml

90 lines
3.1 KiB
YAML

---
- hosts: undercloud
vars:
metadata:
name: Events and Metrics Database Size Check
description: >
The undercloud's metric and events databases can grow to a substantial
size if metering_time_to_live and event_time_to_live is set to
a negative value (infinite limit).
This validation checks each setting and fails if variables are
set to a negative value or if they have no custom setting
(their value is -1 by default).
groups:
- pre-deployment
metering_ttl_check: "metering_time_to_live"
event_ttl_check: "event_time_to_live"
event_config_file: "/etc/ceilometer/ceilometer.conf"
tasks:
- name: Get the path of tripleo undercloud config file
become: true
hiera: name="tripleo_undercloud_conf_file"
- name: Check if telemetry services are enabled
ini: path={{ tripleo_undercloud_conf_file }} section=DEFAULT key=enable_telemetry
register: enable_telemetry
become: true
- name: End play if telemetry is not enabled
meta: end_play
when: enable_telemetry.value|bool != True
- name: Initialize empty list of errors
set_fact:
validation_errors: []
# in Ocata and later, the undercloud
# uses panko for events
- name: check to see if panko is installed
stat:
path: /etc/panko/panko.conf
register: panko_exists
# if gnocchi exists, then the gnocchi archive policy
# applies to metering storage, no need to check
# ttls
- name: Check to see if gnocchi is installed
stat:
path: /etc/gnocchi/gnocchi.conf
register: gnocchi_exists
- name: Set fact for {{ event_config_file }}
set_fact:
event_config_file: /etc/panko/panko.conf
when: panko_exists.stat.exists
- name: Get event ttl from {{ event_config_file }}
become: true
ini:
path: "{{ event_config_file }}"
section: database
key: "{{ event_ttl_check }}"
ignore_missing_file: true
register: event_check_result
- name: Set event_check_result errors if needed
set_fact:
validation_errors: "{{ validation_errors }} + [ '{{ event_config_file }}[database]/{{ event_ttl_check }} is set to -1 or not set' ]"
when: event_check_result.value|default(-1) < 0
- name: Get TTL setting values from ceilometer.conf
become: true
ini: path=/etc/ceilometer/ceilometer.conf section=database key={{ metering_ttl_check }} ignore_missing_file=True
register: meter_check_result
when: gnocchi_exists.stat.exists == False
- name: Set meter_check_result errors if needed
set_fact:
validation_errors: "{{ validation_errors }} + [ '/etc/ceilometer/ceilomter.conf[database]/{{ metering_ttl_check }} is set to -1 or not set' ]"
when: gnocchi_exists.stat.exists == False and meter_check_result.value|default(-1) < 0
# failure occurs when the length of the validation_errors
# array is > 0
# Only fail if telemetry is enabled in undercloud.conf
- name: Check failure
fail:
msg: "\n{{ validation_errors|join('\n') }}"
when: validation_errors|length > 0 and enable_telemetry.value|bool == True