System Configuration
Files Paths
Fatbuildr is installed with a vendor configuration file located at
/usr/share/fatbuildr/fatbuildr.ini
. This configuration file must not be
modified as changes would be lost on upgrades.
Parameters can be overriden in site configuration file
/etc/fatbuildr/fatbuildr.ini
. This file is empty by default. All parameters
declared in this file take precedence over the vendor file.
Parameters can be defined with interpolation using Python extended interpolation syntax. |
Parameters
The configuration files have the INI file format, with sections and parameters.
All sections with their parameters are described in the following sub-sections.
dirs
This section controls paths of main directories used by Fatbuildr. It includes the following parameters:
instances
-
Absolute path to directory with instances definitions files.
registry
-
Absolute path to directory for managed artifact registries.
cache
-
Absolute path to directory for cached artifacts.
tmp
-
Absolute path to temporary directory.
daemon
This section controls Fatbuildr daemon generic runtime parameters. It includes the following parameters:
debug
-
Boolean to control
fatbuildrd
daemon debug mode fulldebug
-
Boolean to control
fatbuildrd
daemon full debug mode. In this mode, logs from external libraries are included in daemon logs. When disabled, logs from external libraries are filtered out. Enablingfulldebug
impliesdebug
enabled.
web
This section controls Fatbuildrweb service specific settings. It includes the following parameters:
debug
-
Boolean to control Fatbuildrweb service debug mode.
host
-
Host IP address to which Fatbuildrweb network socket is binded. Special value
0.0.0.0
means all host network interfaces. port
-
TCP port listened by Fatbuildrweb service.
instance
-
The name of Fatbuildr instance served by Fatbuildrweb service. Special value all means all defined instances.
debug , host , port and instance parameters are valid for
Fatbuildrweb running as autonomous service
only. These parameters are ignored when Fatbuildrweb runs as WSGI application.
|
listing
-
Boolean to control if listing of files and browsing in registries folders is allowed.
vendor_templates
-
Absolute path to directory of vendor HTML pages templates.
templates
-
Absolute path to directory of site HTML pages templates.
static
-
Absolute path to directory of static web assets.
vendor_policy
-
Absolute path to the vendor policy file which defines the default permissions to access Fatbuildrweb REST API and HTML endpoints.
policy
-
Absolute path to the side policy file which defines the alternative permissions to access Fatbuildrweb REST API and HTML endpoints.
By default, the file pointed by policy parameter does not exist. In this
case, Fatbuildrweb loads the policy pointed by vendor_policy . If the file
pointed by the policy parameter is created by an administrator, Fatbuildrweb
loads this site policy and the vendor_policy is completely ignored.
|
Please refer to Fatbuildrweb policy management section for more details the access policy and the underlying permissions. |
images
This section controls container images settings. It includes the following parameters:
storage
-
Absolute path to directory for container images.
defs
-
Absolute path to directory with container images definition files and utilities.
formats
-
Comma-separated list of artifacts format supported by this Fatbuildr installation. This can be used to restrict the list of supported formats to a subset of all formats natively supported by Fatbuildr.
create_cmd
-
Command used to create container images.
containers
This section controls container instances settings. It includes the following parameters:
exec
-
Absolute path to executable for running containers.
init_opts
-
Command options passed to container instanciation executable for updating images, creating and update build environments. These options are not used when running commands for other types of tasks (ex: builds)
opts
-
Command options passed to container instanciation executable, for all commands.
seccomp
-
Boolean to control whether Linux seccomp feature is used to filter the syscalls available to containers.
tasks
workspaces
-
Absolute path to directory for tasks working directories.
purge
-
Purge policy of tasks workspaces with its limit. This is a string with the name of the selected policy and the limit value separated by a colon (
:
) (ex:older:7d
).
Please refer to Tasks History Purge page for more details about this configuration parameter and the available purge policies. |
hook
-
Path to executable script or binary that is executed before and after tasks are run.
Please refer to Tasks Hooks page for more details about this configuration parameter. |
registry
This section controls managed artifact registries settings. It includes the following parameters:
conf
-
Absolute path to directory for managed artifact registries.
keyring
This section controls the cryptographic signing keyring settings. It includes the following parameters:
storage
-
Absolute path to directory for cryptographic signing keyrings.
type
-
Algorithm used to generate the keys
size
-
Integer size of keys in bits
expires
-
Duration of keys validity. Special value 0 means the keys never expires. The value can be suffixed with units
w
(weeks),m
(months) ory
(years). The default unit is days. seeder
-
Path to utility used to seed the internal cache of a running
gpg-agent
with keyring passphrase.
tokens
This section controls the JWT tokens settings for HTTP REST API authentication. It includes the following parameters:
storage
-
Absolute path to directory for storing the JWT tokens encoding keys.
duration
-
The numbers of days for which the generated token are valid before expiration.
algorithm
-
The cryptographic algorithm used for signing generated JWT tokens and verifying client tokens. Supported algorithms are HS256, HS384 and HS512.
For more details, please refer to PyJWT library algorithms documentation. |
audience
-
The name of the audience claimed in the payload of generated and accepted JWT tokens.
format:*
All artifacts supported by Fatbuildr have their dedicated section prefixed by
format:
. They contain all parameters to manage the content of container images
specialized for the formats including the build environments (when applicable).
Formats sections include both common and specific parameters. The specific parameters are detailed in following dedicated subsections. The common parameters shared by all formats are the following:
builder
-
Path to artifact builder command in container.
img_update_cmds
-
Command used in container to upgrade image software.
img_create_use_sysusersd
-
Boolean to determine if fatbuildr system user is created with
sysusers.d
configuration file during image bootstrap. If not, the user is create with raw seeds of/etc/passwd
,/etc/group
and/etc/gshadow
.
format:deb
env_path
-
Absolute path to the build environment in the container image.
init_cmds
-
Command used in container to create build environment.
shell_cmd
-
Command used in container to launch an interactive shell in build environment.
exec_cmd
-
Command used in container to execute command in build environment.
exec_tmpfile
-
Boolean to contrat if command to execute in build environment is provided in a temporary file or directly as executable arguments.
env_update_cmds
-
Command used in container to upgrade build environment software.
env_as_root
-
Boolean to control if commands to manage build environments (creation and update) are run as root, instead the user running
fatbuildrd
daemon. env_default_mirror
-
URL of APT mirror used by default to create deb build environments, unless overridden in instance pipelines definitions.
env_default_components
-
Space separated list of APT repository components used by default to create deb build environments, unless overridden in instance pipelines definitions.
prescript_deps
-
Space-separated list of packages installed in build environment before prescripts are run.
format:rpm
env_path
-
Absolute path to the build environment in the container image.
init_cmds
-
Command used in container to create build environment.
shell_cmd
-
Command used in container to launch an interactive shell in build environment.
exec_cmd
-
Command used in container to execute command in build environment.
exec_tmpfile
-
Boolean to contrat if command to execute in build environment is provided in a temporary file or directly as executable arguments.
env_update_cmds
-
Command used in container to upgrade build environment software.
env_as_root
-
Boolean to control if commands to manage build environments (creation and update) are run as root, instead the user running
fatbuildrd
daemon. env_default_modules
-
Space separated list of DNF modules to enable by default in Mock build environments, unless overridden in instance pipelines definitions. By default, this parameter is not defined and no DNF module is enabled.
prescript_deps
-
Space-separated list of packages installed in build environment before prescripts are run.
format:osi
containerized
-
Boolean to control if OSI images are built in container, or directly on
fatbuildrd
daemon host instead. Disabling this parameter help to support more OSI formats such as raw or squashfs images for whichmkosi
utility require access to loop devices.
To build OSI images directly on host, in addition to
For various reasons, |
Default Values
This is the content of the vendor configuration file with all parameters default values:
# This is the vendor configuration file of Fatbuildr. Do not modify! To change
# Fatbuildr configuration parameters, please override these parameters in
# /etc/fatbuildr/fatbuildr.ini
[dirs]
instances = /etc/fatbuildr/instances.d
registry = /var/lib/fatbuildr/registry
cache = /var/cache/fatbuildr
tmp = /var/tmp
[daemon]
debug = no
# When disabled, fatbuildr external libs logs are filtered out. This can be
# enabled to debug or understand behavior of external libs. Enabling fulldebug
# implies debug enabled.
fulldebug = no
[web]
debug = no
# Bind address of the web application. By default, it only listens for incoming
# connections from localhost.
host = localhost
port = 5000
# By default, serve all defined instances
instance = all
# Allow file listing and directory browsing in registries
listing = yes
vendor_templates = /usr/share/fatbuildr/web/templates
templates = /etc/fatbuildr/web/templates
static = /usr/share/fatbuildr/web/static
vendor_policy = /usr/share/fatbuildr/web/policy.acl
policy = /etc/fatbuildr/web/policy.acl
[images]
storage = /var/lib/fatbuildr/images
defs = /usr/share/fatbuildr/images
# List of artifacts formats enabled on this Fatbuildr installation.
formats = rpm,deb,osi
create_cmd = /usr/libexec/fatbuildr/u-mkosi --include {{ definition }} --directory {{ definition.parent }} --output-dir {{ path.parent }} --output {{ path.name }} --cache-dir {{ path.parent }}/.cache-{{ format }} --skeleton-tree {{ skeleton }} --environment FATBUILDR_USER={{ user }} --environment FATBUILDR_GROUP={{ group }} --environment FATBUILDR_UID={{ uid }} --environment FATBUILDR_GID={{ gid }}
[registry]
conf = /usr/share/fatbuildr/registry
[tasks]
workspaces = /var/lib/fatbuildr/workspaces
# Purge policy of tasks history with their workspaces. Several policies are
# available (ex: older, last, each, size). The policy must be associated to a
# limit value separated by a colon (:).
purge = last:100
# Hook to execute before and after tasks are run. This must be the path to an
# executable script or binary.
#hook = /usr/local/bin/fatbuildr-hook
[containers]
# Absolute path to executable for running containers. By default, execute the
# wrapper restricted to fatbuildr system user with CAP_SET{UID,GID} to become
# root:root before launching systemd-nspawn.
exec = /usr/libexec/fatbuildr/u-nspawn
# systemd-nspawn command line options used on creation and update of build
# environments and interactive shell.
init_opts =
# systemd-nspawn command line options.
# Bind-mount stub-resolv.conf on host from systemd-resolved to /etc/resolv.conf
# in container for DNS resolution.
# Disable registration to systemd-machined as recommended in systemd-nspawn(1)
# for containers not running service manager. Also keep fatbuildrd unit scope
# so processes in containers get the resources allocated to fatbuildrd service.
opts = --quiet --resolv-conf=bind-stub --register=no --keep-unit
# Controls whether seccomp is used to filter the list of syscalls available to
# the containers.
seccomp = yes
[keyring]
storage = /var/lib/fatbuildr/keyring
type = rsa
size = 4096
expires = no
seeder = /usr/lib/gnupg/gpg-preset-passphrase
[tokens]
storage = /var/lib/fatbuildr/tokens
# Generated token expire after this duration number of days.
duration = 30
# The cryptographic algorithm used for signing JWT tokens. Supported algorithms
# are HS256, HS384 and HS512.
algorithm = HS256
# The audience claimed in the payload of generated and accepted JWT tokens.
audience = fatbuildr
#
# Formats specifics parameters
#
[format:deb]
builder = /usr/sbin/cowbuilder
env_path = /var/cache/pbuilder/{{ name }}
init_cmds = ${builder} --create --distribution {{ environment }} --mirror {{ mirror }} --components '{{ components }}' --extrapackages passwd --architecture {{ architecture }} --basepath {{ path }}
shell_cmd = ${builder} --login --distribution {{ environment }} --architecture {{ architecture }} --basepath {{ path }}
exec_cmd = ${builder} --execute --distribution {{ environment }} --architecture {{ architecture }} --basepath {{ path }}
exec_tmpfile = yes
img_update_cmds = apt-get update && apt-get --yes upgrade
img_create_use_sysusersd = yes
env_update_cmds = ${builder} --update --basepath {{ path }}
env_as_root = yes
env_default_mirror = http://deb.debian.org/debian
env_default_components = main contrib non-free
prescript_deps = wget ca-certificates
[format:rpm]
builder = /usr/bin/mock
env_path = /var/lib/mock/{{ name }}-bootstrap
init_cmds = /usr/bin/fatbuildr-setup-mockenv {{ name }} {{ base }} perl {{ modules|join(',') }} && ${builder} --init --root={{ name }}
shell_cmd = ${builder} --shell --root={{ name }}
exec_cmd = ${builder} --chroot --root={{ name }} --
exec_tmpfile = no
img_update_cmds = dnf upgrade --assumeyes
img_create_use_sysusersd = no
env_update_cmds = ${builder} --update --root={{ name }}
env_as_root = no
prescript_deps = wget
[format:osi]
builder = /usr/bin/mkosi
img_update_cmds = dnf upgrade --assumeyes
img_create_use_sysusersd = no
containerized = yes