openstack-ansible-ops/elk_metrics_7x/installJournalbeat.yml
Duncan Martin Walker c43903e5c5 Allow user override of beat install locations
The installation locations of elastic beats are currently hardcoded
using openstack-ansible groups and cannot readily be extended to include
non-openstack hosts. This is particularly notable with auditbeat,
packetbeat and filebeat, which directly use the OSA 'hosts' group, and
metricbeat, which uses 'all'.

This commit allows these choices to be overrided by defining groups
named filebeat, metricbeat etc, with naming conventions as with the elk
integration inventory. Using integration inventories, one can include
the OSA groups within the override to extend the deployment. The defaults
are unchanged, with the exception of Metricbeat, which is now by default
deployed to the OSA groups 'hosts' and 'all_containers' instead of 'all'.

Change-Id: Ie39fc10f5749c9636c890a0417fc532f77562144
2020-02-10 09:54:19 +00:00

106 lines
2.8 KiB
YAML

---
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- name: Detect journalbeat host deployment group(s)
hosts: all
gather_facts: false
connection: local
tasks:
- name: Configure deployment group when Journalbeat group not specified
block:
- name: Add hosts to dynamic inventory group
group_by:
key: journalbeat_deployment_containers
parents: all_journalbeat_deployments
when:
- openstack_release is defined and
openstack_release is version('18.0.0', 'lt')
- physical_host is defined and
physical_host != inventory_hostname
- name: Add hosts to dynamic inventory group
group_by:
key: journalbeat_deployment_hosts
parents: all_journalbeat_deployments
when:
- physical_host is undefined or
physical_host == inventory_hostname
when:
- groups['journalbeat'] is not defined
tags:
- always
- name: Install Journalbeat
hosts: "{{ groups['journalbeat'] | default(groups['all_journalbeat_deployments']) }}"
become: true
vars:
haproxy_ssl: false
vars_files:
- vars/variables.yml
environment: "{{ deployment_environment_variables | default({}) }}"
pre_tasks:
- name: Check for journal directory
stat:
path: /var/log/journal
register: journal_dir
tags:
- always
- name: Halt this playbook if no journal is found
meta: end_play
when:
- not (journal_dir.stat.exists | bool) or
(ansible_service_mgr != 'systemd')
roles:
- role: elastic_journalbeat
tags:
- beat-install
- name: Setup journalbeat rollup
hosts: elastic-logstash[0]
become: true
vars:
haproxy_ssl: false
vars_files:
- vars/variables.yml
environment: "{{ deployment_environment_variables | default({}) }}"
pre_tasks:
- name: Check for journal directory
stat:
path: /var/log/journal
register: journal_dir
tags:
- always
- name: Halt this playbook if no journal is found
meta: end_play
when:
- not (journal_dir.stat.exists | bool) or
(ansible_service_mgr != 'systemd')
roles:
- role: elastic_rollup
index_name: journalbeat
when:
- elastic_create_rollup | bool
tags:
- journalbeat