ernestas-poskus.ansible-nsq
ansible-nsq
Rol de instalación de Ansible para la plataforma de mensajería distribuida en tiempo real NSQ.
El rol gestiona NSQ mediante systemd. Las plataformas soportadas son:
- CentOS: >7
- Ubuntu: >16.04 (xenial)
Instalación
ansible-galaxy install ernestas-poskus.ansible-nsq
Ejemplo de Playbook
- name: Instalando NSQ
hosts: all
sudo: yes
roles:
- role: ernestas-poskus.ansible-nsq
Ejemplo para configuración de múltiples nodos
- name: Instalando 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 }}"
Para la configuración de múltiples nodos, actualiza nsqd['broadcast_address'] o provisiona tus hosts para que puedan encontrarse entre sí.
Requisitos
Ninguno.
Variables del Rol
---
# archivo por defecto para 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:
Dependencias
Ninguna.
Pruebas
Debes instalar Ruby y VirtualBox para probar en una máquina virtual.
gem install bundler
bundle install
bundle exec kitchen test
=======
Licencia
Copyright (c) 2016, Ernestas Poskus Todos los derechos reservados.
Se permite la redistribución y el uso en formas de código fuente y binario, con o sin modificaciones, siempre y cuando se cumplan las siguientes condiciones:
Las redistribuciones del código fuente deben retener el aviso de copyright mencionado arriba, esta lista de condiciones y la siguiente renuncia.
Las redistribuciones en forma binaria deben reproducir el aviso de copyright mencionado arriba, esta lista de condiciones y la siguiente renuncia en la documentación y/o en otros materiales proporcionados con la distribución.
Ni el nombre de ansible-nsq ni los nombres de sus contribuyentes pueden ser utilizados para respaldar o promover productos derivados de este software sin un permiso específico previo por escrito.
ESTE SOFTWARE SE PROPORCIONA POR LOS TITULARES DE COPYRIGHT Y LOS CONTRIBUIDORES "TAL CUAL" Y CUALQUIERA GARANTÍA EXPRESA O IMPLÍCITA, INCLUYENDO, PERO NO LIMITÁNDOSE A, LAS GARANTÍAS IMPLÍCITAS DE COMERCIALIZABILIDAD Y FITNESS PARA UN PROPÓSITO PARTICULAR QUEDAN EXCLUIDAS. EN NINGÚN CASO EL TITULAR DE COPYRIGHT O LOS CONTRIBUIDORES SERÁN RESPONSABLES POR CUALQUIER DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, EJEMPLAR O CONSECUENTE (INCLUYENDO, PERO NO LIMITÁNDOSE A, LA OBTENCIÓN DE BIENES O SERVICIOS SUSTITUTIVOS; PÉRDIDA DE USO, DATOS O BENEFICIOS; O INTERRUPCIÓN DEL NEGOCIO) SIN IMPORTAR LA CAUSA Y CUALQUIER TEORÍA DE RESPONSABILIDAD, YA SEA EN CONTRATO, RESPONSABILIDAD ESTRICTA O AGRAVIO (INCLUYENDO NEGLIGENCIA O DE OTRA MANERA) QUE SURJA EN CUALQUIER MANERA DEL USO DE ESTE SOFTWARE, INCLUSO SI SE HA ADVERTIDO DE LA POSIBILIDAD DE TAL DAÑO.
Información del Autor
Twitter: @ernestas_poskus
Ansible role for installing nsq realtime distributed messaging platform.
ansible-galaxy install ernestas-poskus.ansible-nsq