8388a54f52
Change-Id: I3e31373be3af65c8a2b54ad32c8ea24c72ab5a41
63 lines
2.2 KiB
YAML
63 lines
2.2 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.
|
|
|
|
- import_playbook: run-setup.yml
|
|
|
|
- name: Test host layout
|
|
hosts: localhost
|
|
become: true
|
|
|
|
environment:
|
|
ANSIBLE_LOG_PATH: "/tmp/elk-metrics-7x-logs/ansible-elk-test.log"
|
|
|
|
vars:
|
|
storage_node_count: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
|
|
expected_masters: [1, 1, 3, 3, 3, 3, 3, 5, 5, 5, 5, 7, 7, 7, 7, 9, 9, 9, 9, 11]
|
|
|
|
tasks:
|
|
|
|
# the elasticsearch cluster elects one master from all those which are marked as master-eligible
|
|
# 1 node cluster can only have one master
|
|
# 2 node clusters have 1 master-eligable nodes to avoid split-brain
|
|
# 3 node clusters have 3 master-eligable nodes
|
|
# >3 node clusters have (nodes // 2) eligable masters rounded up to the next odd number
|
|
- name: Master node count fact
|
|
set_fact:
|
|
master_node_count: |-
|
|
{% set masters = 0 %}
|
|
{% if (item | int) < 3 %}
|
|
{% set masters = 1 %}
|
|
{% elif (item | int) == 3 %}
|
|
{% set masters = 3 %}
|
|
{% else %}
|
|
{% set masters = (item | int ) // 2 %}
|
|
{% if ((masters | int) % 2 == 0) %}
|
|
{% set masters = (masters | int) + 1 %}
|
|
{% endif %}
|
|
{% endif %}
|
|
{{ masters }}
|
|
with_items: "{{ storage_node_count }}"
|
|
register: computed_masters
|
|
|
|
- name: Gather results
|
|
set_fact:
|
|
masters: "{{ masters|default([]) + [ { 'nodes': item.item, 'masters': (item.ansible_facts.master_node_count|int) } ] }}"
|
|
with_items: "{{ computed_masters.results }}"
|
|
|
|
- name: Check results
|
|
assert:
|
|
that: item.0 == item.1.masters
|
|
with_together:
|
|
- "{{ expected_masters }}"
|
|
- "{{ masters }}"
|