#
# 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.
#

- name: "ensure zookeeper data dir exists"
  file: path={{ default_data_dirs[0] }}/zookeeper state=directory
- name: "ensure myid file is set"
  template: src=roles/zookeeper/templates/myid dest={{ default_data_dirs[0] }}/zookeeper/myid
- name: Check if Zookeeper is running
  shell: jps | grep "QuorumPeerMain"
  ignore_errors: yes
  changed_when: false
  register: zookeeper_status
- name: "start zookeeper"
  command: "{{ zookeeper_home }}/bin/zkServer.sh start"
  register: zk_start
  changed_when: "'STARTED' in zk_start.stdout"
  when: zookeeper_status.rc == 1
