aboutsummaryrefslogblamecommitdiffhomepage
path: root/tasks/config.yml
blob: e12bc5b8c7a0985ef9699d46f1c68b22b615b4c4 (plain) (tree)




























































                                                                                                                            
                                  





















                                                                      
                                                                                         




















                                                                                                                      
                                                                                                













                                              
                                                                                     







































                                                                   
- 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 access 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: "{{ netdata_prefix }}/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: "{{ netdata_prefix }}/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: "{{ netdata_prefix }}/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 }}"