7 Commits
0.4.0 ... 0.5.0

23 changed files with 198 additions and 229 deletions

9
.gitignore vendored
View File

@ -1,4 +1,7 @@
.kitchen/ .idea
.kitchen.local.yml .molecule
.idea/ tests/.cache
.cache
__pycache__
*.retry
pmip pmip

View File

@ -1,22 +0,0 @@
---
driver:
name: docker
provision_command: sed -i '/tsflags=nodocs/d' /etc/yum.conf
provisioner:
name: ansible_playbook
ansible_yum_repo: "http://mirror.logol.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm"
hosts: localhost
require_chef_for_busser: false
require_ruby_for_busser: true
platforms:
- name: centos-6.7
verifier:
ruby_bindir: '/usr/bin'
suites:
- name: default
run_list:
attributes:

View File

@ -1,15 +1,17 @@
--- ---
sudo: required
language: python language: python
python: "2.7" services:
- docker
before_install: before_install:
- sudo apt-get update -qq - sudo apt-get -qq update
- sudo apt-get install -qq python-apt python-pycurl - sudo apt-get install -o Dpkg::Options::="--force-confold" --force-yes -y docker-engine
install: install:
- pip install ansible==1.9.4 - pip install molecule
- echo -e 'localhost ansible_connection=local' > test/inventory
- echo -e '[defaults]\nroles_path = ../\nhostfile = ./test/inventory' > ansible.cfg
script: script:
- ansible-playbook test/integration/default.yml --syntax-check - molecule test
- ansible-playbook test/integration/default.yml --connection=local --sudo
notifications: notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/ webhooks: https://galaxy.ansible.com/api/v1/notifications/

View File

@ -5,6 +5,13 @@ Below an overview of all changes in the releases.
Version (Release date) Version (Release date)
0.5.0 (2016-07-17)
* Removed Test Kitchen tests
* Added Molecule tests and travis make use of them
* Updated default version to 1.0.0 beta2
* Feature/add extra plugins to telegrafd folder #5 (By pull request: stvnwrgs (Thanks!))
0.4.0 (2016-02-05) 0.4.0 (2016-02-05)
* Fixed test for test-kitchen * Fixed test for test-kitchen

View File

@ -1,5 +0,0 @@
source "https://rubygems.org"
gem "test-kitchen"
gem "kitchen-docker"
gem "kitchen-ansible"

View File

@ -1,41 +0,0 @@
GEM
remote: https://rubygems.org/
specs:
faraday (0.9.2)
multipart-post (>= 1.2, < 3)
highline (1.7.8)
kitchen-ansible (0.0.30)
librarian-ansible
test-kitchen
kitchen-docker (2.3.0)
test-kitchen (>= 1.0.0)
librarian (0.1.2)
highline
thor (~> 0.15)
librarian-ansible (1.0.6)
faraday
librarian (~> 0.1.0)
mixlib-shellout (2.2.3)
multipart-post (2.0.0)
net-scp (1.2.1)
net-ssh (>= 2.6.5)
net-ssh (2.9.2)
safe_yaml (1.0.4)
test-kitchen (1.4.2)
mixlib-shellout (>= 1.2, < 3.0)
net-scp (~> 1.1)
net-ssh (~> 2.7, < 2.10)
safe_yaml (~> 1.0)
thor (~> 0.18)
thor (0.19.1)
PLATFORMS
ruby
DEPENDENCIES
kitchen-ansible
kitchen-docker
test-kitchen
BUNDLED WITH
1.10.6

View File

@ -23,7 +23,9 @@ Role 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: `0.10.0` * `telegraf_agent_version`: The version of Telegraf to install. Default: `1.0.0`
* `telegraf_agent_rpm_url`: The full path to the RPM file located on a webserver.
* `telegraf_agent_deb_url`: The full path to the DEB file located on a webserver.
* `telegraf_agent_interval`: The interval configured for sending data to the server. Default: `10` * `telegraf_agent_interval`: The interval configured for sending data to the server. Default: `10`
* `telegraf_agent_debug`: Setting the Telegraf in debug mode. Default: `False` * `telegraf_agent_debug`: Setting the Telegraf in debug mode. Default: `False`
* `telegraf_agent_round_interval`: Rounds collection interval to 'interval' Default: True * `telegraf_agent_round_interval`: Rounds collection interval to 'interval' Default: True
@ -114,12 +116,11 @@ Example Playbook
The following have contributed to this Ansible role: The following have contributed to this Ansible role:
* aferrari-technisys * aferrari-technisys
* stvnwrgs
# Molecule
Test Kitchen This roles is configured to be tested with Molecule. You can find on this page some more information regarding Molecule: https://werner-dijkerman.nl/2016/07/10/testing-ansible-roles-with-molecule-testinfra-and-docker/
------------
This roles is configured to be tested with Test Kitchen. You can find on this page some more information regarding Test Kitchen: http://werner-dijkerman.nl/2015/08/20/using-test-kitchen-with-docker-and-serverspec-to-test-ansible-roles/
License License
------- -------

View File

