mirror of
https://github.com/dj-wasabi/ansible-telegraf.git
synced 2025-07-17 08:46:37 +00:00
Updating to Molecule V2
This commit is contained in:
13
.travis.yml
13
.travis.yml
@ -4,17 +4,12 @@ language: python
|
|||||||
services:
|
services:
|
||||||
- docker
|
- docker
|
||||||
|
|
||||||
before_install:
|
|
||||||
- sudo apt-get -qq update
|
|
||||||
- sudo apt-get install -o Dpkg::Options::="--force-confold" --force-yes -y docker-engine
|
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- pip install molecule ansible docker-py
|
- pip install molecule ansible docker
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- molecule --version
|
- molecule --version
|
||||||
- ansible --version
|
- ansible --version
|
||||||
- molecule test
|
- molecule test
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
# defaults file for ansible-telegraf
|
# defaults file for ansible-telegraf
|
||||||
|
|
||||||
#telegraf_agent_version: 0.10.1
|
|
||||||
telegraf_agent_version: 1.0.0
|
telegraf_agent_version: 1.0.0
|
||||||
telegraf_agent_hostname: "{{ ansible_fqdn }}"
|
telegraf_agent_hostname: "{{ ansible_fqdn }}"
|
||||||
telegraf_agent_interval: 10
|
telegraf_agent_interval: 10
|
||||||
@ -10,13 +9,13 @@ 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
|
||||||
|
|
||||||
#v0.13 settings (not sure if supported in older version):
|
# v0.13 settings (not sure if supported in older version):
|
||||||
telegraf_agent_collection_jitter: 0
|
telegraf_agent_collection_jitter: 0
|
||||||
telegraf_agent_metric_batch_size: 1000
|
telegraf_agent_metric_batch_size: 1000
|
||||||
telegraf_agent_metric_buffer_limit: 10000
|
telegraf_agent_metric_buffer_limit: 10000
|
||||||
telegraf_agent_quiet: False
|
telegraf_agent_quiet: False
|
||||||
|
|
||||||
#v1.1 settings:
|
# v1.1 settings:
|
||||||
telegraf_agent_logfile: ""
|
telegraf_agent_logfile: ""
|
||||||
telegraf_agent_omit_hostname: False
|
telegraf_agent_omit_hostname: False
|
||||||
|
|
||||||
|
@ -6,15 +6,15 @@ galaxy_info:
|
|||||||
license: license BSD
|
license: license BSD
|
||||||
min_ansible_version: 1.2
|
min_ansible_version: 1.2
|
||||||
platforms:
|
platforms:
|
||||||
- name: EL
|
- name: EL
|
||||||
versions:
|
versions:
|
||||||
- all
|
- all
|
||||||
- name: Ubuntu
|
- name: Ubuntu
|
||||||
versions:
|
versions:
|
||||||
- all
|
- all
|
||||||
- name: Debian
|
- name: Debian
|
||||||
versions:
|
versions:
|
||||||
- all
|
- all
|
||||||
categories:
|
categories:
|
||||||
- monitoring
|
- monitoring
|
||||||
dependencies: []
|
dependencies: []
|
||||||
|
24
molecule.yml
24
molecule.yml
@ -1,24 +0,0 @@
|
|||||||
---
|
|
||||||
ansible:
|
|
||||||
playbook: playbook.yml
|
|
||||||
|
|
||||||
driver:
|
|
||||||
name: docker
|
|
||||||
|
|
||||||
verifier:
|
|
||||||
name: testinfra
|
|
||||||
|
|
||||||
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
|
|
7
molecule/default/Dockerfile.j2
Normal file
7
molecule/default/Dockerfile.j2
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
FROM {{ item.image }}
|
||||||
|
|
||||||
|
RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get upgrade -y && apt-get install -y python sudo bash ca-certificates && apt-get clean; \
|
||||||
|
elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python python-devel python2-dnf bash && dnf clean all; \
|
||||||
|
elif [ $(command -v yum) ]; then yum makecache fast && yum update -y && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \
|
||||||
|
elif [ $(command -v zypper) ]; then zypper refresh && zypper update -y && zypper install -y python sudo bash python-xml && zypper clean -a; \
|
||||||
|
elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; fi
|
46
molecule/default/INSTALL.rst
Normal file
46
molecule/default/INSTALL.rst
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
*******
|
||||||
|
Install
|
||||||
|
*******
|
||||||
|
|
||||||
|
This set of playbooks have specific dependencies on Ansible due to the modules
|
||||||
|
being used.
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
|
||||||
|
* Ansible 2.2
|
||||||
|
* Docker Engine
|
||||||
|
* docker-py
|
||||||
|
|
||||||
|
Install OS dependencies on CentOS 7
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ sudo yum install -y epel-release
|
||||||
|
$ sudo yum install -y gcc python-pip python-devel openssl-devel
|
||||||
|
# If installing Molecule from source.
|
||||||
|
$ sudo yum install libffi-devel git
|
||||||
|
|
||||||
|
Install OS dependencies on Ubuntu 16.x
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ sudo apt-get update
|
||||||
|
$ sudo apt-get install -y python-pip libssl-dev docker-engine
|
||||||
|
# If installing Molecule from source.
|
||||||
|
$ sudo apt-get install -y libffi-dev git
|
||||||
|
|
||||||
|
Install OS dependencies on Mac OS
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ brew install python
|
||||||
|
$ brew install git
|
||||||
|
|
||||||
|
Install using pip:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ sudo pip install ansible
|
||||||
|
$ sudo pip install docker-py
|
||||||
|
$ sudo pip install molecule --pre
|
47
molecule/default/create.yml
Normal file
47
molecule/default/create.yml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
- name: Create
|
||||||
|
hosts: localhost
|
||||||
|
connection: local
|
||||||
|
gather_facts: False
|
||||||
|
no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
|
||||||
|
vars:
|
||||||
|
molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}"
|
||||||
|
molecule_ephemeral_directory: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}"
|
||||||
|
molecule_scenario_directory: "{{ lookup('env', 'MOLECULE_SCENARIO_DIRECTORY') }}"
|
||||||
|
molecule_yml: "{{ lookup('file', molecule_file) | from_yaml }}"
|
||||||
|
tasks:
|
||||||
|
- name: Create Dockerfiles from image names
|
||||||
|
template:
|
||||||
|
src: "{{ molecule_scenario_directory }}/Dockerfile.j2"
|
||||||
|
dest: "{{ molecule_ephemeral_directory }}/Dockerfile_{{ item.image | regex_replace('[^a-zA-Z0-9_]', '_') }}"
|
||||||
|
with_items: "{{ molecule_yml.platforms }}"
|
||||||
|
register: platforms
|
||||||
|
|
||||||
|
- name: Discover local Docker images
|
||||||
|
docker_image_facts:
|
||||||
|
name: "molecule_local/{{ item.item.name }}"
|
||||||
|
with_items: "{{ platforms.results }}"
|
||||||
|
register: docker_images
|
||||||
|
|
||||||
|
- name: Build an Ansible compatible image
|
||||||
|
docker_image:
|
||||||
|
path: "{{ molecule_ephemeral_directory }}"
|
||||||
|
name: "molecule_local/{{ item.item.image }}"
|
||||||
|
dockerfile: "{{ item.item.dockerfile | default(item.invocation.module_args.dest) }}"
|
||||||
|
force: "{{ item.item.force | default(True) }}"
|
||||||
|
with_items: "{{ platforms.results }}"
|
||||||
|
when: platforms.changed or docker_images.results | map(attribute='images') | select('equalto', []) | list | count >= 0
|
||||||
|
|
||||||
|
- name: Create molecule instance(s)
|
||||||
|
docker_container:
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
hostname: "{{ item.name }}"
|
||||||
|
image: "molecule_local/{{ item.image }}"
|
||||||
|
state: started
|
||||||
|
recreate: False
|
||||||
|
log_driver: syslog
|
||||||
|
command: "{{ item.command | default('sleep infinity') }}"
|
||||||
|
privileged: "{{ item.privileged | default(omit) }}"
|
||||||
|
volumes: "{{ item.volumes | default(omit) }}"
|
||||||
|
capabilities: "{{ item.capabilities | default(omit) }}"
|
||||||
|
with_items: "{{ molecule_yml.platforms }}"
|
16
molecule/default/destroy.yml
Normal file
16
molecule/default/destroy.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
- name: Destroy
|
||||||
|
hosts: localhost
|
||||||
|
connection: local
|
||||||
|
gather_facts: False
|
||||||
|
no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
|
||||||
|
vars:
|
||||||
|
molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}"
|
||||||
|
molecule_yml: "{{ lookup('file', molecule_file) | from_yaml }}"
|
||||||
|
tasks:
|
||||||
|
- name: Destroy molecule instance(s)
|
||||||
|
docker_container:
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
state: absent
|
||||||
|
force_kill: "{{ item.force_kill | default(True) }}"
|
||||||
|
with_items: "{{ molecule_yml.platforms }}"
|
28
molecule/default/molecule.yml
Normal file
28
molecule/default/molecule.yml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
lint:
|
||||||
|
name: yamllint
|
||||||
|
options:
|
||||||
|
config-file: molecule/default/yaml-lint.yml
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: telegraf-centos
|
||||||
|
image: milcom/centos7-systemd
|
||||||
|
privileged: True
|
||||||
|
- name: telegraf-debian
|
||||||
|
image: maint/debian-systemd
|
||||||
|
privileged: True
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
lint:
|
||||||
|
name: ansible-lint
|
||||||
|
scenario:
|
||||||
|
name: default
|
||||||
|
verifier:
|
||||||
|
name: testinfra
|
||||||
|
lint:
|
||||||
|
name: flake8
|
@ -1,6 +1,9 @@
|
|||||||
from testinfra.utils.ansible_runner import AnsibleRunner
|
import os
|
||||||
|
|
||||||
testinfra_hosts = AnsibleRunner('.molecule/ansible_inventory').get_hosts('all')
|
import testinfra.utils.ansible_runner
|
||||||
|
|
||||||
|
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
|
||||||
|
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
|
||||||
|
|
||||||
|
|
||||||
def test_telegraf_running_and_enabled(Service, SystemInfo):
|
def test_telegraf_running_and_enabled(Service, SystemInfo):
|
BIN
molecule/default/tests/test_default.pyc
Normal file
BIN
molecule/default/tests/test_default.pyc
Normal file
Binary file not shown.
9
molecule/default/yaml-lint.yml
Normal file
9
molecule/default/yaml-lint.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
extends: default
|
||||||
|
|
||||||
|
rules:
|
||||||
|
line-length:
|
||||||
|
max: 120
|
||||||
|
level: warning
|
||||||
|
truthy: disable
|
@ -56,5 +56,5 @@
|
|||||||
notify: "Restart Telegraf"
|
notify: "Restart Telegraf"
|
||||||
become: yes
|
become: yes
|
||||||
tags:
|
tags:
|
||||||
- telegraf
|
- telegraf
|
||||||
- packages
|
- packages
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
localhost
|
|
||||||
[group1]
|
|
||||||
telegraf-centos
|
|
||||||
|
|
||||||
[group2]
|
|
||||||
telegraf-debian
|
|
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
- hosts: localhost
|
|
||||||
remote_user: root
|
|
||||||
roles:
|
|
||||||
- ansible-zabbix-agent
|
|
Reference in New Issue
Block a user