ALC Parameters

Base Group Parameters

backend

Type: string
Description: The container backend that will be used for gathering information about the base image operating system.
Example:
backend: podman

registry

Type: string
Description: The hosted service where images will be pulled from. This parameter is optional but defaults to docker.io/library.
Example:
registry: registry.access.redhat.com

image

Type: string
Description: The image that will be pulled from the registry. This image will serve as the base image of the Dockerfile.
Example:
image: ubi8/ubi
Note: If the registry is not specified, image may also take the combined registry-image form:
image: registry.access.redhat.com/ubi8/ubi

initial-commands

Type: list<string>
Description: The commands to be ran immediately after the image has been pulled. This parameter is optional.
Example:
initial-commands:
  - cat /etc/os-release > os_release_info.txt
  - uname -a > system_info.txt

add-files

Type: list<string>
Description: The files that will be copied into the image. Each entry must take the form <source> <destination_directory>. This copies the host <source> TO the image <destination_directory>. This parameter is optional.
Example:
add-files:
  - project_dir /project_dir
  - inputs.txt /data/
Note: The <source> path must be inside the context of the build. Because the first step of a container build is to send the context directory to the container daemon, you cannot use the form - ../something /something.
Note: If the extension of <source> is .tgz or .tar.gz then the file will be unpacked and placed in <destination_directory>.

env-variables

Type: list<string>
Description: The environment variables to be set inside of the image. This parameter is optional.
Example:
env-variables:
  - PROJECT_ROOT=/project_dir
  - PROJECT_INPUTS=/data/inputs.txt
Note: By default, e4s-alc adds the Spack binary, spack, to PATH.

post-base-stage-commands

Type: list<string>
Description: The commands to run after files have been added and environment variables have been set. This parameter is optional.
Example:
post-base-stage-commands:
  - ls /project_dir
  - cat $PROJECT_INPUTS

repull

Type: bool
Description: An optional parameter that can be used when creating a singularity definition file to predetermine if an image should be repulled if that image’s name is found within e4s-alc’s collection of pulled images. Not specifying this parameter will have e4s-alc prompt the user to ask if the image should be pulled again.
Example:
repull: True

System Group Parameters

pre-system-stage-commands

Type: list<string>
Description: The commands to run before starting the System Group. These commands immediately follow post-base-stage-commands and may provide a modular approach to the image build. This parameter is optional.
Example:
pre-system-stage-commands:
  - printenv

certificates

Type: list<string>
Description: The certificates to add into the image. These certificates will be used to establish secure HTTPS connections to servers with certificates issued by globally recognized CA. This parameter is optional.
Example:
certificates:
  - certs/company-root-ca.pem
  - certs/techlabs-ca.crt

os-packages

Type: list<string>
Description: The additional OS packages to install into the image. By default, the image will install the system prerequisites for Spack based on the OS package manager. This parameter is optional.
Example:
os-packages:
  - valgrind
  - neovim

add-remote-files

Type: list<string>
Description: Similar to the parameter, add-files except instead of using a local file as the <source>, the <source> is a URL to a file. This parameter will download the file to the <destination_directory>. This parameter is optional.
Example:
add-remote-files:
  - http://tau.uoregon.edu/tau.tgz /opt/

Note: If the extension of <source> is .tgz or .tar.gz then the file will be unpacked and placed in <destination_directory>.

add-repo

Type: list<string>
Description: The GitHub repos to be cloned into the image. This parameter is optional.
Example:
add-repo:
  - https://github.com/MyProject/packages.git /opt/packages
  - https://github.com/MyProject/packages.git --branch development

post-system-stage-commands

Type: list<string>
Description: The commands to run after the System Group have been completed. This parameter is optional.
Example:
post-system-stage-commands:
  - ls /opt/packages

Spack Group Parameters

spack

Type: bool
Description: Whether the Spack Group should be executed or not. Default is True. Choosing False will result in the image being finalized.
Example:
spack: True

pre-spack-stage-commands

Type: list<string>
Description: The commands to run before starting the Spack Group. These commands immediately follow post-system-stage-commands and may provide a modular approach to the image build. This parameter is optional.
Example:
pre-spack-stage-commands:
  - valgrind --version

spack-version

Type: {int}.{int}.{int} or string
Description: The version of Spack to be installed. Choosing latest will install the latest version of Spack.
Example:
spack-version: 0.20.1

spack-mirrors

Type: list<string>
Description: A list of Spack build caches to be added to Spack. This parameter is optional.
Example:
spack-mirrors:
  - https://cache.e4s.io

spack-check-signature

Type: bool
Description: Whether or not Spack should check the signatures of the packages being downloaded from a Spack Mirror. This parameter is optional.
Example:
spack-check-signature: False

post-spack-install-commands

Type: list<string>
Description: The commands to run after Spack has been installed and the mirrors have been installed. This parameter is optional.
Example:
post-spack-install-commands:
  - spack --version
  - spack mirror list

modules-yaml-file

Type: string
Description: The path to a modules.yaml file that will help configure the layout and usage of module. This parameter is optional as spack already has a default on installation.
Example:
modules-yaml-file: ./modules.yaml

spack-yaml-file

Type: string
Description: The path to the spack.yaml file that will be used to install Spack packages. If this flag is used, e4s-alc will not install packages using the spack-packages parameter. This parameter is optional.
Example:
spack-yaml-file: ./spack.yaml

spack-compiler

Type: string
Description: The name of the compiler to install and the compiler to use for Spack package installation. This parameter is optional but the default compiler will be used if this is not specified.
Example:
spack-compiler: gcc@11.2

spack-packages

Type: list<string>
Description: The list of Spack package to install. This parameter is optional.
Example:
spack-packages:
  - tau@2.32
  - hwloc
  - kokkos

post-spack-stage-commands

Type: list<string>
Description: The commands to be ran after the Spack Group is complete. This parameter is optional.
Example:
post-spack-stage-commands:
  - spack find

Matrix Group Parameters

The Matrix Group parameters are used when multiple Dockerfiles are desired. Using group parameters will create len(registry-image-matrix) * len(spack-version-matrix) * len(spack-compiler-matrix) Dockerfiles.

registry-image-matrix

Type: list<string>
Description: The images that you’d like to create a Dockerfile for. If this parameter is specified, do not specify the neither registry nor image parameter.
Example:
registry-image-matrix:
  - ubuntu:20.04
  - rockylinux:9

spack-version-matrix

Type: list<{int}.{int}.{int} | string>
Description: The Spack versions that you’d like to create a Dockerfile for. If this parameter is specified, do not specify the spack-version parameter.
Example:
spack-version-matrix:
  - latest
  - 0.20.0
  - 0.19.2

spack-compiler-matrix

Type: list<string>
Description: The Spack compilers that you’d like to create a Dockerfile for. If this parameter is specified, do not specify the spack-compiler parameter.
Example:
spack-compiler-matrix:
  - gcc@11.2
  - intel-oneapi-compilers