@ -1,13 +1,19 @@
--- ---
# defaults file for ansible-telegraf # defaults file for ansible-telegraf
telegraf_agent_version: 0.10.1 #telegraf_agent_version: 0.10.1
telegraf_agent_version: 1.0.0
telegraf_agent_version_sub_l: _beta2
telegraf_agent_version_sub_u: -beta2
telegraf_agent_interval: 10 telegraf_agent_interval: 10
telegraf_agent_debug: False telegraf_agent_debug: False
telegraf_agent_round_interval: True telegraf_agent_round_interval: True
telegraf_agent_flush_interval: 10 telegraf_agent_flush_interval: 10
telegraf_agent_flush_jitter: 0 telegraf_agent_flush_jitter: 0
telegraf_agent_rpm_url: https://dl.influxdata.com/telegraf/releases/telegraf-{{ telegraf_agent_version }}{{ telegraf_agent_version_sub_l }}.x86_64.rpm
telegraf_agent_deb_url: https://dl.influxdata.com/telegraf/releases/telegraf_{{ telegraf_agent_version }}{{ telegraf_agent_version_sub_u }}_amd64.deb
telegraf_agent_tags: telegraf_agent_tags:
telegraf_agent_output: telegraf_agent_output:

18
molecule.yml Normal file
View File

@ -0,0 +1,18 @@
---
ansible:
playbook: playbook.yml
docker:
containers:
- name: telegraf-centos
ansible_groups:
- group1
image: milcom/centos7-systemd
image_version: latest
privileged: True
- name: telegraf-debian
ansible_groups:
- group2
image: maint/debian-systemd
image_version: latest
privileged: True

15
playbook.yml Normal file
View File

@ -0,0 +1,15 @@
---
- hosts: all
pre_tasks:
- name: "Installing which on CentOS"
action: yum
name=which
state=installed
when: ansible_distribution == 'CentOS'
- name: "Installing wget on Debian"
action: apt
name=wget
state=installed
when: ansible_distribution == 'Debian'
roles:
- role: ansible-telegraf

View File

@ -2,7 +2,7 @@
- name: "Fetch telegraf installation package | Debian" - name: "Fetch telegraf installation package | Debian"
action: get_url action: get_url
url=http://get.influxdb.org/telegraf/telegraf_{{ telegraf_agent_version }}-1_amd64.deb url={{ telegraf_agent_deb_url }}
dest=/tmp/telegraf_{{ telegraf_agent_version }}-1_amd64.deb dest=/tmp/telegraf_{{ telegraf_agent_version }}-1_amd64.deb
mode=0440 mode=0440

View File

@ -1,14 +1,38 @@
--- ---
- name: "Enable EPEL"
action: yum
name=epel-release
state=installed
- name: "Installing some dependencies"
action: yum
name={{ item }}
state=installed
with_items:
- python-pip
- python-devel
- gcc
- libffi-devel
- openssl-devel
- name: "Installing PIP dependensies"
action: pip
name={{ item }}
state=present
with_items:
- urllib3
- pyopenssl
- ndg-httpsclient
- name: "Fetch telegraf installation package | RedHat" - name: "Fetch telegraf installation package | RedHat"
action: get_url action: get_url
url=http://get.influxdb.org/telegraf/telegraf-{{ telegraf_agent_version }}-1.x86_64.rpm url="{{ telegraf_agent_rpm_url }}"
dest=/tmp/telegraf_{{ telegraf_agent_version }}-1.x86_64.rpm dest=/tmp/telegraf_{{ telegraf_agent_version }}.x86_64.rpm
mode=0440 mode=0440
- name: "Install telegraf package | RedHat" - name: "Install telegraf package | RedHat"
action: yum action: yum
name=/tmp/telegraf_{{ telegraf_agent_version }}-1.x86_64.rpm name=/tmp/telegraf_{{ telegraf_agent_version }}.x86_64.rpm
state=installed state=installed
notify: "Restart Telegraf" notify: "Restart Telegraf"
sudo: yes

View File

@ -10,27 +10,39 @@
when: ansible_os_family == "Debian" when: ansible_os_family == "Debian"
- name: "Set fact by remove the dots from version" - name: "Set fact by remove the dots from version"
action: set_fact set_fact:
telegraf_ver="{{ telegraf_agent_version.replace('.','') }}" telegraf_ver: "{{ telegraf_agent_version.replace('.','') }}"
- name: "Copy the template for versions < 0.10.0" - name: "Copy the template for versions < 0.10.0"
action: template template:
src=etc-opt-telegraf-telegraf.conf.j2 src: etc-opt-telegraf-telegraf.conf.j2
dest=/etc/opt/telegraf/telegraf.conf dest: /etc/opt/telegraf/telegraf.conf
owner=root owner: root
group=root group: root
mode=644 mode: 0644
when: telegraf_ver < 100 when: telegraf_ver < 100
sudo: yes sudo: yes
notify: "Restart Telegraf" notify: "Restart Telegraf"
- name: "Copy the template for versions >= 0.10.0" - name: "Copy the template for versions >= 0.10.0"
action: template template:
src=telegraf.conf.j2 src: telegraf.conf.j2
dest=/etc/telegraf/telegraf.conf dest: /etc/telegraf/telegraf.conf
owner=root owner: root
group=root group: root
mode=644 mode: 0644
when: telegraf_ver >= 100 when: telegraf_ver >= 100
sudo: yes sudo: yes
notify: "Restart Telegraf" notify: "Restart Telegraf"
- name: "Copy telegraf extra plugins"
template:
src: "telegraf-extra-plugin.conf.j2"
dest: "/etc/telegraf/telegraf.d/{{ item.plugin }}.conf"
owner: root
group: root
mode: 644
with_items: "{{ telegraf_plugins_extra }}"
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable"
sudo: yes
notify: "Restart Telegraf"

