See [defaults/main.yml]
+* `netdata_extra_config`: An array of application configurations. Defaults to `[]`
+ * `name`: the name of the specified collector
+ * `specific_task_file`: a task file to be included.
+ * `apt_dependencies`: an array of package dependencies
+ * `pip_dependencies`: an array of pip dependencies to be installed
+ * `extra_groups`: an array of groups to add netdata user to
+ * `read_files`: an array of file path to which netdata user should be granted access
+ * `collector_type`: `python`, `node`, `go` or `charts`
+ * `replace`: when a sensor is changed from one type to another allow ro remove the old configuration
+ * `config`: the content of the configuration file as yaml to be put in `$type.d` config
+ * `health_config`: the templates as in netdata acceptation for this collector, an array of templates configuration
+ * `name`: the template name
+ * `definition`: a list of string defining the template (like 'on: apache.requests')
+* `netdata_alarms_overrides`: an array of override for default netdata templates
+ * `name`: friendly name of the override (filesystem compatible)
+ * `override`: the content of the override
+
Dependencies
------------
--- /dev/null
+- name: Run specific tasks
+ include_tasks: "{{ item.specific_task_file }}"
+ when: item.specific_task_file is defined
+ loop: "{{ netdata_extra_config }}"
+
+- name: Configure plugins apt dependencies
+ apt:
+ name: "{{ netdata_plugins_apt }}"
+ state: present
+ vars:
+ netdata_plugins_apt: "{{ netdata_extra_config | map(attribute='apt_dependencies') |
+ reject('undefined') | list | flatten | unique }}"
+ register: netdata_plugins_apt_deps_st
+ until: netdata_plugins_apt_deps_st is succeeded
+
+- name: Get list of pip dependencies
+ set_fact:
+ netdata_plugins_pip: "{{ netdata_extra_config | map(attribute='pip_dependencies') |
+ reject('undefined') | list | flatten | unique }}"
+
+- name: Install pip for python dependencies
+ apt:
+ name: "{{ python_package }}"
+ state: present
+ when:
+ - netdata_plugins_pip|length > 0
+ - ansible_os_family == 'Debian'
+ vars:
+ python_package: "{{ netdata_pip_package[ansible_distribution ~ ansible_distribution_version] | default('python-pip') }}"
+ register: netdata_pip_install
+ until: netdata_pip_install is succeeded
+
+- name: Configure plugins pip dependencies
+ pip:
+ name: "{{ netdata_plugins_pip }}"
+ state: present
+ when: netdata_plugins_pip|length > 0
+ register: netdata_plugins_pip_deps_st
+ until: netdata_plugins_pip_deps_st is succeeded
+
+- name: Add netdata to extra groups
+ user:
+ name: netdata
+ groups: "{{ netdata_plugins_groups }}"
+ append: yes
+ notify: restart netdata
+ vars:
+ netdata_plugins_groups: "{{ netdata_extra_config | map(attribute='extra_groups') |
+ reject('undefined') | list | flatten | unique }}"
+
+- name: Get list of files to grant read on
+ set_fact:
+ netdata_plugins_files: "{{ netdata_extra_config | map(attribute='read_files') |
+ reject('undefined') | list | flatten | unique }}"
+
+- name: Install acl if files need to be granted access
+ apt:
+ name: acl
+ state: present
+ when: netdata_plugins_files|length > 0
+
+- name: Grant read acces to files
+ acl:
+ path: "{{ item }}"
+ entity: netdata
+ etype: user
+ permissions: r
+ state: present
+ notify: restart netdata
+ loop: "{{ netdata_plugins_files }}"
+
+- name: Configure plugins
+ copy:
+ dest: "{{ netdata_collector_conf_dir }}/{{ collector.name }}.conf"
+ content: "{{ content[collector.format | default('yaml')] }}"
+ mode: 0640
+ owner: netdata
+ when: collector.config is defined
+ notify: restart netdata
+ loop: "{{ netdata_extra_config }}"
+ loop_control:
+ loop_var: collector
+ label: "{{ collector.name }}"
+ vars:
+ netdata_collector_conf_dir: "/etc/netdata/{{ collector.type }}.d"
+ bash_content_tmp: "{{ collector.config.items() | sort | list | map('join','=') | list }}"
+ bash_content: "{{ bash_content_tmp | map('regex_replace','(.*)=(.*)',collector.name ~ '_\\1=\\2') | join('\n') }}"
+ yaml_content: "{{ collector.config | to_nice_yaml }}"
+ json_content: "{{ collector.config | to_nice_json }}"
+ content:
+ bash: "{{ bash_content ~ '\n' }}"
+ json: "{{ json_content }}"
+ yaml: "{{ yaml_content }}"
+ no_log: "{{ collector.no_log | default(false) }}"
+
+- name: Remove old config
+ file:
+ path: "{{ netdata_old_collector_conf_dir }}/{{ collector.name }}.conf"
+ state: absent
+ when: collector.replace is defined
+ notify: restart netdata
+ loop: "{{ netdata_extra_config }}"
+ loop_control:
+ loop_var: collector
+ label: "{{ collector.name }}"
+ vars:
+ netdata_old_collector_conf_dir: "/etc/netdata/{{ collector.replace }}.d"
+
+- name: Configure chart
+ copy:
+ dest: "{{ netdata_collector_chart_dir }}"
+ src: "{{ collector.chart_name }}.chart.sh"
+ mode: 0755
+ owner: netdata
+ when: collector.chart_name is defined
+ notify: restart netdata
+ loop: "{{ netdata_extra_config }}"
+ loop_control:
+ loop_var: collector
+ label: "{{ collector.name }}"
+ vars:
+ netdata_collector_chart_dir: "/usr/libexec/netdata/charts.d/"
+
+- name: Configure plugins health
+ template:
+ dest: "{{ netdata_health_conf_dir }}/{{ collector.name }}.conf"
+ src: health_template.j2
+ mode: 0640
+ owner: netdata
+ when: collector.health_config is defined
+ notify: restart netdata # a reload would be enough
+ loop: "{{ netdata_extra_config }}"
+ loop_control:
+ loop_var: collector
+ label: "{{ collector.name }}"
+
+- name: Configure overrides
+ copy:
+ dest: "{{ netdata_health_conf_dir }}/{{ override.name }}.conf"
+ content: |
+ # {{ override.name }}
+ {{ override.override }}
+ mode: 0640
+ owner: netdata
+ notify: reload netdata
+ loop: "{{ netdata_alarms_overrides }}"
+ loop_control:
+ loop_var: override
+ label: "{{ override.name }}"
+
+- name: Configure alarm
+ template:
+ dest: "{{ netdata_health_conf_dir }}/{{ collector.name }}.conf"
+ src: "netdata_alarm.conf.j2"
+ mode: 0755
+ owner: netdata
+ when: collector.alarm_config is defined
+ notify: restart netdata
+ loop: "{{ netdata_extra_config }}"
+ loop_control:
+ loop_var: collector
+ label: "{{ collector.name }}"