#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.
#
---
# This playbook deploys a ElasticSearch cluster

- hosts: elasticsearch
  vars:
    #
    # host_group - usually "{{ groups['...'] }}" where '...' is what was used
    #   for 'hosts' above.  The hostname of each host will be looked up in this
    #   group to assign a zero-based index.  That index will be used in concert
    #   with 'name_prefix' below to assign a host/container name.
    host_group: "{{ groups['elasticsearch'] }}"
    #
    # name_prefix - a unique prefix for this set of elasticsearches.  The prefix
    # will be used in combination with an index (determined using
    # 'host_group' above) to name host/elasticsearcher.
    name_prefix: "elasticsearch"
  roles:
  - elasticsearch
