Added Windows as OS

This commit is contained in:
Werner Dijkerman
2018-11-25 11:58:28 +01:00
parent 8df7435e51
commit 052142e642
8 changed files with 135 additions and 18 deletions

View File

@ -14,8 +14,20 @@ Design goals are to have a minimal memory footprint with a plugin system so that
## Requirements ## Requirements
### Operating systems
This role will work on the following operating systems:
No requirements. (Yes, an Influxdb server somewhere on the network will help though ;-) ) * Red Hat
* Debian
* Ubuntu
* Windows (Best effort)
So, you'll need one of those operating systems.. :-)
Please sent Pull Requests or suggestions when you want to use this role for other Operating systems.
### InfluxDB
You'll need an InfluxDB instance running somewhere on your network.
## Upgrade ## Upgrade
### 0.7.0 ### 0.7.0
@ -26,6 +38,8 @@ There was an issue:
## Role Variables ## Role Variables
### Overall variables
The following parameters can be set for the Telegraf agent: The following parameters can be set for the Telegraf agent:
* `telegraf_agent_version`: The version of Telegraf to install. Default: `1.9.0` * `telegraf_agent_version`: The version of Telegraf to install. Default: `1.9.0`
@ -70,6 +84,18 @@ The config will be printed line by line into the configuration, so you could als
and it will be printed in the configuration file. and it will be printed in the configuration file.
## Windows specific Variables
**NOTE**
_Supporting Windows is an best effort (I don't have the possibility to either test/verify changes on the various amount of available Windows instances). PR's specific to Windows will almost immediately be merged, unless some one is able to provide a Windows test mechanism via Travis for Pull Requests._
* `telegraf_win_install_dir`: The directory where Telegraf will be installed.
* `telegraf_win_logfile`: The location to the logfile of Telegraf.
* `telegraf_win_include`: The directory that will contain all plugin configuration.
## Extra information
There are two properties which are similar, but are used differently. Those are: There are two properties which are similar, but are used differently. Those are:
* `telegraf_plugins_default` * `telegraf_plugins_default`

View File

@ -54,3 +54,11 @@ telegraf_plugins_extra_exclusive: False
# RedHat specific settings for convenience # RedHat specific settings for convenience
telegraf_redhat_releasever: "$releasever" telegraf_redhat_releasever: "$releasever"
telegraf_win_install_dir: 'C:\Telegraf'
telegraf_win_logfile: 'C:\\Telegraf\\telegraf.log'
telegraf_win_include: 'C:\Telegraf\telegraf_agent.d\'
telegraf_win_service_args:
- -service install
- -config {{ telegraf_win_install_dir }}\telegraf\telegraf.conf
- --config-directory {{ telegraf_win_include }}

View File

@ -7,3 +7,9 @@
state: restarted state: restarted
enabled: yes enabled: yes
become: yes become: yes
- name: "Restart Windows Telegraf"
win_service:
name: Telegraf
start_mode: auto
state: restarted

View File

@ -64,20 +64,6 @@ provisioner:
- name_override = "percpu_usage" - name_override = "percpu_usage"
- fielddrop = ["cpu_time*"] - fielddrop = ["cpu_time*"]
telegraf_plugins_default:
- plugin: cpu
config:
- percpu = true
- plugin: disk
- plugin: io
- plugin: mem
- plugin: net
- plugin: system
- plugin: swap
- plugin: netstat
- plugin: processes
- plugin: kernel
scenario: scenario:
name: default name: default
verifier: verifier:

View File

@ -0,0 +1,78 @@
---
- name: "Windows | Create directory structure"
win_file:
path: "{{ item }}"
state: directory
with_items:
- "{{ telegraf_win_install_dir }}"
- "{{ telegraf_win_include }}"
- name: "Windows | Check if file is already downloaded"
win_stat:
path: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}_windows_amd64.zip'
register: file_info
- name: "Windows | Download Telegraf Agent Zip file"
win_get_url:
url: https://dl.influxdata.com/telegraf/releases/telegraf-{{ telegraf_agent_version }}_windows_amd64.zip
dest: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}_windows_amd64.zip'
when:
- not file_info.stat.exists
- name: "Windows | Unzip file"
win_unzip:
src: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}_windows_amd64.zip'
dest: "{{ telegraf_win_install_dir }}"
creates: '{{ telegraf_win_install_dir }}\telegraf\telegraf.exe'
- name: "Windows | Configure Telegraf"
win_template:
src: telegraf.conf.j2
dest: '{{ telegraf_win_install_dir }}\telegraf\telegraf.conf'
notify: "Restart Windows Telegraf"
- name: "Windows | Copy telegraf extra plugins"
win_template:
src: "telegraf-extra-plugin.conf.j2"
dest: "/etc/telegraf/telegraf.d/{{ item.key }}.conf"
with_dict: "{{ telegraf_plugins_extra }}"
loop_control:
label: "{{ item.key }}"
when:
- telegraf_plugins_extra is defined
- telegraf_plugins_extra is iterable
- item.value.state|default('present') != 'absent'
notify: "Restart Windows Telegraf"
- name: "Windows | Remove telegraf extra plugins"
win_file:
path: "/etc/telegraf/telegraf.d/{{ item.key }}.conf"
state: absent
with_dict: "{{ telegraf_plugins_extra }}"
loop_control:
label: "{{ item.key }}"
when:
- telegraf_plugins_extra is defined
- telegraf_plugins_extra is iterable
- item.value.state|default('present') == 'absent'
notify: "Restart Windows Telegraf"
- name: "Windows | Register Service"
win_command: '{{ telegraf_win_install_dir }}\telegraf\telegraf.exe {{ telegraf_win_service_args | join(" ") }}'
register: telegraf_windows_install
args:
creates: '{{ telegraf_win_install_dir }}\.installed'
- name: "Windows | Create done file so it won't register itself again"
win_file:
path: '{{ telegraf_win_install_dir }}\.installed'
state: touch
when:
- telegraf_windows_install is changed
- name: "Windows | Set service startup mode to auto and ensure it is started"
win_service:
name: Telegraf
start_mode: auto
state: started

