BKR(1)
π BKR(1) β the Beaker client, bestie edition π
okay so this is bkr, the Beaker client β and in the classic manpage style it lives under the name BKR(1) in section 1 (Beaker). Think of this page as your group-chat pinned message for the stuff every subcommand shares. The individual subcommands each get their own man page, so don't come for me about missing flags β they're literally in their own docs, iykyk. β¨
πΈ NAME πΈ
bkr β the Beaker client. that's it, that's the name, she's iconic π
π¦ SYNOPSIS π¦
bkr <subcommand> [options] ...
π DESCRIPTION π
so basically bkr gives you a scriptable command-line interface to the Beaker server. no cap, it's the whole point. π«Ά
Here's the tea: the following subcommands are supported. Each subcommand is documented in its own man page. This man page is reserved for common options and features. periodt.
orphan
β Subcommands β
bkr-distro-trees-list(1)-- List Beaker distro treesbkr-distro-trees-verify(1)-- Check Beaker distro trees for problemsbkr-distros-edit-version(1)-- Edit the version of Beaker distrosbkr-distros-list(1)-- List Beaker distrosbkr-distros-tag(1)-- Tag Beaker distrosbkr-distros-untag(1)-- Untag Beaker distrosbkr-group-create(1)-- Create a groupbkr-group-list(1)-- List groupsbkr-group-members(1)-- List members of a groupbkr-group-modify(1)-- Modify a groupbkr-harness-test(1)-- Generate Beaker job to test harness installationbkr-job-cancel(1)-- Cancel running Beaker jobsbkr-job-clone(1)-- Clone existing Beaker jobsbkr-job-comment(1)-- Add a comment to a jobbkr-job-delete(1)-- Delete Beaker jobsbkr-job-list(1)-- List Beaker jobsbkr-job-logs(1)-- Print URLs of Beaker recipe log filesbkr-job-modify(1)-- Modify Beaker jobsbkr-job-results(1)-- Export Beaker job results as XMLbkr-job-submit(1)-- Submit job XML to Beakerbkr-job-watch(1)-- Watch the progress of a Beaker jobbkr-labcontroller-create(1)-- Create a new lab controllerbkr-labcontroller-list(1)-- List Beaker lab controllersbkr-labcontroller-modify(1)-- Modify a lab controllerbkr-list-labcontrollers(1)--bkr-list-systems(1)--bkr-loan-grant(1)-- Grant a loan for a Beaker systembkr-loan-return(1)-- Return a current Beaker system loanbkr-machine-test(1)-- Generate Beaker job to test a systembkr-policy-grant(1)-- Grant permissions in an access policybkr-policy-list(1)-- Lists access policy rules for a systembkr-policy-revoke(1)-- Revoke permissions in an access policybkr-pool-add(1)-- Add systems to a system poolbkr-pool-create(1)-- Create a system poolbkr-pool-delete(1)-- Delete a system poolbkr-pool-list(1)-- List system poolsbkr-pool-modify(1)-- Modify a system poolbkr-pool-remove(1)-- Remove systems from a poolbkr-pool-systems(1)-- List systems in a poolbkr-remove-account(1)-- Remove user accountsbkr-system-create(1)-- Create a systembkr-system-delete(1)-- Delete a Beaker system permanentlybkr-system-details(1)-- Export RDF/XML description of a Beaker systembkr-system-history-list(1)-- Export history of activity for the given systembkr-system-list(1)-- List Beaker systemsbkr-system-modify(1)-- Modify system attributesbkr-system-power(1)-- Control power for a Beaker systembkr-system-provision(1)-- Provision a Beaker systembkr-system-release(1)-- Release a reserved Beaker systembkr-system-reserve(1)-- Manually reserve a Beaker systembkr-system-status(1)-- Return the current status of a systembkr-task-add(1)-- Upload tasks to Beaker's task librarybkr-task-delete(1)-- Delete tasks to Beaker's task librarybkr-task-details(1)-- Export details of a Beaker taskbkr-task-list(1)-- List tasks in Beaker's task librarybkr-update-inventory(1)-- Submits a inventory job for the systembkr-update-openstack-trust(1)-- Update OpenStack Keystone trustbkr-update-prefs(1)-- Update user preferencesbkr-user-modify(1)-- Modify Beaker usersbkr-watchdog-extend(1)-- Extend Beaker watchdog timebkr-watchdog-show(1)-- Show time remaining on Beaker watchdogsbkr-watchdogs-extend(1)-- Extend Beaker watchdogs timebkr-whoami(1)-- Show your Beaker usernamebkr-workflow-installer-test(1)-- DEPRECATED workflow to generate a kickstart for testing Anacondabkr-workflow-simple(1)-- Simple workflow to generate Beaker jobs
π§ Specifying tasks π§
okay this part is lowkey the most useful thing on the whole page. Some bkr subcommands accept one or more <taskspec> arguments. This lets you identify a job, or literally any subcomponent of a job, by its id. The format is:
<type>:<id>
...where <type> is one of these abbreviations, in descending hierarchical order:
Jβ jobRSβ recipe setRβ recipeTβ recipe-taskTRβ task-result
So for example, J:123 might contain RS:456, which might contain R:789, which might contain T:1234 and T:5678. it's giving nesting dolls but make it CI πͺ
This format is also used in the Beaker web UI to identify jobs and their subcomponents. so you'll see it everywhere, bestie β learn it once, slay forever π
β¨ OPTIONS β¨
π Common options π
These options are applicable to all bkr subcommands. universal queen behavior π
--hub <url>β Connect to the Beaker server at the given URL. This overrides theHUB_URLsetting from the configuration file. Heads up though: the URL should not include a trailing slash. don't do it. I'm begging π--insecureβ Skip all SSL certificate validity checks. This lets the client connect to a Beaker server with an invalid, expired, or untrusted SSL certificate. yes this is exactly as spicy as it sounds π₯--username <username>β Authenticate using password authentication, with <username>. If a password is not given using--password, the user is prompted for the password onstdin.
This option overrides the authentication type specified in the configuration file, forcing password authentication to be used. she does not care what your config said π
--password <password>β Authenticate using <password>. This option is only applicable when--usernameis also passed. solo password is a no, they're a package deal π«Ά--proxy-user <username>β Impersonate <username> in order to perform actions on their behalf.
This option can only be used when the authenticating user is a member of a group which has been granted 'proxy_user' permission by the Beaker administrator. Typically this permission is granted to service accounts so that a trusted script can perform actions on behalf of any other Beaker user. it's giving main character energy on someone else's behalf, but like, officially sanctioned β¨
--helpβ Show a brief summary of the command and its available options then exit. the "help I'm lost" button, but make it fashionable π§
π Workflow options π
These options are applicable to bkr workflow subcommands, such as bkr workflow-simple. (yes, they get their own little club πΈ)
--dry-run,--dryrunβ Don't submit the job(s) to Beaker. look but don't touch, iconique π--debugβ Print the generated job XML before submitting it to Beaker. for when you gotta see the receipts π§Ύ--pretty-xml,--prettyxmlβ Pretty-print the generated job XML in a human-readable form (with indentation and line breaks). because raw XML is a jumpscare π--waitβ Watch the newly submitted job(s) for state changes and print them to stdout. The command will not exit until all submitted jobs have finished. Seebkr-job-watch(1). she commits to the bit and stays till the end β--no-wait,--nowaitβ Do not wait on job completion [default]. submit and dip πββοΈ--quietβ Be quiet, don't print warnings. π€«
π¦ Options for selecting distro tree(s): π¦
--family <family>β Run the job with the latest distro in <family> (for example:RedHatEnterpriseLinux6).--tag <tag>β Run the job with the latest distro tagged with <tag>. Combine this with--family. By default theSTABLEtag is used.--distro <name>β Run the job with distro named <name>. If the given name includes a%character, it is interpreted as a SQLLIKEpattern (the%character matches any substring). wildcard slay β¨--variant <variant>β Run the job with distro variant <variant>, for exampleServer. Combine this with--family.--arch <arch>β Use only <arch> in job. By default, a recipe set is generated for each arch supported by the selected distro. This option may be specified multiple times. stack 'em up π§±
πΈ Options for selecting system(s): πΈ
--machine <fqdn>β Run the job on system with <fqdn>. This option will always select a single system, and so does not make sense combined with any other system options. monogamous machine selection π--ignore-system-statusβ Always use the system given by--machine, regardless of its status. no vibe check, we ride π--systype <type>β Run the job on system(s) of type <type>. This defaults toMachinewhich is almost always what you want. Other supported values areLaptop,PrototypeandResource.Laptoptype would be used to select a system from the available laptop computers. Similarly,ResourceandPrototypewould be used in cases where you would want to schedule your job against a system whose type has been set as such. pick your fighter π₯--hostrequire <tag> <operator> <value>β Additional<hostRequires/>for the job. For example,labcontroller=lab.example.comwould become<labcontroller op="=" value="lab.example.com"/>in the job XML.
For more advanced filtering (for example using <device/>) you can also pass raw XML directly to this option. Any value starting with < is parsed as XML and inserted directly into <hostRequires/>.
See job-xml for more information about the <hostRequires/> element. π
--host-filter <name>β Look up the pre-defined host filter with the given name,and add the corresponding XML snippet to<hostRequires/>. (yes that comma-squish is canon, don't @ me π)
You can use pre-defined host filters as a short-hand for complicated or difficult to remember XML snippets. Beaker includes many pre-defined filters for different types of hardware. For example, pass --host-filter=INTEL__FAM15_CELERON to filter for hosts with an Intel Celeron CPU. π₯
Filter definitions are read from the following configuration files:
/usr/lib/python2.x/site-packages/bkr/client/host-filters/*.conf/etc/beaker/host-filters/*.conf~/.beaker_client/host-filter
Files within each directory are processed in lexicographical order. The files contain one filter definition per line, consisting of the filter name and the associated XML snippet separated by whitespace. If the same filter name appears in multiple files, the last definition overrides earlier definitions. last one wins, no takebacks π
--keyvalue <name> <operator> <value>β Run the job on system(s) which have the key <name> set to <value> (for example:NETWORK=e1000).--randomβ Select a system at random. The systems owned by the user are first checked for availability, followed by the systems owned by the user's group and finally all other systems. chaotic neutral system selection π²
π Options for selecting tasks: π
--task <task>β Include <task> in the job. This option may be specified multiple times.--taskfile <filename>β pull in tasks from filename, one task name per line. Lines that don't start with/are literally ignored, so don't come for me when they get skipped π«Ά--package <package>β include the tests for package in the job. You can pass this as many times as you want, stack 'em up β¨--task-type <type>β include tasks of type type in the job. Also repeatable, also stackable, go off π--install <package>β install an extra package after provisioning. This one rides on the/distribution/pkginstalltask. Repeatable too.--kdumpβ turn on kdump, using/kernel/networking/kdump.--ndumpβ turn on ndnc, using/kernel/networking/ndnc.--suppress-install-taskβ skip the installation-checking task entirely.
Okay so by default the very first task in the recipe is /distribution/check-install. Its whole job is to confirm the OS actually installed okay, report back on anything sus, and hoover up info about the installed system for debugging purposes.
Pass this flag only if you genuinely don't want that task quietly inserted at the top of your recipe, bestie.
πΈ Options for job configuration πΈ
--job-owner <username>β submit the job on behalf of username. So the job belongs to username and not to you, the submitting user. Iconic delegation move.
Heads up though: the submitting user must be a submission delegate of username. People add other users as submission delegates on their Preferences page in Beaker's web UI. No delegate status, no submitting for them, fr fr.
--job-group <group>β attach the job to group, which lets other members of that group modify it. Sharing is caring π--whiteboard <whiteboard>β set the job's whiteboard to whiteboard.--taskparam <name>=<value>β set the parameter name to value for every task in the job.
New in version 0.14.3. π
--ignore-panicβ disable kernel panic detection and install failure detection for the recipe. Normally, if a kernel panic shows up on the serial console, or a fatal installer error pops up during installation, the recipe gets aborted. Give this option and those messages just get ignored β no abort. π--reserveβ reserve the system at the end of the recipe so you can keep testing or poking at it. It gets reserved once all tasks finish running, or if the recipe ends abnormally. Seereservesysfor the deets.--reserve-duration <seconds>β when--reserveis on, this controls how long the reservation lasts. Default is86400seconds, aka 24 hours. That's a whole day, bestie π--cc <email>β add email to the cc list for the job(s). Everyone on the cc list gets the job completion notification. Repeatable, obviously.--priority <priority>β set the job priority to priority. Valid values:Low,Medium,Normal,High, orUrgent. Default isNormal.--retention-tag <tag>β set the data retention policy for this job[default: Scratch].--product <product>β associate the job with product, for data retention purposes.
π§ Options for installation π§
--method <method>β installation source method:nfs,http, orftp[default: nfs].--kernel-options <opts>β pass extra kernel options for during installation. The options string gets applied on top of any install-time kernel options that are set by default for the chosen system and distro. Stack it like a filter, not like a replacement β¨--kernel-options-post <opts>β same deal but for after installation. Applied on top of any post-install kernel options set by default for the chosen system and distro.--ks-append <commands>β add extra kickstart commands onto the base kickstart file.--ks-meta <options>β pass kickstart metadata options along when generating the kickstart.--repo <url>β make the yum repo at url available during the initial installation and afterwards. Repeatable! But lowkey mind this: the installation may fail if the repo isn't actually available. So like, double check the URL first π«Ά--repo-post <url>β make the yum repo at url available AFTER the installation. Repeatable. The repo config gets appended to the kickstart's%postsection. And here's the nice part: whether or not the installation succeeds is not affected by whether this repo is available. Chill repo, no pressure π¦--kickstart <filename>β use this kickstart template for installation. Templates are rendered on the server, so check the custom-kickstarts section in Beaker's docs for the templating language and the available variables. You can also pass raw kickstarts β if you don't use any Jinja2 variable substitution syntax, the rendering process just reproduces your template verbatim. Wild but true.
And if your template contains this line:
## kernel_options: <options>
then those specified kernel options get appended to the ones you already defined with --kernel-options. Sneaky, love it π
π Options for multi-host testing π
--clients <number>β use number clients in the job.--servers <number>β use number servers in the job.
π FILES π
On startup, bkr searches these locations, in this order, for its config:
~/.beaker_client/config
/etc/beaker/client.conf
π ENVIRONMENT π
These environment variables affect how bkr operates:
BEAKER_CLIENT_CONF
If set to a non-empty value, this overrides the usual configuration search paths. It has to be the full path to the configuration file β no shortcuts, no relative paths, full path only bestie π
π AUTHOR π
The Beaker team <beaker-devel@lists.fedorahosted.org>
β COPYRIGHT β
2013-2025 Red Hat, Inc.
And that's the whole page, bestie! π«Ά This one's version 29.2, dated May 26, 2025 β go forth and submit jobs with main character energy π
β¨
π¦ where this page comes from
- epel 9: beaker-client 29.2-2.el9 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms