229739377d
The KVM virsh plugin already existed however the setup was not using the new playbook plugin system. This change moves the kvm vish plugin into that system and updates the plugin to use the influxdb line format instead of the json format which was recently deprecated. Change-Id: Ib23a0a231044389aab5669dc0c467175cd220423 Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
105 lines
3.3 KiB
YAML
105 lines
3.3 KiB
YAML
---
|
|
# 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: Store my_cnf
|
|
slurp:
|
|
src: "/root/.my.cnf"
|
|
register: _my_cnf
|
|
changed_when: false
|
|
- name: Copy my.cnf file into telegraf home
|
|
copy:
|
|
content: "{{ _my_cnf.content | b64decode }}"
|
|
dest: "/root/.my.cnf"
|
|
mode: "0440"
|
|
owner: "telegraf"
|
|
group: "telegraf"
|
|
- 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'] | length) > 0 }}"
|
|
vm_quota:
|
|
plugin_name: "vm_quota.py"
|
|
command:
|
|
- "python /opt/telegraf/vm_quota.py"
|
|
group: "{{ groups['utility_all'][0] }}"
|
|
when_group: "{{ (groups['nova_compute'] | length) > 0 }}"
|
|
kvm:
|
|
plugin_name: "kvm_virsh.py"
|
|
command:
|
|
- "python /opt/telegraf/kvm_virsh.py"
|
|
group: "{{ groups['nova_compute'] }}"
|
|
when_group: "{{ (groups['nova_compute'] | length) > 0 and (nova_virt_type | default('qemu') in ['kvm', 'qemu']) }}"
|
|
|
|
|
|
influx_telegraf_targets:
|
|
- "{{ influxdb_host|default(internal_lb_vip_address) }}:{{ influxdb_port }}"
|