/ansible-sensu

An Ansible role to deploy a fully dynamic Sensu stack!

Primary LanguageShellMIT LicenseMIT

Sensu Ansible Galaxy

This role deploys a full Sensu stack, a modern, open source monitoring framework.

Features

  • Deploy a full Sensu stack, including RabbitMQ, Redis, and the Uchiwa dashboard
  • Tight integration with the Ansible inventory - deployment of monitoring checks based on role defined in your inventory
  • Automatic generation and dynamic deployment of SSL certs for secure communication between your clients and servers
  • Highly configurable

Documentation Documentation

Read the full documentation for a comprehensive overview of this role and its powerful features.

Supported Platforms

In this initial release SmartOS will be the only supported platform. However, I am dedicating a lot of time to this role and will be adding support for all major BSD & Linux platforms.

Current Release

Future Releases

  • OpenBSD
  • FreeBSD
  • NetBSD
  • EL
  • Ubuntu / Debian

Role Variables

All variables have sensible defaults, which can be found in defaults/main.yml. The current version includes the following variables:

RabbitMQ Server Properties - Sensu RabbitMQ documentation

Name Default Value Description
rabbitmq_config_path /opt/local/etc/rabbitmq Path to the RabbitMQ configuration directory
rabbitmq_host "{{ groups['rabbitmq_servers'][0] }}" The hostname/IP address of the RabbitMQ node
rabbitmq_port 5671 The transmission port for RabbitMQ communications
rabbitmq_server false Determines whether to include the deployment of RabbitMQ
rabbitmq_sensu_user_name sensu Username for authentication with the RabbitMQ vhost
rabbitmq_sensu_password sensu Password for authentication with the RabbitMQ vhost
rabbitmq_sensu_vhost /sensu Name of the RabbitMQ Sensu vhost

Redis Server Properties - Sensu Redis documentation

Name Default Value Description
redis_host "{{ groups['redis_servers'][0] }}" Hostname/IP address of the Redis node
redis_server false Determines whether to include the deployment of Redis
redis_port 6379 The transmission port for Redis communications

Sensu Properties - Sensu services documentation

Name Default Value Description
sensu_api_host "{{ groups['sensu_masters'][0] }}" Hostname/IP address of the node running the Sensu API
sensu_api_port 4567 Transmission port for Sensu API communications
sensu_api_ssl "false" Determines whether to use SSL for Sensu API communications
sensu_api_user_name admin Username for authentication with the Sensu API
sensu_api_password secret Password for authentication with the Sensu API
sensu_api_uchiwa_path '' Path to append to the Sensu API URI for Uchiwa communications
sensu_api_timeout 5000 Value to set for the Sensu API timeout
sensu_client_config client.json.j2 Jinja2 template to use for node configuration of the Sensu Client service
sensu_config_path /opt/local/etc/sensu Path to the Sensu configuration directory
sensu_gem_state present State of the Sensu gem - can be set to latest to keep Sensu updated
sensu_plugin_gem_state present State of the Sensu Plugins gem - can be set to latest to keep Sensu Plugins updated
sensu_group_name sensu The name of the Sensu service user's primary group
sensu_include_plugins true Determines whether to include the sensu-plugins gem
sensu_include_dashboard false Determines whether to deploy the Uchiwa dashboard
sensu_master false Determines if a node is to act as the Sensu "master" node
sensu_user_name sensu The name of the Sensu service user

Uchiwa Properties - Uchiwa documentation

Name Default Value Description
uchiwa_dc_name undefined Datacenter name for Uchiwa instance
uchiwa_path /opt/uchiwa Path to the Uchiwa configuration directory
uchiwa_redis_use_ssl false Determines whether to use SSL for Redis communication
uchiwa_user_name admin The user-name to log into Uchiwa
uchiwa_password admin The password to log into Uchiwa
uchiwa_port 3000 The TCP port to bind the Uchiwa web service to
uchiwa_refresh 5 The interval to pull the Sensu APIs in seconds

Note: A few of these defaults will be moving tovarsin the near future due to the addition of other OS support

Example Playbook

  - hosts: all
    roles:
      - role: cmacrae.sensu

Or, passing parameter values:

  - hosts: sensu_masters
    roles:
	  - { role: cmacrae.sensu, sensu_master: true, sensu_include_dashboard: true  }

License

MIT

Author Information

Created by Calum MacRae

Feel free to:
Contact me - @calumacrae, mailto:calum0macrae@gmail.com
Raise an issue
Contribute