Updating to Molecule V2

This commit is contained in:
Werner Dijkerman
2017-09-10 18:11:07 +02:00
parent 1100ceddd6
commit 4f8fa12fad
16 changed files with 177 additions and 62 deletions

View File

@ -4,17 +4,12 @@ language: python
services:
- docker
before_install:
- sudo apt-get -qq update
- sudo apt-get install -o Dpkg::Options::="--force-confold" --force-yes -y docker-engine
install:
- pip install molecule ansible docker-py
- pip install molecule ansible docker
script:
- molecule --version
- ansible --version
- molecule test
- molecule --version
- ansible --version
- molecule test
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/

View File

@ -1,7 +1,6 @@
---
# defaults file for ansible-telegraf
#telegraf_agent_version: 0.10.1
telegraf_agent_version: 1.0.0
telegraf_agent_hostname: "{{ ansible_fqdn }}"
telegraf_agent_interval: 10
@ -10,13 +9,13 @@ telegraf_agent_round_interval: True
telegraf_agent_flush_interval: 10
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_metric_batch_size: 1000
telegraf_agent_metric_buffer_limit: 10000
telegraf_agent_quiet: False
#v1.1 settings:
# v1.1 settings:
telegraf_agent_logfile: ""
telegraf_agent_omit_hostname: False

View File

@ -6,15 +6,15 @@ galaxy_info:
license: license BSD
min_ansible_version: 1.2
platforms:
- name: EL
versions:
- all
- name: Ubuntu
versions:
- all
- name: Debian
versions:
- all
- name: EL
versions:
- all
- name: Ubuntu
versions:
- all
- name: Debian
versions:
- all
categories:
- monitoring
dependencies: []
- monitoring
dependencies: []

View File

@ -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

View 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

View 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

View 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 }}"

View 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 }}"

View 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

View File

@ -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):

Binary file not shown.

View File

@ -0,0 +1,9 @@
---
extends: default
rules:
line-length:
max: 120
level: warning
truthy: disable

View File

@ -56,5 +56,5 @@
notify: "Restart Telegraf"
become: yes
tags:
- telegraf
- packages
- telegraf
- packages

View File

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

View File

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