- Overview
- Requirements
- Role Variables
- Dependencies
- Examples
- Development / Contributing
- License
- Author Information
Collectd Installation and Configuration
This role requires Ansible 2.3 or higher and platform requirements are listed in the metadata file.
Variables listed in main/defaults.yml with no value are considered to have a value of 'none'. If these variables are left unset, they are assigned a value from the collectd_variables_overrides task using the set_fact Ansible module. The values are obtained from the collectd role variables in /vars/* based on the OS family.
The variables that can be passed to this role and a brief description about them are as follows. (For all variables, take a look at defaults/main.yml)
Name | Default | Type | Description |
---|---|---|---|
collectd_service_name | collectd | String | Name of the collectd service |
collectd_packages | See role variables (/vars) | Array | List of packages |
collectd_version | See role variables (/vars) | String | Version of the collectd package(s) to install |
collectd_yum_repo_baseurl | See role variables (/vars) | String | YUM repository base url |
collectd_yum_repo_rpm_key | See role variables (/vars) | String | YUM repository RPM Key |
collectd_yum_repo_enabled | See role variables (/vars) | Boolean | Enable YUM repository |
collectd_config_file | See role variables (/vars) | String | Configuration file location |
collectd_config_owner | root | String | Configuration file(s) owner |
collectd_config_group | See role variables (/vars) | String | configuration file(s) group |
collectd_config_mode | 0640 | Int | Configuration file(s) mode |
collectd_plugin_conf_dir | See role variables (/vars) | String | Plugins directory |
collectd_plugin_conf_dir_mode | 0750 | Int | Plugins directory mode |
collectd_plugin_conf_order | 10 | Int | Plugin file prefix, to set load order when available |
collectd_conf_autoloadplugin | false | Boolean | Set the AutoLoadPlugin value in the collectd configuration |
collectd_config_typesdb | None | Array | Set the TypesDB value(s) in the collectd configuration |
collectd_config_typesdb_defaults | See role variables (/vars) | Array | Set the default TypesDB value(s) merged with the values from collectd_config_typesdb |
collectd_config_write_queue_limit_high | See role variables (/vars) | String | Enable/Set the WriteQueueLimitHigh value in the collectd configuration |
collectd_config_write_queue_limit_low | See role variables (/vars) | String | Enable/Set the WriteQueueLimitLow value in the collectd configuration |
collectd_config_interval | 60 | Int | Set the Interval value in the collectd configuration |
collectd_config_timeout | 2 | Int | Set the Timeout value in the collectd configuration |
collectd_config_read_threads | 5 | Int | Set the ReadThreads value in the collectd configuration |
collectd_config_write_threads | 5 | Int | Set the WriteThreads value in the collectd configuration |
collectd_plugins | See Collectd Plugins below | Array of Dictionaries | Manage/Configure plugins and values |
collectd_disabled_plugins | [] | Array | List of plugins and should be disabled and configuration file(s) removed |
This role provides several methods for managing/configuring Collectd plugins.
You can override the collectd_plugins variable as a single configuration within your projects host/group variables when calling this role from within your projects playbook
## Playbook reference
roles:
- {role: ansible-role-collectd}
## Host/Group variable reference
collectd_plugins:
- name: logfile
order: '00'
options:
LogLevel: "info"
File: "/var/log/collectd.log"
Timestamp: true
PrintSeverity: false
You can also override the collectd_plugins variable by nesting multiple variables per plugin.
See the example below where the collectd_plugin_logfile plugin is nested within the collectd_plugins variable. Allowing you to override just the collectd_plugin_logfile as needed based on host/group without the need to manage the entire collectd_plugins variable block
collectd_plugin_logfile:
- name: logfile
order: '00'
options:
LogLevel: "info"
File: "/var/log/collectd.log"
Timestamp: true
PrintSeverity: false
collectd_plugins:
"{{ collectd_plugin_logfile }}"
You can also use the Ansible include_role module with the task_from attribute to call the plugins_class task file to manage any plugins.
This method can be used when you have included this role from within another role such as a "base" role to install/manage the collectd service and any default plugins you wish such as CPU/Memory. But have an additional role as one for your web servers that you want to manage the Apache plugin for.
tasks:
- name: Install Collectd Disk Plugin
include_role:
name: ansible-role-collectd
tasks_from: plugins_class.yml
vars:
- name: apache
options:
Instance: apache80
URL: http://localhost/mod_status?auto
User: collectd
Password: hoh2Coo6
None
See the Molecule testing Playbook for an example
See Contributing.
This role has been tested against the following distributions and Ansible version:
Distribution | Ansible 2.3 | Ansible 2.4 | Ansible 2.5 | Ansible 2.6 | Notes |
---|---|---|---|---|---|
Centos 6 | Yes | Yes | Yes | Yes | |
Centos 7 | Yes | Yes | Yes | No | Requires two runs to enable service with Ansible 2.6 |
FreeBSD 11.2 | Yes | Yes | Yes | Yes | |
OpenBSD 6.3 | Yes | Yes | Yes | Yes |
Licensed under the MIT License. See the LICENSE file for details.
- Steven Bambling