View File

@ -68,50 +68,5 @@
{% endif %} {% endif %}
{% endfor %}
{% endif %}
{% if telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable %}
{% for item in telegraf_plugins_extra %}
[{{ item.plugin }}]
{% if item.interval is defined %}
interval = "{{ item.interval }}s"
{% endif %}
{% if item.config is defined and item.config is iterable %}
{% for items in item.config %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[{{ item.plugin }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[{{ item.plugin }}.tagdrop]
{% for items in item.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.pass is defined and item.pass is iterable %}
[{{ item.plugin }}.pass]
{% for items in item.pass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.drop is defined and item.drop is iterable %}
[{{ item.plugin }}.drop]
{% for items in item.drop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.specifications is defined and item.specifications is iterable %}
[[{{item.plugin}}.specifications]]
{% for items in item.specifications %}
{{ items }}
{% endfor %}
{% endif %}
{% endfor %} {% endfor %}
{% endif %} {% endif %}

View File

@ -0,0 +1,44 @@
{% if telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable %}
{% for item in telegraf_plugins_extra %}
[[inputs.{{ item.plugin }}]]
{% if item.interval is defined %}
interval = "{{ item.interval }}s"
{% endif %}
{% if item.config is defined and item.config is iterable %}
{% for items in item.config %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[{{ item.plugin }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[{{ item.plugin }}.tagdrop]
{% for items in item.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.pass is defined and item.pass is iterable %}
[{{ item.plugin }}.pass]
{% for items in item.pass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.drop is defined and item.drop is iterable %}
[{{ item.plugin }}.drop]
{% for items in item.drop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.specifications is defined and item.specifications is iterable %}
[[{{item.plugin}}.specifications]]
{% for items in item.specifications %}
{{ items }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}

View File

@ -75,49 +75,4 @@
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% endif %}
{% if telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable %}
{% for item in telegraf_plugins_extra %}
[[inputs.{{ item.plugin }}]]
{% if item.interval is defined %}
interval = "{{ item.interval }}s"
{% endif %}
{% if item.config is defined and item.config is iterable %}
{% for items in item.config %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[{{ item.plugin }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[{{ item.plugin }}.tagdrop]
{% for items in item.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.pass is defined and item.pass is iterable %}
[{{ item.plugin }}.pass]
{% for items in item.pass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.drop is defined and item.drop is iterable %}
[{{ item.plugin }}.drop]
{% for items in item.drop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.specifications is defined and item.specifications is iterable %}
[[{{item.plugin}}.specifications]]
{% for items in item.specifications %}
{{ items }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %} {% endif %}

View File

@ -1,4 +0,0 @@
---
- hosts: localhost
roles:
- role: ansible-telegraf

View File

@ -1,27 +0,0 @@
require 'serverspec'
require 'spec_helper'
describe 'Telegraf Packages' do
describe package('telegraf') do
it { should be_installed }
end
end
describe 'Telegraf Services' do
describe service('telegraf') do
it { should be_enabled }
end
end
describe 'Telegraf Configuration' do
describe file('/etc/telegraf/telegraf.conf') do
it { should be_file}
it { should be_owned_by 'root'}
it { should be_grouped_into 'root'}
it { should contain "[cpu]" }
it { should contain "[mem]" }
it { should contain "url = \"http://localhost:8086\"" }
end
end

View File

@ -1,2 +0,0 @@
require 'serverspec'
set :backend, :exec

6
tests/inventory Normal file
View File

@ -0,0 +1,6 @@
localhost
[group1]
telegraf-centos
[group2]
telegraf-debian

5
tests/test.yml Normal file
View File

@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- ansible-zabbix-agent

19
tests/test_docker.py Normal file
View File

@ -0,0 +1,19 @@
def test_telegraf_running_and_enabled(Service, SystemInfo):
telegraf = Service("telegraf")
assert telegraf.is_enabled
if SystemInfo.distribution == 'centos':
assert telegraf.is_running
def test_telegraf_dot_conf(File):
telegraf = File("/etc/telegraf/telegraf.conf")
assert telegraf.user == "root"
assert telegraf.group == "root"
assert telegraf.mode == 0o644
assert telegraf.contains('[[inputs.cpu]]')
def test_telegraf_package(Package, SystemInfo):
telegraf = Package('telegraf')
assert telegraf.is_installed

View File

@ -1,2 +0,0 @@
---
# vars file for .