summaryrefslogtreecommitdiff
path: root/docker/sensu/sensu-client/Dockerfile.j2
blob: f0317d7b3ca7836f06a22b8ef3bc8193f5df3c9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
FROM {{ namespace }}/{{ image_prefix }}sensu-base:{{ tag }}
LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"

{% block sensu_client_header %}{% endblock %}

{% import "macros.j2" as macros with context %}

{% if base_package_type == 'rpm' %}
    {% set sensu_client_packages = [
        'ceph-common',
        'cyrus-sasl-devel',
        'docker-client',
        'gcc-c++',
        'make',
        'mariadb',
        'ntp',
        'ruby-devel'
    ] %}

    {% if distro_python_version.startswith('3') %}
    {% set sensu_client_packages = sensu_client_packages + [
        'python3-pymongo'
    ] %}
    {% else %}
    {% set sensu_client_packages = sensu_client_packages + [
        'python-pymongo'
    ] %}
    {% endif %}
{% elif base_package_type == 'deb' %}
    {% set sensu_client_packages = [
        'build-essential',
        'ceph-common',
        'inetutils-ping',
        'libsasl2-dev',
        'mysql-client',
        'ntp',
        'python3-cephfs',
        'python3-pymongo',
        'python3-rados',
        'python3-rbd'
    ] %}
    {% if base_distro in ['debian'] %}
        {% set sensu_client_packages = sensu_client_packages + [
            'docker-ce'
        ] %}
    {% else %}
        {% set sensu_client_packages = sensu_client_packages + [
            'docker.io'
        ] %}
    {% endif %}
{% else %}
RUN echo '{{ image_name }} not yet available for {{ base_distro }}' \
    && /bin/false
{% endif %}

{{ macros.install_packages(sensu_client_packages | customizable("packages")) }}

{% block sensu_clients_install %}

# Sensu plugins are all using semantic versioning.
# Let's cap them to the known major version that works with the ruby shipped on
# rhel/centos (currently 2.0)
{% set sensu_plugins = [
    'cpu-checks:"~>1"',
    'disk-checks:"~>2"',
    'dns:"~>1"',
    'docker:"~>3"',
    'elasticsearch:"~>1"',
    'filesystem-checks:"~>1"',
    'haproxy:"~>1"',
    'http:"~>1"',
    'io-checks:"~>1"',
    'load-checks:"~>3"',
    'memcached:"~>0"',
    'memory-checks:"~>1"',
    'mongodb:"~>0"',
    'mysql:"~>2"',
    'network-checks:"~>2"',
    'ntp:"~>1"',
    'openstack:"~>1"',
    'rabbitmq:"~>3"',
    'redis:"~>2"',
    'uptime-checks:"~>1"',
    'vmstats:"~>1"'
] %}

# TODO(mandre) Use packaged sensu plugins from centos-opstools for binary distro
# http://cbs.centos.org/koji/search?match=glob&type=package&terms=*sensu*
# NOTE(hrw): whois 5.0.0 requires Ruby 2.4+ while CentOS has 2.0
# NOTE(yoctozepto): pinning minitest for the same reason
# NOTE(yoctozepto): pinning simpleidn because it started requiring Ruby 2.2
# NOTE(hrw): gem order is crucial - simpleidn depends on unf_ext
RUN {%if base_package_type == 'rpm' %} gem install whois:"<5" minitest:"~>5.11.3" unf_ext:"<0.0.7.7" simpleidn:"~>0.1.1" && {% endif %} sensu-install --plugins {{ sensu_plugins | customizable('plugins') | join (',') }}
{% endblock %}

{% block sensu_client_footer %}{% endblock %}
{% block footer %}{% endblock %}