ernestas-poskus.ansible-nsq

ansible-nsq

Status budowy

Rola instalacyjna Ansible dla platformy komunikacyjnej NSQ w czasie rzeczywistym.

Rola zarządza NSQ za pomocą systemd. Obsługiwane platformy:

  • CentOS: >7
  • Ubuntu: >16.04 (xenial)

Administracja NSQ

Instalacja

ansible-galaxy install ernestas-poskus.ansible-nsq

Przykładowy Playbook

- name: Instalacja NSQ
  hosts: all
  sudo: yes
  roles:
    - role: ernestas-poskus.ansible-nsq

Przykład dla konfiguracji z wieloma węzłami

- name: Instalacja NSQ
  hosts: nsqs
  sudo: yes
  roles:
    - role: ernestas-poskus.ansible-nsq
      nsq_lookupd_tcp_addresses: "{{ groups['nsqs']|map('extract', hostvars, ['ansible_eth1', 'ipv4', 'address'])|list }}"
      nsq_lookupd_http_addresses: "{{ groups['nsqs']|map('extract', hostvars, ['ansible_eth1', 'ipv4', 'address'])|list }}"

W przypadku konfiguracji z wieloma węzłami zaktualizuj nsqd['broadcast_address'] lub skonfiguruj swoje hosty, aby mogły się odnaleźć.

Wymagania

Brak.

Zmienne roli

---
# plik domyślny dla ansible-nsq

nsq_nsqd_install: true
nsq_nsqadmin_install: true
nsq_nsqlookupd_install: true

nsq_owner: root
nsq_group: root

nsq_version: 0.3.8
nsq_go_version: go1.6.2
nsq_arch: linux-amd64

nsq_install_directory: /opt

nsq_config_directory: /etc/nsq
nsq_config_directory_mode: 0644

nsq_data_directory: /var/lib/nsq
nsq_data_directory_mode: 0750

nsq_binaries:
  - nsq_pubsub
  - nsq_stat
  - nsq_tail
  - nsq_to_file
  - nsq_to_http
  - nsq_to_nsq
  - to_nsq

nsq_network_interface: "{{ ansible_default_ipv4.interface }}"
nsq_network_ip_protocol: 'ipv4'

nsq_network_address: "{{ hostvars[inventory_hostname]['ansible_' + nsq_network_interface][nsq_network_ip_protocol]['address'] }}"

nsq_lookupd_tcp_port: 4160
nsq_lookupd_http_port: 4161

nsq_lookupd_tcp_addresses:
  - "{{ nsq_network_address }}"

nsq_lookupd_http_addresses:
  - "{{ nsq_network_address }}"

nsq_nsqlookupd:
  broadcast_address: "{{ ansible_hostname }}"
  http_address: "{{ nsq_network_address }}:{{ nsq_lookupd_http_port }}"
  inactive_producer_timeout: 300s
  tcp_address: "{{ nsq_network_address }}:{{ nsq_lookupd_tcp_port }}"
  tombstone_lifetime: 45s

nsq_nsqd:
  auth_http_address:
  broadcast_address: "{{ ansible_hostname }}"
  data_path: "{{ nsq_data_directory }}"
  deflate: true
  e2e_processing_latency_percentile:
  e2e_processing_latency_window_time: 600s
  http_address: "{{ nsq_network_address }}:4151"
  https_address: "{{ nsq_network_address }}:4152"
  max_body_size: 5242880
  max_bytes_per_file: 104857600
  max_deflate_level: 6
  max_heartbeat_interval: 60s
  max_msg_size: 1048576
  max_msg_timeout: 900s
  max_output_buffer_size: 65536
  max_output_buffer_timeout: 1s
  max_rdy_count: 2500
  max_req_timeout: 3600s
  mem_queue_size: 10000
  msg_timeout: 60s
  snappy: true
  statsd_address:
  statsd_interval: 60s
  statsd_mem_stats: true
  statsd_prefix: 'nsq.%s'
  sync_every: 2500
  sync_timeout: 2s
  tcp_address: "{{ nsq_network_address }}:4150"
  tls_cert:
  tls_client_auth_policy:
  tls_key:
  tls_min_version: 'tls1.0'
  tls_required: false
  tls_root_ca_file:
  worker_id: 255

nsq_nsqadmin:
  graphite_url:
  http_address: "{{ nsq_network_address }}:4171"
  http_client_tls_cert:
  http_client_tls_insecure_skip_verify:
  http_client_tls_key:
  http_client_tls_root_ca_file:
  notification_http_endpoint:
  proxy_graphite:
  statsd_counter_format: 'stats.counters.%s.count'
  statsd_gauge_format: 'stats.gauges.%s'
  statsd_interval: '60s'
  statsd_prefix: 'nsq.%s'
  template_dir:

Zależności

Brak.

Testowanie

Musisz zainstalować Ruby i VirtualBox do testowania w maszynach wirtualnych.

gem install bundler
bundle install
bundle exec kitchen test

=======

Licencja

Copyright (c) 2016, Ernestas Poskus Wszelkie prawa zastrzeżone.

Redystrybucja i użycie w formie źródłowej i binarnej, z lub bez modyfikacji, są dozwolone, pod warunkiem, że spełnione są następujące warunki:

  • Redystrybucje źródła muszą zawierać powyższy wyjątek autorski, tę listę warunków i poniższy zrzut odpowiedzialności.

  • Redystrybucje w formie binarnej muszą reprodukować powyższy wyjątek autorski, tę listę warunków i poniższy zrzut odpowiedzialności w dokumentacji i/lub innych materiałach dostarczanych z rozdzieleniem.

  • Nazwa ansible-nsq ani nazwy jego współtwórców nie mogą być używane do popierania lub promowania produktów pochodzących z tego oprogramowania bez uprzedniej pisemnej zgody.

NINIEJSZE OPROGRAMOWANIE JEST DOSTARCZANE PRZEZ POSIADACZY PRAW AUTORSKICH I WSPÓŁTWÓRCÓW "TAK JAK JEST" I WSZELKIE WYRAŹNE LUB DOMNIEMANE GWARANCJE, W TYM, ALE NIE TYLKO DO, DOMNIEMANE GWARANCJE PRZYDATNOŚCI HANDLOWEJ I PRZYDATNOŚCI DO OKREŚLONYCH CELÓW SĄ ZAPISANE. W ŻADNYM WYPADKU POSIADACZ PRAW AUTORSKICH ANI WSPÓŁTWÓRCY NIE BĘDĄ ODPOWIEDZIALNI ZA ŻADNE SZKODY POŚREDNIE, WTÓRNE, INCYDENTALNE, SZCZEGÓLNE, WZORCOWE LUB KONSEKWENTNE (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) JAKICHKOLWIEK, W JAKIMKOLWIEK NAUCZALNIU ODPOWIEDZIALNOŚCI ZA UŻYCIE TEGO OPROGRAMOWANIA, NAWET JEŚLI ZOSTAŁY OSTRZEŻONE O MOŻLIWOŚCI TAKIEGO USZKODZENIA.

Informacje o autorze

Twitter: @ernestas_poskus

O projekcie

Ansible role for installing nsq realtime distributed messaging platform.

Zainstaluj
ansible-galaxy install ernestas-poskus.ansible-nsq
Licencja
bsd-3-clause
Pobrania
80
Właściciel
pragmatic & ambitious