--- # Copyright 2016, Rackspace US, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - name: Deploy telegraf hosts: "all" gather_facts: true user: root tasks: - name: Add influxdata apt-keys apt_key: url: "https://repos.influxdata.com/influxdb.key" state: "present" - name: Add influxdata repo apt_repository: repo: "deb https://repos.influxdata.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} stable" state: "present" update_cache: yes - name: Install telegraf apt: pkg: "telegraf" state: "latest" - name: Create telegraf plugin dir file: path: "/opt/telegraf" state: directory mode: "0755" - name: Drop telegraf plugin file(s) template: src: "templates/telegraf-plugins/{{ item.value.plugin_name }}" dest: "/opt/telegraf/{{ item.value.plugin_name }}" mode: '0755' with_dict: "{{ command_plugins }}" when: - item.value.when_group | bool - item.value.group == inventory_hostname or inventory_hostname in item.value.group | default([]) - name: Drop telegraf config file template: src: templates/telegraf.conf.j2 dest: /etc/telegraf/telegraf.conf register: telegraf_config - name: Enable and restart telegraf service: name: "telegraf" enabled: true state: restarted when: telegraf_config | changed - name: Enable and start telegraf service: name: "telegraf" enabled: true state: started when: not telegraf_config | changed vars_files: - vars.yml vars: commands : [] command_plugins: ironic: plugin_name: "ironic_nodes.py" command: - "python /opt/telegraf/ironic_nodes.py" group: "{{ groups['utility_all'][0] }}" when_group: "{{ (groups['ironic_api'] | default([]) | length) > 0 }}" kvm: plugin_name: "kvm_virsh.py" command: - "python /opt/telegraf/kvm_virsh.py" group: "{{ groups['nova_compute'] }}" when_group: "{{ (groups['nova_compute'] | default([]) | length) > 0 and (nova_virt_type | default('qemu') in ['kvm', 'qemu']) }}" cinder_pools_usage: plugin_name: "cinder_pools_usage.py" command: - "python /opt/telegraf/cinder_pools_usage.py" group: "{{ groups['utility_all'][0] }}" when_group: "{{ (groups['cinder_volumes'] | default([]) | length) > 0 }}" influx_telegraf_targets: - "{{ influxdb_protocol|default('http') }}://{{ influxdb_host|default(internal_lb_vip_address) }}:{{ influxdb_port }}"