Skip to content

Commit

Permalink
Merge pull request #2 from CoffeeITWorks/support_ubuntu1604
Browse files Browse the repository at this point in the history
Support ubuntu1604
  • Loading branch information
pablodav authored Jan 7, 2019
2 parents dcdcfaa + d351b04 commit 20693a2
Show file tree
Hide file tree
Showing 43 changed files with 866 additions and 28 deletions.
23 changes: 23 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# http://www.jeffgeerling.com/blog/testing-ansible-roles-travis-ci-github
sudo: required
language: python
services:
- docker
before_install:
- sudo apt-get -qq update
#- docker build --tag molecule_local/fedora-rawhide2:latest -f molecule/default/fedorar/Dockerfile molecule/default/fedorar

install:
- sudo apt-get install -y python-pip libssl-dev libffi-dev
- pip install molecule
- pip install docker-py
#- ansible-galaxy install -r requirements.yml

script:
- molecule --debug create
- molecule converge
- molecule syntax
#- molecule idempotence

notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ Thruk interface for nagios.

### To easily replace thruk logo and add backgrounds to panorama view

*Enable var:*

```yaml
# In your group_vars/thruk_group/vars.yml
thruk_copy_backgrounds: true
```
Wherever your site.yml (playbook) is, create subfolder: thruk_company_logos, with these files:
- logo_thruk.png 246x89
Expand Down
18 changes: 18 additions & 0 deletions ansible.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# config file for ansible -- http://ansible.com/
# ==============================================

# nearly all parameters can be overridden in ansible-playbook
# or with command line flags. ansible will read ANSIBLE_CONFIG,
# ansible.cfg in the current working directory, .ansible.cfg in
# the home directory or /etc/ansible/ansible.cfg, whichever it
# finds first

[defaults]
roles_path = ../:/etc/ansible/roles:~/.ansible/roles
host_key_checking = False

retry_files_enabled = False
callback_whitelist = profile_tasks

[ssh_connection]
pipelining = False
9 changes: 8 additions & 1 deletion defaults/main.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
---

# Logcache config for Thruk
mysql_root_password: root
thruk_mysql_user: thruk
thruk_mysql_password: thruk$1999
thruk_mysql_password: thrukpassword
thruk_mysql_db: thruk_logs

# Vars for copying thruk backgrounds
thruk_copy_backgrounds: false
thruk_backgrounds_path: '/etc/thruk/usercontent/backgrounds/'


Expand All @@ -22,6 +26,9 @@ thruk_report_include_class2: 0
# First day of week: 1 (Monday)
thruk_first_day_of_week: 1

# https://www.thruk.org/documentation/configuration.html#report_use_temp_files
thruk_report_use_temp_files: 7

# Theme change:
thruk_default_theme: Thruk2
# color complete status line with status colour or just the status
Expand Down
4 changes: 4 additions & 0 deletions files/thruk_backgrounds/readme.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
If you want to add images to be used as backgrounds in your panorama view in thruk
you can created a directory "thruk_backgrounds" in same path as your playbook path
(playbook.yml where you call this role).
Then add any image.
7 changes: 7 additions & 0 deletions files/thruk_company_logos/readme.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
If you want to replace the logo of thruk.
you can created a directory "thruk_backgrounds_logos" in same path as your playbook path
(playbook.yml where you call this role).
then add:
- logo_thruk.png 246x89
- logo_thruk_small.png 139x50
- logo_thruk_mid.png 130x40
13 changes: 9 additions & 4 deletions meta/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,16 @@ galaxy_info:
- name: Ubuntu
versions:
- trusty
- xenial
- bionic
- name: Debian
versions:
- all
galaxy_tags:
- Monitoring
- Infraestructure
- monitoring
- infraestructure
allow_duplicates: no
dependencies:
- role: nagios4_checkmk_livestatus
- role: coffeeitworks.ansible_nagios4_checkmk_livestatus
tags: ["install", "nagios_server_all", "nagios_server"]
# - { role: ANXS.mysql, tags: ["install", "nagios_server_all", "nagios_server_thruk", "ANXS.mysql"] }
# - { role: ANXS.mysql, tags: ["install", "nagios_server_all", "nagios_server_thruk", "ANXS.mysql"] }
24 changes: 24 additions & 0 deletions molecule/default/Dockerfile.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Molecule managed

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

RUN if [ $(command -v dnf) ]; then dnf -y update && dnf clean all; fi

