This is a Docker container that holds a Herald app inside. Herald is a puppet report processor that provides a gateway for consuming puppet reports, a REST API and a simple Web app to display them.
More info about the application and how to use it with Puppet are available on repo page: https://github.com/wavesoftware/gem-puppet-herald
A docker image to run Herald app on any Docker host: Linux, Mac or Windows. It utilize PostgreSQL as a database containing Puppet reports. While application stats it will try to migrate database to desired state.
Configuration can be provided by setting environment variables while running the container. Every env variable is prefixed with HERALD_
ENV | DESCRIPTION | Default value |
---|---|---|
HERALD_POSTGRES_HOST | IP host for PostgresSQL. If using container link, set it to postgres named container | postgres |
HERALD_POSTGRES_PORT | PostgresSQL port | 5432 |
HERALD_POSTGRES_USER | User that will be used to connect to database | pherald |
HERALD_POSTGRES_DB_NAME | Database name | pherald |
HERALD_POSTGRES_PASSWORD | Password to database. Remeber to set this variable for security!!! | VGh1IEphbiAyMSAxNDo1NzowOSBDRVQgMjAxNgo |
HERALD_POSTGRES_CREATE_DATABASE | If set to yes script in the container will try to create database and user with provided env variables |
yes |
If you like to run Herald with private docker container execute commands below:
docker run -d --name=postgres postgres
docker run -d --link postgres -p 11303:11303 --name=herald coigovpl/herald
If you like to run Herald with external postgres set appropriate configuration options with environment variables HERALD_*
similar to:
docker run -d \
-e HERALD_POSTGRES_HOST=herald-db.localdomain \
-p 11303:11303 \
--name=herald coigovpl/herald
file (executable) in /etc/docker-apps/herald/container
:
#!/bin/bash -e
action=$1
export THISDIR=$(dirname $(readlink -f $0))
export CONTAINER=herald
HERALD_POSTGRES_PASSWORD=$(cat /etc/herald/passfile)
case $action in
run)
exec docker run --rm \
--name $CONTAINER \
-p 11303:11303 \
-e HERALD_POSTGRES_HOST=herald-db.localdomain \
-e HERALD_POSTGRES_PASSWORD=$HERALD_POSTGRES_PASSWORD \
coigovpl/herald
;;
kill)
docker kill --signal 'SIGINT' $CONTAINER || true
for i in $(seq 1 30); do
running=$(docker inspect --format="{{ .State.Running }}" $CONTAINER || echo false)
if [ "$running" == 'true' ]; then
sleep 1
else
docker rm -f $CONTAINER || true
break
fi
done
;;
*)
echo './container <run|kill>' 1>&2
exit 2
;;
esac
file in: /etc/systemd/system/herald.service
[Unit]
Description=Herald service
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/etc/docker-apps/herald
ExecStart=/etc/docker-apps/herald/container run
ExecStop=/etc/docker-apps/herald/container kill
[Install]
WantedBy=local.target
rake test
This command will run postgres container and link herald container to it. Later on it will make GET requests with curl to check if service is up and running, and if everything is okey it will remove created containers to finish the test
Contributions are welcome!
To contribute, follow the standard git flow of:
- Fork it
- Create your feature or bugfix branch (
git checkout -b feature/my-new-feature
orgit checkout -b bugfix/my-bugfix
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to your fork (
git push origin feature/my-new-feature
) - Create new Pull Request
Even if you can't contribute code, if you have an idea for an improvement please open an issue.