Ansible roles

These Ansible roles are simple in style and work well together on many distributions and many Ansible version.

Integration tests

A weekly test to verify if roles work well together.

Build Status ARA report.

Unit tests

A monthly test to see of the role still works on the current distributions. Some roles contain a version that requires frequent tests.

#Role nameBuild statusVersion
1ansible
2ansible_lint
3apt_autostart
4ara
5artifactory
6at
7awx
8backup
9bootstrap
10buildtools
11ca
12cargo
13clamav
14cloud9
15cntlm
16common
17dhcpd
18digitalocean-agent
19dns
20docker
21dovecot
22epel
23firewall
24fail2ban
25git
26glusterfs
27go
28gotop
29haproxy
30haveged
31httpd
32investigate
33irslackd
34java
35jenkins
36locale
37lynis
38mediawiki
39memcached
40mitogen
41molecule
42mssql
43mysql
44natrouter
45nginx
46npm
47ntp
48openssh
49openvas
50owncloud
51packer
52php
53php_fpm
54phpmyadmin
55postfix
56python-pip
57reboot
58redis
59release
60restore
61revealmd
62roundcubemail
63rsyslog
64ruby
65rundeck
66scl
67selinux
68skeletonnot tested
69snort
70spamassassin
71squid
72sudo-pair
73terraform
74tftpd
75tomcat
76travis
77update
78users
79vagrant
80xinetd
81zabbix
82zabbix_repository
83zabbix_server
84zabbix_agent
85zabbix_proxy
86zabbix_web

Dependencies

Here is an overview of the dependencies between the roles. These dependecies are “soft”, “loose” or “implicit”, meaning you may depend on the roles as described here, but are not required to. Each role has a description of the intended use in the README.md, and a list of the required packages in requirements.yml. The dependencies are soft for these reasons:

Overview of dependencies

Because these dependecies are loose, you have to include them in your playbook yourself:

- name: make the best machine ever
  hosts: all
  become: yes

  roles:
    - role: robertdebock.bootstrap
    - role: robertdebock.java
    - role: robertdebock.tomcat

Some roles do have a “hard requirement” on another role, mainy for a shared handler or variables set in the parent role, used in the child role.

Role Depends on Reason
tftpd xinetd handler
php httpd handler
phpmyadmin httpd handler
roundcubemail httpd handler
spamassassin rsyslog handler
zabbix httpd handler & inherited variable
ca httpd inherited variable

A special treatment for tests is used to work around Docker limitations.

Tests

Unit tests and integration tests are use to verify the quality of the roles, read more about testing

Distributions

The goal is to let all Ansible roles work on as many distributions as possible, but this is sometimes not possible. For each distribution, the current and previous release is tested. A role may work on diferent distributions, like Red Hat Enterprise Linux (RHEL), but it’s not tested against it. By default these Linux distributions are included in the tests:

Distribution Version(s)
Archlinux latest
Alpine latest & edge*
CentOS 6 & latest
Debian stable, latest & unstable*
Fedora latest & rawhide*
OpenSUSE leap & tumbleweed
Ubuntu 17 (artful), latest, devel*

Exceptions in distributions

Some Ansible roles do not work on all distributions. This table lists why.

Ansible role Excepted Linux distribution(s) Reasoning
ara CentOS 6 Depends on Ansible role python_pip.
awx CentOS 6 Depends on Ansible role python_pip.
cargo Alpine & CentOS 6 Weird error & rust is too old.
cloud9 Alpine npm: exec: line 2: /home/cloud9/.c9/node/bin/node: not found.
cloud9 ArchLinux, CentOS 6 Python version 2.7 is required to install pty.js..
cloud9 OpenSUSE configure: error: "curses not found".
digitalocean-agent Alpine, ArchLinux, OpenSUSE Not supported by DigitalOcean.
digitalocean-agent Debian, Ubuntu Package attempts to start service which is not possible in Docker.
docker CentOS 6 Depends on Ansible role python_pip.
glusterfs Alpine GlusterFS is not available.
httpd CentOS 6 the SNI (Subject Name Indication) extension to TLS is not available on this platform.
mitogen CentOS 6 Depends on Ansible role python_pip.
mssql Alpine, ArchLinux, CentOS 6, Debian, Fedora, OpenSUSE Tumbleweed & Ubuntu latest Not supported by Microsoft.
npm OpenSUSE Tumbleweed No JSON object could be decoded.
openvas Archlinux, CentOS 6 Depends on Ansible role python_pip and selinux.
owncloud CentOS 6 Depends on Ansible role python_pip.
php CentOS 6 Depends on Ansible role httpd.
phpmyadmin CentOS 6 Depends on Ansible role httpd.
phpmyadmin Alpine There is no MySQL, only mariadb.
python_pip CentOS 6 No package matching 'python-pip' found available.
redis CentOS 6 Depends on Ansible role python_pip.
revealmd OpenSUSE Tumbleweed No JSON object could be decoded.
roundcubemail CentOS 6 Depends on Ansible role httpd.
rsyslog ArchLinux Package is only available in AUR.
selinux ArchLinux Package is only available in AUR.
spamassassin Archlinux Depends on Ansible role rsyslog.
sudo_pair Alpine & CentOS 6 Depends on Ansible role cargo.
tftpd Alpine Depends on Ansible role xinetd.
tftpd Archlinux The package tftpd is not available.
xinetd Alpine The package xinetd is not available.
zabbix ArchLinux, Alpine, Debian, Fedora & OpenSUSE Zabbix has limited OS support.

Ansible version

The goal is to let all roles work on these Ansible version:

See errors? Please help and make a merge request on git.