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
1anaconda
2ansible
3ansible_lint
4apt_autostart
5ara
6artifactory
7at
8atom
9awx
10backup
11bootstrap
12buildtools
13ca
14cargo
15clamav
16cloud9
17cntlm
18common
19dhcpd
20digitalocean-agent
21dns
22docker
23docker-ce
24dovecot
25epel
26firewall
27fail2ban
28git
29glusterfs
30go
31gotop
32haproxy
33haveged
34httpd
35investigate
36irslackd
37java
38jenkins
39locale
40lynis
41mediawiki
42memcached
43mitogen
44molecule
45mssql
46mysql
47natrouter
48nginx
49npm
50ntp
51openssh
52openvas
53owncloud
54packer
55php
56php_fpm
57phpmyadmin
58postfix
59python_pip
60reboot
61redis
62release
63restore
64revealmd
65roundcubemail
66rsyslog
67ruby
68rundeck
69scl
70selinux
71service
72skeletonnot tested
73snort
74spamassassin
75squid
76sudo-pair
77terraform
78tftpd
79tomcat
80travis
81update
82users
83vagrant
84xinetd
85zabbix
86zabbix_repository
87zabbix_server
88zabbix_agent
89zabbix_proxy
90zabbix_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 dependecies” on another role, mainy for a shared handler or variables set in the parent role, used in the child role. More details on how to use these roles.

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.
docker_ce Many Docker CE has limited support for distributions.
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.