Skip to content

rdavid/pulse

Repository files navigation

Pulse

About

Pulse is a client-server network communication project. It creates a connection between a server and a client using containers, and shares the client’s monitoring information with the server. The project is implemented using POSIX-compliant Shell Portable Operating System Interface for uniX, and utilizes the Unix shell framework shellbase.

Objectives

alpine is used as the base image for both the client and the server. The client collects and sends the following data to the server every five seconds:

  • Host uptime

  • Host network interface names and IP addresses

The server stores the client data in a database. After receiving five status updates, the server sends a restart signal, causing the service within the client container to restart.

Build And Start

To build and start the containers with Podman Compose:

# Starts VM.
podman machine start

# Builds both images and start containers.
podman-compose up --build

# Stops and removes containers.
podman-compose down

# Stops VM.
podman machine stop

Test

The project uses Daniel J. Bernstein’s build system redo. You can install Sergey Matveev’s goredo implementation. redo lint applies the following linters to the source files: actionlint, hadolint, reuse, shellcheck, shfmt, typos, yamllint.

License

pulse is copyright David Rabkin and available under a Zero-Clause BSD license.

About

Client-server network communication.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors