ansible-nsq

ansible-nsq

Статус сборки

Роль Ansible для установки платформы распределенного обмена сообщениями NSQ в реальном времени.

Роль управляет NSQ с помощью systemd. Поддерживаемые платформы:

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

NSQ админ

Установка

ansible-galaxy install ernestas-poskus.ansible-nsq

Пример плейбука

- name: Установка NSQ
  hosts: all
  sudo: yes
  roles:
    - role: ernestas-poskus.ansible-nsq

Пример настройки нескольких узлов

- name: Установка 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 }}"

Для настройки нескольких узлов обновите nsqd['broadcast_address'] или настройте ваши хосты, чтобы они могли находить друг друга.

Требования

Нет.

Переменные роли

---
# файл по умолчанию для 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_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:

Зависимости

Нет.

Тестирование

Для тестирования вам нужно установить Ruby и VirtualBox для виртуальной машины.

gem install bundler
bundle install
bundle exec kitchen test

=======

Лицензия

Copyright (c) 2016, Ernestas Poskus Все права защищены.

Redistribution и использование в исходных и бинарных формах, с или без изменений, разрешены при соблюдении следующих условий:

  • Распределения исходного кода должны сохранять указанное выше уведомление об авторском праве, этот список условий и следующий отказ от ответственности.

  • Распределения в бинарной форме должны воспроизводить указанное выше уведомление об авторском праве, этот список условий и следующий отказ от ответственности в документации и/или других материалах, предоставляемых вместе с распределением.

  • Ни название ansible-nsq, ни имена его участников не могут использоваться для поддержания или продвижения продуктов, производных от данного программного обеспечения без предварительного письменного разрешения.

ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЕНО ДЕРЖАТЕЛЯМИ АВТОРСКИХ ПРАВ И УЧАСТНИКАМИ "КАК ЕСТЬ" И ЛЮБЫЕ ЯВНЫЕ ИЛИ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПОДРАЗУМЕВАЕМЫМИ ГАРАНТИЯМИ ТОРГОВОЙ ДЕЯТЕЛЬНОСТИ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ ОТКЛЕКАЮТСЯ. В НИКАКОМ СЛУЧАЕ ДЕРЖАТЕЛЬ АВТОРСКИХ ПРАВ ИЛИ УЧАСТНИКИ НЕ НОСЯТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ, НАКЛАДНЫЕ, СЛУЧАЙНЫЕ, ОСОБЫЕ, ЭКСПЕРТНЫЕ ИЛИ ПОСЛЕДУЮЩИЕ УБЫТКИ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ЗАКУПКОЙ ЗАМЕН ТОВАРОВ И УСЛУГ; УТЕРЯ НОРМАЛЬНОГО ВОСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ; ИЛИ ПРЕРЫВАНИЕ БИЗНЕСА) КАК БЫ ЭТО НИ ПРОИСШЛО И НА ОСНОВЕ ЛЮБОЙ ТЕОРИИ ОТВЕТСТВЕННОСТИ, БУДЬ ТО ДЕЙСТВИЕ В ДОГОВОРЕ, СТРОГОЙ ОТВЕТСТВЕННОСТИ, ИЛИ УЩЕРБ (ВКЛЮЧАЯ ХАЛАТНОСТЬ ИЛИ ИНЫЕ) ВОЗНИКАЮЩИЕ ЛЮБЫМ ОБРАЗОМ В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ ПРЕДУПРЕЖДЕН О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ.

Информация об авторе

Twitter: @ernestas_poskus

О проекте

Ansible role for installing nsq realtime distributed messaging platform.

Установить
ansible-galaxy install ernestas-poskus/ansible-nsq
Лицензия
bsd-3-clause
Загрузки
69
Владелец
pragmatic & ambitious