4 Commits

3 changed files with 42 additions and 7 deletions

View File

@@ -1,14 +1,17 @@
FROM ubuntu:18.04 FROM ubuntu:18.04
RUN apt-get update && apt-get upgrade -y && apt-get install wget gnupg expect -y && \ RUN apt-get update && apt-get install wget gnupg -y && \
wget -O - https://packages.icinga.com/icinga.key | apt-key add - wget -O - https://packages.icinga.com/icinga.key | apt-key add -
RUN printf "deb http://packages.icinga.com/ubuntu icinga-bionic main\ndeb-src http://packages.icinga.com/ubuntu icinga-bionic main" > /etc/apt/sources.list.d/icinga2.list && \ RUN printf "deb http://packages.icinga.com/ubuntu icinga-bionic main\ndeb-src http://packages.icinga.com/ubuntu icinga-bionic main" > /etc/apt/sources.list.d/icinga2.list && \
apt-get update && apt-get install icinga2 -y && \ apt-get update && apt-get --no-install-recommends install icinga2 monitoring-plugins tzdata -y && \
mkdir /run/icinga2 && chown nagios:nagios /run/icinga2 && \ mkdir /run/icinga2 && chown nagios:nagios /run/icinga2 && \
mkdir -p /var/lib/icinga2/certs && \ mkdir -p /var/lib/icinga2/certs && \
chown -R nagios:nagios /var/lib/icinga2/certs chown -R nagios:nagios /var/lib/icinga2/certs && \
apt-get remove -y wget gnupg && \
apt-get autoremove -y && \
apt-get clean
COPY create-satellite.sh /create-satellite.sh COPY create-satellite.sh /create-satellite.sh
COPY run-icinga.sh /run-icinga.sh COPY run-icinga.sh /run-icinga.sh
RUN chmod +x /create-satellite.sh ; chmod +x /run-icinga.sh RUN chmod +x /create-satellite.sh ; chmod +x /run-icinga.sh
EXPOSE 5665
ENTRYPOINT ["/run-icinga.sh"] ENTRYPOINT ["/run-icinga.sh"]

View File

@@ -3,8 +3,27 @@ An easy-to-use Dockerized Icinga2 satellite setup. It could be used as an
Icinga2 agent aswell, but I don't think that would make much sense. The goal Icinga2 agent aswell, but I don't think that would make much sense. The goal
is instead to create an easy-to-deploy satellite Docker. is instead to create an easy-to-deploy satellite Docker.
## Tags
### Main tags
* **0.3, latest**
* **0.2**
* **0.1**
### Alpine tags (currently has some problems)
* **0.1.1-alpine**
* **0.1-alpine**
> **NOTE:** Currently there are some problems with the Alpine image. Use the main images
> instead, tagged *0.n*.
There are two available images for you to choose from. The default ones (0.*n*) are based on
Ubuntu 18.04, with Icinga2 from Icingas official repository. The other images (0.*n*-alpine) is
based on Alpine 3.11, with Icinga2 from Alpines repository. From 0.1.1-alpine and up, the Alpine
image is built on the latest Alpine.
## Environment variables ## Environment variables
Everything is controlled using the follwing environment variables. Everything is controlled using the following environment variables.
* **CN** is the Common Name of the satellite * **CN** is the Common Name of the satellite
* **ZONE** is the zone in which this satellite should be in. If no zone is specified * **ZONE** is the zone in which this satellite should be in. If no zone is specified
@@ -17,15 +36,18 @@ Everything is controlled using the follwing environment variables.
* **TICKET** is the ticket you get from the master (if you are using Director * **TICKET** is the ticket you get from the master (if you are using Director
you find it under the Agent tab of the host). you find it under the Agent tab of the host).
* **ACCEPT_CONFIG** takes a ***y*** or ***n*** value for yes or no. The default is * **ACCEPT_CONFIG** takes a ***y*** or ***n*** value for yes or no. The default is
***n***. ***n***
* **ACCEPT_COMMANDS** takes a ***y*** or ***n*** value for yes or no. The default is * **ACCEPT_COMMANDS** takes a ***y*** or ***n*** value for yes or no. The default is
***n***. ***n***
* **DISABLE_CONFD** takes a ***y*** or ***n*** value for yes or no. The default is * **DISABLE_CONFD** takes a ***y*** or ***n*** value for yes or no. The default is
***y***. This should be a sane default for most people. ***y***. This should be a sane default for most people.
* **LOCAL_TIMEZONE** sets the local timezone of the satellite. For example
*Europe/Stockholm* or *America/New_York*
## Example usage ## Example usage
``` ```
#> docker run -d --name my-icinga-sat \ #> docker run -d --name my-icinga-sat \
-p 5665:5665 \
-e CN=icinga-sat02.local \ -e CN=icinga-sat02.local \
-e PARENTHOST=icinga-master.local \ -e PARENTHOST=icinga-master.local \
-e PARENTCN=icinga-master.local \ -e PARENTCN=icinga-master.local \
@@ -41,6 +63,9 @@ version: "3.8"
services: services:
my-icinga-sat: my-icinga-sat:
image: jackbenny/icinga-satellite image: jackbenny/icinga-satellite
ports:
- 5665:5665
restart:always
environment: environment:
- CN=icinga-sat02.local - CN=icinga-sat02.local
- ZONE=icinga-sat02.local - ZONE=icinga-sat02.local
@@ -51,5 +76,7 @@ services:
- ACCEPT_CONFIG=y - ACCEPT_CONFIG=y
- ACCEPT_COMMANDS=y - ACCEPT_COMMANDS=y
- DISABLE_CONFD=y - DISABLE_CONFD=y
- LOCAL_TIMEZONE=Europe/Stockholm
``` ```

View File

@@ -37,6 +37,11 @@ else
DISABLE_CONF=" " DISABLE_CONF=" "
fi fi
# Set the local timezone
if [ ! -z "$LOCAL_TIMEZONE" ]; then
ln -sf /usr/share/zoneinfo/"$LOCAL_TIMEZONE" /etc/localtime
fi
icinga2 pki new-cert --cn "$CN" \ icinga2 pki new-cert --cn "$CN" \
--key /var/lib/icinga2/certs/"${CN}".key \ --key /var/lib/icinga2/certs/"${CN}".key \
--cert /var/lib/icinga2/certs/"${CN}".crt --cert /var/lib/icinga2/certs/"${CN}".crt