RUN if [ $(command -v dnf) ]; then dnf -y install systemd hostname && dnf clean all && \
(cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*; fi

# VOLUME [ "/sys/fs/cgroup" ]
# CMD ["/usr/sbin/init"]
16 changes: 16 additions & 0 deletions molecule/default/INSTALL.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
*******
Install
*******

Requirements
============

* Docker Engine
* docker-py

Install
=======

.. code-block:: bash
$ sudo pip install docker-py
59 changes: 59 additions & 0 deletions molecule/default/create.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
- 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) | molecule_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('bash -c \"while true; do sleep 10000; done\"') }}"
privileged: "{{ item.privileged | default(omit) }}"
volumes: "{{ item.volumes | default(omit) }}"
capabilities: "{{ item.capabilities | default(omit) }}"
ports: "{{ item.exposed_ports | default(omit) }}"
register: server
with_items: "{{ molecule_yml.platforms }}"
async: 7200
poll: 0

- name: Wait for instance(s) creation to complete
async_status:
jid: "{{ item.ansible_job_id }}"
register: docker_jobs
until: docker_jobs.finished
retries: 300
with_items: "{{ server.results }}"
27 changes: 27 additions & 0 deletions molecule/default/destroy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
- 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) | molecule_from_yaml }}"
tasks:
- name: Destroy molecule instance(s)
docker_container:
name: "{{ item.name }}"
state: absent
force_kill: "{{ item.force_kill | default(true) }}"
register: server
with_items: "{{ molecule_yml.platforms }}"
async: 7200
poll: 0

- name: Wait for instance(s) deletion to complete
async_status:
jid: "{{ item.ansible_job_id }}"
register: docker_jobs
until: docker_jobs.finished
retries: 300
with_items: "{{ server.results }}"
76 changes: 76 additions & 0 deletions molecule/default/molecule.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
dependency:
name: galaxy
options:
ignore-certs: True
ignore-errors: True
role-file: requirements.yml
driver:
name: docker
lint:
name: yamllint
platforms:

- name: ansible_test-01
image: paulfantom/ubuntu-molecule:16.04
#privileged: True
command: /sbin/init
capabilities:
- SYS_ADMIN
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
groups:
- group1

- name: ansible_test-01_2
image: paulfantom/ubuntu-molecule:18.04
#privileged: True
command: /sbin/init
capabilities:
- SYS_ADMIN
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
groups:
- group1

# Disable trusty test due to https://github.com/ansible/ansible/issues/21208#event-1883144200
# - name: ansible_test-02
# image: ubuntu:trusty
# groups:
# - groupold
#
# - name: ansible_test-03
# image: centos/systemd
# command: /sbin/init
# capabilities:
# - SYS_ADMIN
# volumes:
# - "/sys/fs/cgroup:/sys/fs/cgroup:ro"
#privileged: True
# groups:
# - group1

provisioner:
name: ansible
config_options:
defaults:
callback_whitelist: profile_tasks
inventory:
group_vars:
master:
burpsrcext: "zip"
burp_version: "master"
burp_remove_clients:
- name: client_to_remove
- name: other_client_to_remove
burp_server_port_per_operation_bool: true
lint:
name: ansible-lint

scenario:
name: default

verifier:
name: testinfra
lint:
name: flake8
9 changes: 9 additions & 0 deletions molecule/default/playbook.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
- name: Converge
hosts: all
become: yes
roles:
- role: geerlingguy.mysql
- role: ansible-role-nagios
- role: coffeeitworks.ansible_nagios4_server_config
- role: ansible_nagios4_server_thruk
5 changes: 5 additions & 0 deletions molecule/default/prepare.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
- name: Prepare
hosts: all
gather_facts: false
tasks: []
14 changes: 14 additions & 0 deletions molecule/default/tests/test_default.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import os

import testinfra.utils.ansible_runner

testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')


def test_hosts_file(host):
f = host.file('/etc/hosts')

assert f.exists
assert f.user == 'root'
assert f.group == 'root'
Binary file added molecule/default/tests/test_default.pyc
Binary file not shown.
24 changes: 24 additions & 0 deletions molecule/local/Dockerfile.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Molecule managed

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

RUN if [ $(command -v dnf) ]; then dnf -y update && dnf clean all; fi

RUN if [ $(command -v dnf) ]; then dnf -y install systemd hostname && dnf clean all && \
(cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*; fi

# VOLUME [ "/sys/fs/cgroup" ]
# CMD ["/usr/sbin/init"]
16 changes: 16 additions & 0 deletions molecule/local/INSTALL.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
*******
Install
*******

Requirements
============

* Docker Engine
* docker-py

Install
=======

.. code-block:: bash
$ sudo pip install docker-py
Loading

0 comments on commit 20693a2

Please sign in to comment.