Manage Netdata configuration

This commit is contained in:
Jeremy Gardais 2018-07-26 17:46:10 +02:00
parent e511b71706
commit 9fc3a461ce
Signed by: jegardai
GPG Key ID: E759BAA22501AF32
5 changed files with 94 additions and 1 deletions

View File

@ -4,3 +4,4 @@
### Features ### Features
* Install Netdata. * Install Netdata.
* Can choose to install recommends packages. * Can choose to install recommends packages.
* Manage Netdata configuration (/etc).

View File

@ -17,22 +17,49 @@ A role to manage Netdata installation and configuration.
* **netdata__base_packages**: List of base packages in order to provide Netdata [default: `netdata`]. * **netdata__base_packages**: List of base packages in order to provide Netdata [default: `netdata`].
* **netdata__install_recommends**: If recommends packages should be install [default: `True`]. * **netdata__install_recommends**: If recommends packages should be install [default: `True`].
* **netdata__deploy_state**: The desired state this role should achieve. [default: `present`]. * **netdata__deploy_state**: The desired state this role should achieve. [default: `present`].
* **netdata__etc_src**: Directory used as source to templating /etc/netdata configuration content [default: `../templates/etc/netdata`].
## Example Playbook ## Example Playbook
* Use defaults vars: * Use defaults vars:
``` yaml ``` yaml
- hosts: mynode.domain - hosts: mynode.DOMAIN
roles: roles:
- role: ipr-cnrs.netdata - role: ipr-cnrs.netdata
tags: ['role::netdata', 'ipr'] tags: ['role::netdata', 'ipr']
``` ```
* Use your own Netdata's configuration as source:
``` yml
- hosts: mynode.DOMAIN
roles:
- role: ipr-cnrs.netdata
netdata__etc_src: '{{ inventory_dir + "/../resources/host/mynode.DOMAIN/etc/netdata/" }}'
```
* Ensure your directory contains only templates or sub-directories, such as:
``` sh
mynode.DOMAIN
└── etc
└── netdata
├── fping.conf.j2
├── health_alarm_notify.conf.j2
├── netdata.conf.j2
└── node.d
├── named.conf.md.j2
├── README.md.j2
├── sma_webbox.conf.md.j2
└── snmp.conf.md.j2
```
## Configuration ## Configuration
This role will: This role will:
* Install needed packages to provide `netdata` service. * Install needed packages to provide `netdata` service.
* Manage Netdata configuration (/etc/netdata).
## Development ## Development

View File

@ -37,3 +37,18 @@ netdata__install_recommends: True
netdata__deploy_state: 'present' netdata__deploy_state: 'present'
# ]]] # ]]]
# ]]] # ]]]
# Configuration [[[
# -----------------------------
# .. envvar:: netdata__etc_src [[[.
# Directory with templates used to provide Netdata configuration (usually in
# '/etc/netdata').
#
# Must be a relative path to default directory of this role
# or to your ansible inventory directory.
#
netdata__etc_src: '../templates/etc/netdata'
# ]]]
# ]]]

View File

@ -13,3 +13,32 @@
- '{{ netdata__base_packages }}' - '{{ netdata__base_packages }}'
# Server Manage /etc configuration files [[[1
- name: Ensure Netdata directory structure exists
file:
path: '/etc/netdata/{{ item.path }}'
state: directory
owner: 'root'
group: 'netdata'
mode: '0755'
with_filetree: '{{ netdata__etc_src }}'
when: item.state == 'directory'
- name: Generate Netdata configuration files
template:
src: '{{ item.src }}'
dest: "/etc/netdata/{{ item.path | replace('.j2','') }}"
owner: 'root'
group: 'netdata'
mode: '{{ item.mode }}'
with_filetree: '{{ netdata__etc_src }}'
when: item.state == 'file'
- name: Generate Netdata configuration symlinks
template:
src: '{{ item.src }}'
dest: "/etc/netdata/{{ item.path | replace('.j2','') }}"
state: 'link'
force: true
with_filetree: '{{ netdata__etc_src }}'
when: item.state == 'link'

View File

@ -0,0 +1,21 @@
## {{ ansible_managed }}
# NetData Configuration
# The current full configuration can be retrieved from the running
# server at the URL
#
# http://localhost:19999/netdata.conf
#
# for example:
#
# wget -O /etc/netdata/netdata.conf http://localhost:19999/netdata.conf
#
[global]
run as user = netdata
web files owner = root
web files group = root
# Netdata is not designed to be exposed to potentially hostile
# networks.See https://github.com/firehol/netdata/issues/164
bind socket to IP = 127.0.0.1