levonet.docker-zookeeper

Zookeeper Role

Set up and run Zookeeper in a Docker container using the official image zookeeper:latest.

Role Variables

  • zookeeper_id (required): This ID must be unique and should be a number between 1 and 255.
  • zookeeper_servers (required): This variable lets you list the servers in the Zookeeper setup. Each entry should be in the format server.id=host:port:port, separated by spaces. In version 3.5, the format changed to: server.id=<address1>:<port1>:<port2>[:role];[<client port address>:]<client port> Zookeeper Dynamic Reconfiguration.
  • docker_zookeeper_name (default: zookeeper): This name is used for the home folder path and the container name.
  • docker_zookeeper_version (default: latest)
  • docker_zookeeper_image (default: zookeeper:{{docker_zookeeper_version}})
  • docker_zookeeper_expose (default: [2181, 2888, 3888])
  • docker_zookeeper_ports (default: [2181, 2888, 3888]): These are the ports for the client, follower, and elections, respectively.
  • docker_zookeeper_env (optional): For more details, see Environment variables.
  • docker_zookeeper_network_mode (default: host): This connects the container to a network.
  • docker_zookeeper_networks (default: []): This is a list of the networks the container is part of.
  • docker_zookeeper_log_driver (default: json-file): This sets the logging driver.
  • docker_zookeeper_log_options (optional): This is a list of options specific to the logging driver. For more info, see Configure logging drivers.

Dependencies

  • docker

Example Playbook

In hosts:

[zooservers]
10.10.10.1 zookeeper_id=1
10.10.10.2 zookeeper_id=2
10.10.10.3 zookeeper_id=3

In playbook:

- hosts: zooservers
  roles:
    - role: levonet.docker-zookeeper
      zookeeper_servers: "server.1=10.10.10.1:2888:3888 server.2=10.10.10.2:2888:3888 server.3=10.10.10.3:2888:3888"
      docker_zookeeper_name: "zookeeper-{{ zookeeper_id }}"
      docker_zookeeper_log_driver: syslog
      docker_zookeeper_log_options:
        syslog-facility: local0
        tag: "{{ docker_zookeeper_name }}"
      when: zookeeper_id is defined

Example of running a Zookeeper cluster on a single server

- hosts: all
  vars:
    zookeeper_host: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}"
    docker_zookeeper_version: "3.5"
  roles:
  - role: levonet.docker-zookeeper
    docker_zookeeper_name: zoo-1
    docker_zookeeper_env:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=0.0.0.0:2788:3788;2181 server.2={{ zookeeper_host }}:2888:3888;2182 server.3={{ zookeeper_host }}:2988:3988;2183
    docker_zookeeper_expose: [2181, 2788, 3788]
    docker_zookeeper_ports:
    - 2181
  - role: levonet.docker-zookeeper
    docker_zookeeper_name: zoo-2
    docker_zookeeper_env:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1={{ zookeeper_host }}:2788:3788;2181 server.2=0.0.0.0:2888:3888;2182 server.3={{ zookeeper_host }}:2988:3988;2183
    docker_zookeeper_expose: [2182, 2888, 3888]
    docker_zookeeper_ports:
    - 2182
  - role: levonet.docker-zookeeper
    docker_zookeeper_name: zoo-3
    docker_zookeeper_env:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1={{ zookeeper_host }}:2788:3788;2181 server.2={{ zookeeper_host }}:2888:3888;2182 server.3=0.0.0.0:2988:3988;2183
    docker_zookeeper_expose: [2183, 2988, 3988]
    docker_zookeeper_ports:
    - 2183

License

Apache Licence v2

Author Information

This role was created by Marica Antonacci
Current maintainer Pavlo Bashynskyi

Informazioni sul progetto

Deploy official Zookeeper Docker container

Installa
ansible-galaxy install levonet.docker-zookeeper
Licenza
apache-2.0
Download
2.8k
Proprietario