diff --git a/.gitignore b/.gitignore index 7529331..d52963b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ -.kitchen/ -.kitchen.local.yml -.idea/ +.idea +.molecule +tests/.cache +.cache +__pycache__ +*.retry pmip diff --git a/.kitchen.yml b/.kitchen.yml deleted file mode 100644 index 1662510..0000000 --- a/.kitchen.yml +++ /dev/null @@ -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: diff --git a/.travis.yml b/.travis.yml index 560e132..59c718e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,15 +1,17 @@ --- +sudo: required language: python -python: "2.7" +services: + - docker + before_install: - - sudo apt-get update -qq - - sudo apt-get install -qq python-apt python-pycurl +- sudo apt-get -qq update +- sudo apt-get install -o Dpkg::Options::="--force-confold" --force-yes -y docker-engine + install: - - pip install ansible==1.9.4 - - echo -e 'localhost ansible_connection=local' > test/inventory - - echo -e '[defaults]\nroles_path = ../\nhostfile = ./test/inventory' > ansible.cfg +- pip install molecule + script: - - ansible-playbook test/integration/default.yml --syntax-check - - ansible-playbook test/integration/default.yml --connection=local --sudo +- molecule test notifications: webhooks: https://galaxy.ansible.com/api/v1/notifications/ diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 68acb73..0000000 --- a/Gemfile +++ /dev/null @@ -1,5 +0,0 @@ -source "https://rubygems.org" - -gem "test-kitchen" -gem "kitchen-docker" -gem "kitchen-ansible" diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 36f8a1c..0000000 --- a/Gemfile.lock +++ /dev/null @@ -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 diff --git a/README.md b/README.md index a2904c6..db41535 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,9 @@ Role Variables 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_debug`: Setting the Telegraf in debug mode. Default: `False` * `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: * aferrari-technisys + * stvnwrgs +# Molecule -Test Kitchen ------------- - -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/ +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/ License ------- diff --git a/defaults/main.yml b/defaults/main.yml index 8fb3933..9e6a825 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,13 +1,19 @@ --- # 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_debug: False telegraf_agent_round_interval: True telegraf_agent_flush_interval: 10 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_output: diff --git a/molecule.yml b/molecule.yml new file mode 100644 index 0000000..6aa7bd7 --- /dev/null +++ b/molecule.yml @@ -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 diff --git a/playbook.yml b/playbook.yml new file mode 100644 index 0000000..7c64ae3 --- /dev/null +++ b/playbook.yml @@ -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 diff --git a/tasks/Debian.yml b/tasks/Debian.yml index 2757f3c..dff1ff9 100644 --- a/tasks/Debian.yml +++ b/tasks/Debian.yml @@ -2,7 +2,7 @@ - name: "Fetch telegraf installation package | Debian" 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 mode=0440 diff --git a/tasks/RedHat.yml b/tasks/RedHat.yml index d5461ce..9fccbd2 100644 --- a/tasks/RedHat.yml +++ b/tasks/RedHat.yml @@ -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" action: get_url - url=http://get.influxdb.org/telegraf/telegraf-{{ telegraf_agent_version }}-1.x86_64.rpm - dest=/tmp/telegraf_{{ telegraf_agent_version }}-1.x86_64.rpm + url="{{ telegraf_agent_rpm_url }}" + dest=/tmp/telegraf_{{ telegraf_agent_version }}.x86_64.rpm mode=0440 - name: "Install telegraf package | RedHat" action: yum - name=/tmp/telegraf_{{ telegraf_agent_version }}-1.x86_64.rpm + name=/tmp/telegraf_{{ telegraf_agent_version }}.x86_64.rpm state=installed notify: "Restart Telegraf" - sudo: yes diff --git a/tasks/main.yml b/tasks/main.yml index 46007ea..2c66f79 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -19,7 +19,7 @@ dest: /etc/opt/telegraf/telegraf.conf owner: root group: root - mode: 644 + mode: 0644 when: telegraf_ver < 100 sudo: yes notify: "Restart Telegraf" @@ -30,7 +30,7 @@ dest: /etc/telegraf/telegraf.conf owner: root group: root - mode: 644 + mode: 0644 when: telegraf_ver >= 100 sudo: yes notify: "Restart Telegraf" diff --git a/test/integration/default.yml b/test/integration/default.yml deleted file mode 100644 index 2968e8e..0000000 --- a/test/integration/default.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -- hosts: localhost - roles: - - role: ansible-telegraf diff --git a/test/integration/default/serverspec/localhost/ansible_telegraf_spec.rb b/test/integration/default/serverspec/localhost/ansible_telegraf_spec.rb deleted file mode 100644 index 8152062..0000000 --- a/test/integration/default/serverspec/localhost/ansible_telegraf_spec.rb +++ /dev/null @@ -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 "[[inputs.cpu]]" } - it { should contain "[[inputs.mem]]" } - it { should contain "urls = [\"http://localhost:8086\"]" } - end -end diff --git a/test/integration/default/serverspec/spec_helper.rb b/test/integration/default/serverspec/spec_helper.rb deleted file mode 100644 index 590c2fa..0000000 --- a/test/integration/default/serverspec/spec_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -require 'serverspec' -set :backend, :exec diff --git a/tests/inventory b/tests/inventory new file mode 100644 index 0000000..4fb8bac --- /dev/null +++ b/tests/inventory @@ -0,0 +1,6 @@ +localhost +[group1] +telegraf-centos + +[group2] +telegraf-debian diff --git a/tests/test.yml b/tests/test.yml new file mode 100644 index 0000000..0f40aec --- /dev/null +++ b/tests/test.yml @@ -0,0 +1,5 @@ +--- +- hosts: localhost + remote_user: root + roles: + - ansible-zabbix-agent \ No newline at end of file diff --git a/tests/test_docker.py b/tests/test_docker.py new file mode 100644 index 0000000..3398c91 --- /dev/null +++ b/tests/test_docker.py @@ -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 diff --git a/vars/main.yml b/vars/main.yml deleted file mode 100644 index a38c5fb..0000000 --- a/vars/main.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -# vars file for .