The Monasca Agent collects metrics and in this change is deployed across the control plane. These metrics are collected into an OpenStack project. It supports configuring a small number of plugins, which can be extended in later commits. It also makes the Monasca Agent credentials available to other roles, such as the common role to allow forwarding logs to Monasca. Partially-Implements: blueprint monasca-roles Change-Id: I76b34fc5e1c76407a45fcf272268d5798b473ca2
378 lines
12 KiB
YAML
378 lines
12 KiB
YAML
---
|
|
- name: Ensuring config directories exist
|
|
file:
|
|
path: "{{ node_config_directory }}/{{ item.key }}"
|
|
state: "directory"
|
|
owner: "{{ config_owner_user }}"
|
|
group: "{{ config_owner_group }}"
|
|
mode: "0770"
|
|
recurse: yes
|
|
become: true
|
|
when:
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ monasca_services }}"
|
|
|
|
- name: Copying over config.json files for services
|
|
template:
|
|
src: "{{ item.key }}/{{ item.key }}.json.j2"
|
|
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_config_jsons
|
|
when:
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ monasca_services }}"
|
|
notify:
|
|
- "Restart {{ item.key }} container"
|
|
|
|
- name: Copying over monasca-agent-collector config
|
|
vars:
|
|
service: "{{ monasca_services['monasca-agent-collector'] }}"
|
|
merge_yaml:
|
|
sources:
|
|
- "{{ role_path }}/templates/monasca-agent-collector/{{ item }}.j2"
|
|
- "{{ node_custom_config }}/monasca/{{ item }}"
|
|
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/{{ item }}"
|
|
dest: "{{ node_config_directory }}/monasca-agent-collector/{{ item }}"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_agent_collector_confs
|
|
with_items:
|
|
- agent-collector.yml
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-agent-collector container
|
|
|
|
- name: Ensuring monasca-agent collector plugin config directory exists
|
|
vars:
|
|
service: "{{ monasca_services['monasca-agent-collector'] }}"
|
|
file:
|
|
path: "{{ node_config_directory }}/monasca-agent-collector/plugins"
|
|
state: "directory"
|
|
owner: "{{ config_owner_user }}"
|
|
group: "{{ config_owner_group }}"
|
|
mode: "0770"
|
|
become: true
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
|
|
- name: Find monasca-agent-collector plugin configuration files
|
|
find:
|
|
paths:
|
|
- "{{ role_path }}/templates/monasca-agent-collector/plugins/"
|
|
- "{{ node_custom_config }}/monasca/agent_plugins/"
|
|
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/agent_plugins/"
|
|
patterns: '*.yaml'
|
|
run_once: True
|
|
register: agent_plugins
|
|
|
|
- name: Copying over monasca-agent-collector plugins
|
|
vars:
|
|
service: "{{ monasca_services['monasca-agent-collector'] }}"
|
|
template:
|
|
src: "{{ item.path }}"
|
|
dest: "{{ node_config_directory }}/monasca-agent-collector/plugins/{{ item.path | basename }}"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_agent_collector_plugin_confs
|
|
with_items:
|
|
"{{ agent_plugins.files }}"
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-agent-collector container
|
|
|
|
- name: Copying over monasca-agent-forwarder config
|
|
vars:
|
|
service: "{{ monasca_services['monasca-agent-forwarder'] }}"
|
|
merge_yaml:
|
|
sources:
|
|
- "{{ role_path }}/templates/monasca-agent-forwarder/{{ item }}.j2"
|
|
- "{{ node_custom_config }}/monasca/{{ item }}"
|
|
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/{{ item }}"
|
|
dest: "{{ node_config_directory }}/monasca-agent-forwarder/{{ item }}"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_agent_forwarder_confs
|
|
with_items:
|
|
- agent-forwarder.yml
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-agent-forwarder container
|
|
|
|
- name: Copying over monasca-agent-statsd config
|
|
vars:
|
|
service: "{{ monasca_services['monasca-agent-statsd'] }}"
|
|
merge_yaml:
|
|
sources:
|
|
- "{{ role_path }}/templates/monasca-agent-statsd/{{ item }}.j2"
|
|
- "{{ node_custom_config }}/monasca/{{ item }}"
|
|
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/{{ item }}"
|
|
dest: "{{ node_config_directory }}/monasca-agent-statsd/{{ item }}"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_agent_statsd_confs
|
|
with_items:
|
|
- agent-statsd.yml
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-agent-statsd container
|
|
|
|
- name: Copying over monasca-api config
|
|
vars:
|
|
service: "{{ monasca_services['monasca-api'] }}"
|
|
merge_configs:
|
|
sources:
|
|
- "{{ role_path }}/templates/monasca-api/{{ item }}.j2"
|
|
- "{{ node_custom_config }}/monasca/{{ item }}"
|
|
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/{{ item }}"
|
|
dest: "{{ node_config_directory }}/monasca-api/{{ item }}"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_api_confs
|
|
with_items:
|
|
- api.conf
|
|
- api-config.ini
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-api container
|
|
|
|
- name: Copying over monasca-api wsgi config
|
|
vars:
|
|
service: "{{ monasca_services['monasca-api'] }}"
|
|
template:
|
|
src: "{{ role_path }}/templates/monasca-api/wsgi-api.conf.j2"
|
|
dest: "{{ node_config_directory }}/monasca-api/wsgi-api.conf"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_api_wsgi_confs
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-api container
|
|
|
|
- name: Copying over monasca-log-api config
|
|
vars:
|
|
service: "{{ monasca_services['monasca-log-api'] }}"
|
|
merge_configs:
|
|
sources:
|
|
- "{{ role_path }}/templates/monasca-log-api/{{ item }}.j2"
|
|
- "{{ node_custom_config }}/monasca/{{ item }}"
|
|
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/{{ item }}"
|
|
dest: "{{ node_config_directory }}/monasca-log-api/{{ item }}"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_log_api_confs
|
|
with_items:
|
|
- log-api.conf
|
|
- log-api-paste.ini
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-log-api container
|
|
|
|
- name: Copying over monasca-log-api wsgi config
|
|
vars:
|
|
service: "{{ monasca_services['monasca-log-api'] }}"
|
|
template:
|
|
src: "{{ role_path }}/templates/monasca-log-api/wsgi-log-api.conf.j2"
|
|
dest: "{{ node_config_directory }}/monasca-log-api/wsgi-log-api.conf"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_log_api_wsgi_confs
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-log-api container
|
|
|
|
- name: Copying over monasca-log-transformer config
|
|
vars:
|
|
service: "{{ monasca_services['monasca-log-transformer'] }}"
|
|
template:
|
|
src: "{{ item }}"
|
|
dest: "{{ node_config_directory }}/monasca-log-transformer/log-transformer.conf"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_log_transformer_confs
|
|
with_first_found:
|
|
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/log-transformer.conf"
|
|
- "{{ node_custom_config }}/monasca/log-transformer.conf"
|
|
- "{{ role_path }}/templates/monasca-log-transformer/log-transformer.conf.j2"
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-log-transformer container
|
|
|
|
- name: Copying over monasca-log-persister config
|
|
vars:
|
|
service: "{{ monasca_services['monasca-log-persister'] }}"
|
|
template:
|
|
src: "{{ item }}"
|
|
dest: "{{ node_config_directory }}/monasca-log-persister/log-persister.conf"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_log_persister_confs
|
|
with_first_found:
|
|
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/log-persister.conf"
|
|
- "{{ node_custom_config }}/monasca/log-persister.conf"
|
|
- "{{ role_path }}/templates/monasca-log-persister/log-persister.conf.j2"
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-log-persister container
|
|
|
|
- name: Copying over monasca-log-persister elasticsearch template
|
|
vars:
|
|
service: "{{ monasca_services['monasca-log-persister'] }}"
|
|
template:
|
|
src: "{{ item }}"
|
|
dest: "{{ node_config_directory }}/monasca-log-persister/elasticsearch-template.json"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_log_persister_elasticsearch_template
|
|
with_first_found:
|
|
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/elasticsearch-template.json"
|
|
- "{{ node_custom_config }}/monasca/elasticsearch-template.json"
|
|
- "{{ role_path }}/templates/monasca-log-persister/elasticsearch-template.json"
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-log-persister container
|
|
|
|
- name: Copying over monasca-log-metrics config
|
|
vars:
|
|
service: "{{ monasca_services['monasca-log-metrics'] }}"
|
|
template:
|
|
src: "{{ item }}"
|
|
dest: "{{ node_config_directory }}/monasca-log-metrics/log-metrics.conf"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_log_metrics_confs
|
|
with_first_found:
|
|
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/log-metrics.conf"
|
|
- "{{ node_custom_config }}/monasca/log-metrics.conf"
|
|
- "{{ role_path }}/templates/monasca-log-metrics/log-metrics.conf.j2"
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-log-metrics container
|
|
|
|
- name: Copying over monasca-thresh config
|
|
vars:
|
|
service: "{{ monasca_services['monasca-thresh'] }}"
|
|
# NOTE(dszumski): We can't use merge_yaml since it replaces empty values
|
|
# with `null`. This breaks the thresholder config file parsing (which should
|
|
# probably be more robust).
|
|
template:
|
|
src: "{{ item }}"
|
|
dest: "{{ node_config_directory }}/monasca-thresh/thresh-config.yml"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_thresh_confs
|
|
with_first_found:
|
|
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/thresh-config.yml"
|
|
- "{{ node_custom_config }}/monasca/thresh-config.yml"
|
|
- "{{ role_path }}/templates/monasca-thresh/thresh-config.yml.j2"
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-thresh container
|
|
|
|
- name: Copying over monasca-thresh storm config
|
|
vars:
|
|
service: "{{ monasca_services['monasca-thresh'] }}"
|
|
template:
|
|
src: "{{ item }}"
|
|
dest: "{{ node_config_directory }}/monasca-thresh/storm.yml"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_thresh_storm_conf
|
|
with_first_found:
|
|
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/storm.yml"
|
|
- "{{ node_custom_config }}/monasca/storm.yml"
|
|
- "{{ role_path }}/templates/monasca-thresh/storm.yml.j2"
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-thresh container
|
|
|
|
- name: Copying over monasca-notification config
|
|
vars:
|
|
service: "{{ monasca_services['monasca-notification'] }}"
|
|
merge_configs:
|
|
sources:
|
|
- "{{ role_path }}/templates/monasca-notification/{{ item }}.j2"
|
|
- "{{ node_custom_config }}/monasca/{{ item }}"
|
|
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/{{ item }}"
|
|
dest: "{{ node_config_directory }}/monasca-notification/{{ item }}"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_notification_confs
|
|
with_items:
|
|
- notification.conf
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-notification container
|
|
|
|
- name: Copying over monasca-persister config
|
|
vars:
|
|
service: "{{ monasca_services['monasca-persister'] }}"
|
|
merge_configs:
|
|
sources:
|
|
- "{{ role_path }}/templates/monasca-persister/{{ item }}.j2"
|
|
- "{{ node_custom_config }}/monasca/{{ item }}"
|
|
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/{{ item }}"
|
|
dest: "{{ node_config_directory }}/monasca-persister/{{ item }}"
|
|
mode: "0660"
|
|
become: true
|
|
register: monasca_persister_confs
|
|
with_items:
|
|
- persister.conf
|
|
when:
|
|
- inventory_hostname in groups[service['group']]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart monasca-persister container
|
|
|
|
- name: Check monasca containers
|
|
become: true
|
|
kolla_docker:
|
|
action: "compare_container"
|
|
common_options: "{{ docker_common_options }}"
|
|
name: "{{ item.value.container_name }}"
|
|
image: "{{ item.value.image }}"
|
|
pid_mode: "{{ item.value.pid_mode|default('') }}"
|
|
volumes: "{{ item.value.volumes }}"
|
|
dimensions: "{{ item.value.dimensions }}"
|
|
register: check_monasca_containers
|
|
when:
|
|
- kolla_action != "config"
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ monasca_services }}"
|
|
notify:
|
|
- "Restart {{ item.key }} container"
|