Skip to content

Container Install

This install guide provides a streamlined installation via a container system such as Docker or Podman. For trial users, this install method minimizes the installation footprint of Digital Rebar.

Note

While RackN does support this installation approach, we strongly recommend using systemd installation for production and multi-site installations.

Prepare Your Environment

This guide will install the Digital Rebar onto a Linux or MacOS system using a downloaded container pre-populated with Digital Rebar. It will attach to port 8092 (and these ports). You must have installed Docker or Podman before starting this installation process.

RackN maintains containers on Dockerhub for stable versions of Digital Rebar. Builds of the latest (aka tip) version may run behind latest.

Note

Some container configurations do not forward UDP packets correctly. This will interfer with DHCP and TFTP services required for PXE provisioning.

Install

To begin, use the RackN install.sh script to start your container. We recommend using process instead simply pulling the container to ensure correct configuration and port mapping.

curl -fsSL get.rebar.digital/stable | bash -s -- --container --version=stable install

The command will pull the stable dr-provision in a container from Dockerhub then verify prerequisites are installed, map the correct ports and create some initial directories and links.

The install script used by our installs has many additional container configuration options including setting the type, name, restart, volume, netns, and more. Users planning to long term installations with containers should carefully review these installation options.

Once the installation script completes, a Digital Rebar endpoint will be running your local system!

Back to Regular Install

At this point, you should finish configuration and continue post-install setup.

Advanced Container Deployments

Installation is performed with the install.sh script with the --container flag and associated options. Here are some of the options (please check the latest installer script for updates/details):

--container             # Force to install as a container, not zipfile
--container-type=<string>
                        # Container install type, defaults to "docker"
--container-name=<string>
                        # Set the "docker run" container name, defaults to "drp"
--container-restart=<string>
                        # Set the Docker restart option, defaults to "always"
                        # options are:  no, on-failure, always, unless-stopped
                        * see: https://docs.docker.com/config/containers/start-containers-automatically/
--container-volume=<string>
                        # Volume name to use for backing persistent storage, default "drp-data"
--container-registry="drp.example.com:5000"
                        # Alternate registry to get container images from, default "index.docker.io"
--container-env="<string> <string> <string>"
                        # Define a space separated list of environment variables to pass to the
                        # container on start (eg "RS_METRICS_PORT=8888 RS_DRP_ID=fred")
                        # see 'dr-provision --help' for complete list of startup variables
--container-netns="<string>"
                        # Define Network Namespace to start container in. Defaults to "host"
                        # If set to empty string (""), then disable setting any network namespace

Warning

If you intend to Upgrade DRP in a container based scenarios, it iS IMPORTANT that you retain a copy of the installation command line flags you use for install time. These flags will have to be specified for the upgrade command to work correctly.

Container based installations will by default name the container drp, and the data backing volume drp-data. You can change these with appropriate flags. The writable data store is located in the backing volume, which helps isolate the binary/service environment from the writable content. See the upgrade for more details.

The dr-provision service binary utilizes environment variables as a mechanism to support customization of the runtime of the service. This also allows the operator to start the container and modify the runtime via the use of passing Environment variables in to the container. Here is an example:

./install.sh install --container --container-restart=always --container-netns=host --container-env="RS_METRICS_PORT=8888"

This example modifies the Metrics port to be changed from the default of 8080 to relocate to port 8888. See dr-provision --help for a list of all environment variable options that can be set.

Clean Up

Once you are finished exploring Digital Rebar Provision in container mode, the system can cleaned or reset by removing container.