openstack-ansible-ops/cluster_metrics/playbook-influx-telegraf.yml
Kevin Carter 76ad4f52da Add ironic to the metric collection plugins
Change-Id: Ia2e9f19b284ba48beeee8a5d0c4b2a0bd34dd798
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2016-12-15 14:48:11 +00:00

101 lines
3.2 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: Add to command plugins
set_fact:
commands: "{{ commands | union(item.value.command) }}"
with_dict: "{{ command_plugins }}"
when:
- item.value.when_group | bool
- item.value.group == inventory_hostname or
inventory_hostname in item.value.group | default([])
tags:
- always
- 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 }}"
influx_telegraf_targets:
- "{{ influxdb_host|default(internal_lb_vip_address) }}:{{ influxdb_port }}"