View File

@ -3,14 +3,23 @@
- name: "Install the correct repository" - name: "Install the correct repository"
include_tasks: "RedHat.yml" include_tasks: "RedHat.yml"
when: ansible_os_family == "RedHat" when:
- ansible_os_family == "RedHat"
- name: "Install the correct repository" - name: "Install the correct repository"
include_tasks: "Debian.yml" include_tasks: "Debian.yml"
when: ansible_os_family == "Debian" when:
- ansible_os_family == "Debian"
tags: tags:
- telegraf - telegraf
- packages - packages
- name: "Configure telegraf" - name: "Configure telegraf"
include_tasks: "configure.yml" include_tasks: "configure_linux.yml"
when:
- ansible_os_family != "Windows"
- name: "Install / Configure telegraf on Windows"
include_tasks: "configure_windows.yml"
when:
- ansible_os_family == "Windows"

View File

@ -28,7 +28,11 @@
quiet = {{ telegraf_agent_quiet | lower }} quiet = {{ telegraf_agent_quiet | lower }}
{% endif %} {% endif %}
{% if telegraf_agent_version is version_compare('1.1', '>=') %} {% if telegraf_agent_version is version_compare('1.1', '>=') %}
{% if ansible_os_family == "Windows" %}
logfile = "{{ telegraf_win_logfile }}"
{% else %}
logfile = "{{ telegraf_agent_logfile }}" logfile = "{{ telegraf_agent_logfile }}"
{% endif %}
omit_hostname = {{ telegraf_agent_omit_hostname | lower }} omit_hostname = {{ telegraf_agent_omit_hostname | lower }}
{% endif %} {% endif %}