#
### 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: install accumulo tserver systemd unit file
  template:
    src: roles/accumulo/templates/tserver.j2 
    dest: "/etc/systemd/system/accumulo-tserver@.service"
    mode: 0644

- name: start accumulo-tserver(s) using systemd
  systemd: 
    state: started 
    name: "accumulo-tserver@{{ item }}.service"
    daemon_reload: yes
    enabled: yes
  with_sequence: "start=1 end={{ num_tservers }}"
