diff --git a/docker/caso/Dockerfile.j2 b/docker/caso/Dockerfile.j2 new file mode 100644 index 0000000000..355467c624 --- /dev/null +++ b/docker/caso/Dockerfile.j2 @@ -0,0 +1,43 @@ +FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" + +{% block caso_header %}{% endblock %} + +{% import "macros.j2" as macros with context %} + +{% if base_distro in ['centos', 'oraclelinux', 'rhel'] %} + {% set caso_packages = [ + 'cronie', + ] %} +{% elif base_distro in ['debian', 'ubuntu'] %} + {% set caso_packages = [ + 'cron', + ] %} +{% endif %} + +{{ macros.install_packages(caso_packages | customizable("packages")) }} + +{{ macros.configure_user(name='caso') }} + +{% set caso_pip_packages = [ + 'caso' +] %} + +# NOTE(wszumski:) Upgrade pip, otherwise we hit: ModuleNotFoundError: No module +# named 'setuptools_rust' when install latest cryptography module. Doesn't +# really make sense to use constraints as caso is not tied to an openstack +# release. +RUN mkdir -p /requirements \ + && curl -sSL -o /requirements/upper-constraints.txt https://releases.openstack.org/constraints/upper/{{ openstack_release }} +RUN {{ macros.install_pip(["pip"]) }} + +RUN {{ macros.install_pip(caso_pip_packages | customizable("pip_packages"), constraints = false) }} \ + && mkdir -p /etc/caso \ + && chown -R caso: /etc/caso + +COPY extend_start.sh /usr/local/bin/kolla_extend_start + +RUN touch /usr/local/bin/kolla_caso_extend_start \ + && chmod 755 /usr/local/bin/kolla_extend_start /usr/local/bin/kolla_caso_extend_start + +{% block caso_base_footer %}{% endblock %} diff --git a/docker/caso/extend_start.sh b/docker/caso/extend_start.sh new file mode 100644 index 0000000000..f1f5d7c1ae --- /dev/null +++ b/docker/caso/extend_start.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Create log directory, with appropriate permissions +CASO_LOG_DIR="/var/log/kolla/caso" +if [[ ! -d "$CASO_LOG_DIR" ]]; then + mkdir -p $CASO_LOG_DIR +fi +if [[ $(stat -c %U:%G ${CASO_LOG_DIR}) != "caso:kolla" ]]; then + chown caso:kolla ${CASO_LOG_DIR} +fi +if [[ $(stat -c %a ${CASO_LOG_DIR}) != "755" ]]; then + chmod 755 ${CASO_LOG_DIR} +fi + +. /usr/local/bin/kolla_caso_extend_start diff --git a/docker/prometheus/prometheus-jiralert/Dockerfile.j2 b/docker/prometheus/prometheus-jiralert/Dockerfile.j2 new file mode 100644 index 0000000000..13943d1587 --- /dev/null +++ b/docker/prometheus/prometheus-jiralert/Dockerfile.j2 @@ -0,0 +1,47 @@ +FROM {{ namespace }}/{{ infra_image_prefix }}prometheus-base:{{ tag }} +{% block labels %} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" +{% endblock %} + +{% import "macros.j2" as macros with context %} + +{% block prometheus_jiralert_header %}{% endblock %} + +{% if base_package_type == 'rpm' %} + {% set prometheus_jiralert_packages = [ + 'git', + 'go', + 'make', + ] %} +{% elif base_package_type == 'deb' %} + {% set prometheus_jiralert_packages = [ + 'golang-go', + ] %} +{% endif %} + +{{ macros.install_packages(prometheus_jiralert_packages | customizable("packages")) }} + +{% block prometheus_jiralert_version %} +ARG prometheus_jiralert_version=master +ARG prometheus_jiralert_url=https://github.com/stackhpc/jiralert/archive/refs/heads/${prometheus_jiralert_version}.tar.gz +{% endblock %} + +{% block prometheus_jiralert_install %} +ENV GOPATH=/build +RUN mkdir /build \ + && cd /build \ + && curl -o jiralert.tar.gz ${prometheus_jiralert_url} \ + && tar xvf jiralert.tar.gz \ + && cd jiralert-${prometheus_jiralert_version} \ + && make build \ + && mkdir /opt/jiralert \ + && install -m 0755 jiralert /opt/jiralert/ \ + && install -m 0644 LICENSE /opt/jiralert/ \ + && install -m 0644 README.md /opt/jiralert/ \ + && rm -rf /build +{% endblock %} + +{% block prometheus_jiralert_footer %}{% endblock %} +{% block footer %}{% endblock %} + +USER prometheus diff --git a/docker/prometheus/prometheus-msteams/Dockerfile.j2 b/docker/prometheus/prometheus-msteams/Dockerfile.j2 new file mode 100644 index 0000000000..6222dab399 --- /dev/null +++ b/docker/prometheus/prometheus-msteams/Dockerfile.j2 @@ -0,0 +1,24 @@ +FROM {{ namespace }}/{{ infra_image_prefix }}prometheus-base:{{ tag }} +{% block labels %} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" +{% endblock %} + +{% block prometheus_msteams_header %}{% endblock %} + +{% block prometheus_msteams_repository_version %} +ARG prometheus_msteams_version=1.5.0 +ARG prometheus_msteams_sha256sum=74d1bedb12f6ec09fb65ddeb63328f691a9b2a56c92d7682ca152c867fc7c7a0 +{% endblock %} + +{% block prometheus_msteams_install %} +RUN curl -o /tmp/prometheus-msteams https://github.com/prometheus-msteams/prometheus-msteams/releases/download/v${prometheus_msteams_version}/prometheus-msteams-linux-{{debian_arch}} \ + && echo "${prometheus_msteams_sha256sum} /tmp/prometheus-msteams" | sha256sum -c \ + && mv /tmp/prometheus-msteams /opt \ + && chmod 0755 /opt/prometheus-msteams \ + && mkdir -p /etc/msteams +{% endblock %} + +{% block prometheus_msteams_footer %}{% endblock %} +{% block footer %}{% endblock %} + +USER prometheus diff --git a/docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2 b/docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2 index 0150e1d6c7..8ed6b25bbf 100644 --- a/docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2 +++ b/docker/prometheus/prometheus-openstack-exporter/Dockerfile.j2 @@ -3,17 +3,40 @@ FROM {{ namespace }}/{{ infra_image_prefix }}prometheus-base:{{ tag }} LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" {% endblock %} +{% import "macros.j2" as macros with context %} + {% block prometheus_openstack_exporter_header %}{% endblock %} -{% block prometheus_openstack_exporter_repository_version %} -ENV prometheus_openstack_exporter_version=1.3.0 -{% endblock %} +{% if base_package_type == 'rpm' %} + {% set prometheus_openstack_exporter_packages = [ + 'git', + 'go', + 'make', + ] %} +{% elif base_package_type == 'deb' %} + {% set prometheus_openstack_exporter_packages = [ + 'build-essential', + 'git', + 'golang-go', + ] %} +{% endif %} + +{{ macros.install_packages(prometheus_openstack_exporter_packages | customizable("packages")) }} {% block prometheus_openstack_exporter_install %} -RUN curl -o /tmp/prometheus_openstack_exporter.tar.gz https://github.com/openstack-exporter/openstack-exporter/releases/download/v${prometheus_openstack_exporter_version}/openstack-exporter-${prometheus_openstack_exporter_version}.linux-{{debian_arch}}.tar.gz \ - && tar xvf /tmp/prometheus_openstack_exporter.tar.gz -C /opt/ \ - && rm -f /tmp/prometheus_openstack_exporter.tar.gz \ - && ln -s /opt/openstack-exporter* /opt/openstack-exporter +ARG prometheus_openstack_exporter_url=https://github.com/stackhpc/openstack-exporter/archive/refs/heads +ARG prometheus_openstack_exporter_version=project-parent-id +ENV GOPATH=/build +RUN mkdir /build \ + && cd /build \ + && curl -o openstack-exporter.tar.gz ${prometheus_openstack_exporter_url}/${prometheus_openstack_exporter_version}.tar.gz \ + && tar xvf openstack-exporter.tar.gz \ + && cd openstack-exporter-${prometheus_openstack_exporter_version} \ + && make common-build \ + && mv openstack-exporter-${prometheus_openstack_exporter_version} openstack-exporter \ + && mkdir /opt/openstack-exporter \ + && install -m 0755 openstack-exporter /opt/openstack-exporter/ \ + && rm -rf /build {% endblock %} {% block prometheus_openstack_exporter_footer %}{% endblock %} diff --git a/kolla/common/config.py b/kolla/common/config.py index cd449a93b3..4b205f48b1 100755 --- a/kolla/common/config.py +++ b/kolla/common/config.py @@ -664,6 +664,10 @@ 'uid': 42404, 'gid': 42404, }, + 'caso-user': { + 'uid': 52400, + 'gid': 52400, + }, 'ceilometer-user': { 'uid': 42405, 'gid': 42405, diff --git a/kolla/image/build.py b/kolla/image/build.py index 45383535d6..20a342eebb 100755 --- a/kolla/image/build.py +++ b/kolla/image/build.py @@ -81,6 +81,7 @@ class Status(Enum): UNBUILDABLE_IMAGES = { 'aarch64': { "bifrost-base", # someone need to get upstream working first + "prometheus-msteams", # no aarch64 binary "prometheus-mtail", # no aarch64 binary "skydive-base", # no aarch64 binary }, diff --git a/releasenotes/notes/prometheus-msteams-27e7f23e29f208b4.yaml b/releasenotes/notes/prometheus-msteams-27e7f23e29f208b4.yaml new file mode 100644 index 0000000000..475d1d7dad --- /dev/null +++ b/releasenotes/notes/prometheus-msteams-27e7f23e29f208b4.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Adds ``prometheus-msteams`` image, which can be used to forward Prometheus + Alertmanager notifications to Microsoft Teams.