--- # - name: register simple targets # loop: "{{ prometheus_server_jobs | select('in', prometheus_exporters_default+prometheus_exporters_extra) }}" # delegate_to: "{{ prometheus_server }}" # template: # src: "{{ lookup('first_found', {'paths': ['templates'], 'files': [item + '.yml.j2', 'generic.yml.j2']}) }}" # dest: "/etc/prometheus/targets/{{ item }}/{{ inventory_hostname }}.yml" # notify: reload prometheus # result = [] # for job in jobs: # multitarget_config_varname = 'prometheus_job_multitarget_' + job.replace('-', '_').replace('/', '__') # if multitarget_config_varname in vars: # for exporter_hostname, configs in vars[multitarget_config_varname].items(): # for config in configs: # result.append({'job': job, 'instance': config['instance'], 'enabled': True, # 'exporter_hostname': exporter_hostname, 'config': config}) # # else: # enabled = job in vars['prometheus_exporters_default'] or job in vars['prometheus_exporters_extra'] # result.append({'job': job, 'instance': vars['inventory_hostname'], 'enabled': enabled}) # return result # - loop: "{{ prometheus_server_jobs | replace('-', '_') | replace('/', '__') }}" # when: "('prometheus_job_multitarget_' + item) in vars" # vars: # blub: "{{ vars[item] }}" # debug: # var: blub # set_fact: # "prometheus_job_multitarget_{{ item }}": "{{ vars[item] }}" # prometheus_job_multitarget_blackbox__probe: "{{ prometheus_job_multitarget_blackbox__probe }}" # prometheus_job_multitarget_ssl__probe: "{{ prometheus_job_multitarget_ssl__probe }}" - name: enable/disable job targets vars: job_targets: "{{ vars | prometheus_job_targets(prometheus_server_jobs) }}" block: - name: install files for enabled targets loop: "{{ job_targets | selectattr('enabled') }}" loop_control: loop_var: target label: "{{ target.job }} -> {{ target.instance }}" delegate_to: "{{ prometheus_server }}" template: src: "{{ lookup('first_found', {'paths': ['templates'], 'files': [target.job + '.yml.j2', 'generic.yml.j2']}) }}" dest: "/etc/prometheus/targets/{{ target.job }}/{{ target.instance }}.yml" notify: reload prometheus - name: remove files for disabled targets loop: "{{ job_targets | rejectattr('enabled') }}" loop_control: loop_var: target label: "{{ target.job }} -> {{ target.instance }}" delegate_to: "{{ prometheus_server }}" file: path: "/etc/prometheus/targets/{{ target.job }}/{{ target.instance }}.yml" state: absent notify: reload prometheus