3 releases
Uses new Rust 2024
new 0.2.2 | May 20, 2025 |
---|---|
0.2.1 | May 20, 2025 |
0.2.0 | May 19, 2025 |
#604 in Command line utilities
58 downloads per month
235KB
5K
SLoC
WildFly Admin Containers
wado
(WildFly admin containers) is a command line tool to build and run WildFly containers of different
versions in different operation modes (domain and standalone). The container images are based on the official WildFly
images but are intended more for the development and testing of WildFly and its management tools (CLI and console).
The container names and published ports follow default values based on the WildFly version.
Installation
Precompiled binaries are available for macOS, Linux, and Windows.
Brew
brew tap hpehl/tap
brew install wado
Cargo
cargo install wado
Shell Completions
The repository contains shell completions for bash, fish, zsh, elvish, and PowerShell. They're installed automatically by brew. To install them manually, follow these steps:
Bash
wget https://github.com/hpehl/wado/raw/main/completions/wado.bash -O /etc/bash_completion.d/wado
source /etc/bash_completion.d/wado
Zsh
wget https://github.com/hpehl/wado/raw/main/completions/_wado -O /usr/local/share/zsh/site-functions/_wado
autoload -U compinit && compinit
autoload -U _wado
Fish
wget https://github.com/hpehl/wado/raw/main/completions/wado.fish -O ~/.config/fish/completions/wado.fish
Elvish
wget https://github.com/hpehl/wado/raw/main/completions/wado.elv -O ~/.elvish/lib/wado.elv
PowerShell
Invoke-WebRequest -Uri https://github.com/hpehl/wado/raw/main/completions/_wado.ps1 -OutFile "$HOME\.config\powershell\_wado.ps1"
. "$HOME\.config\powershell\_wado.ps1"
Versions
Most commands require a WildFly version expression. Version expressions are either short versions, multipliers, ranges, enumerations, or a combination of them. They follow this BNF:
<expression> ::= <expression> "," <element> | <element>
<element> ::= <multiplier> "x" <range> | <multiplier> "x" <short_version> | <range> | <short_version>
<range> ::= <short_version> ".." <short_version> | ".." <short_version> | <short_version> ".." | ".."
<multiplier> ::= <nonzero_number> | <two_digit_number>
<short_version> ::= <major> | <major> "." <minor>
<major> ::= <two_digit_number> | <three_digit_number>
<minor> ::= <nonzero_number> | <two_digit_number>
<three_digit_number> ::= <nonzero_number> <number> <number>
<two_digit_number> ::= <nonzero_number> <number>
<number> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
<nonzero_number> ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
Examples
- 10
- 26.1
- 3x35
- 23..33
- 25..
- ..26.1
- ..
- 5x33..35
- 20,25..29,2x31,3x32,4x33..35
All supported versions are listed here.
Images
The images are based on the official WildFly images, are hosted at https://quay.io/organization/wado, and come in three variants:
- Standalone: quay.io/wado/wado-sa
- Domain controller: quay.io/wado/wado-dc
- Host controller: quay.io/wado/wado-hc
Each image contains tags for all supported versions.
Image Modifications
The images are based on the default configuration (subsystems, profiles, server groups, socket bindings et al.) of the corresponding version. Unless specified otherwise, the images use these configuration files to start WildFly:
- Standalone:
standalone.xml
- Domain controller:
domain.xml
andhost-primary.xml
- Host controller:
domain.xml
andhost-secondary.xml
All images add a management user admin:admin
and allowed origins
for
- http://localhost:1234 (used by console dev mode)
- http://localhost:8888 (used by console dev mode)
- http://localhost:9090 (used by HAL standalone)
- http://hal.github.io (latest online console)
- https://hal.github.io (latest online console)
Domain and host controller images are changed so that no servers are configured.
Containers
Naming
The default name for containers is wado-<type>-<version>[-index]
- Type:
sa|dc|hc
- standalone, domain or host controller - Version:
<major><minor>
- Index: If multiple containers of the same version and type are used, a zero-based index is added to the name.
Ports
If not specified otherwise, the standalone and domain controller containers publish their HTTP and management ports based on the WildFly version:
- 8080 → 8
<major><minor>
- 9900 → 9
<major><minor>
So for WildFly 34, the port mappings are 8340 and 9340, and for WildFly 26.1, the port mappings are 8261 and 9261. If multiple containers of the same version are used, the port is increased by one from the second container onwards.
wado start 26.1,28..30,2x32,3x35
Version | Name | HTTP | Management |
---|---|---|---|
26.1 | wado-sa-261 | 8261 | 9261 |
28 | wado-sa-280 | 8280 | 9280 |
29 | wado-sa-290 | 8290 | 9290 |
30 | wado-sa-300 | 8300 | 9300 |
32 | wado-sa-320-0 | 8320 | 9320 |
32 | wado-sa-320-1 | 8321 | 9321 |
35 | wado-sa-350-0 | 8350 | 9350 |
35 | wado-sa-350-1 | 8351 | 9351 |
35 | wado-sa-350-2 | 8352 | 9352 |
Commands
[!IMPORTANT] Most commands require
podman
to be present withdocker
as a fallback. Theconsole
command opens the default web browser and thecli
command requires a JVM.
Currently, the following commands are supported:
Command line tool to build and run WildFly containers in different versions and operation modes.
Usage: wado <COMMAND>
Commands:
build Build WildFly images
start Start a standalone server
stop Stop a standalone server
dc Start and stop a domain controller
hc Start and stop a host controller
topology Start and stop a topology defined as YAML
ps List running images
console Open the management console
cli Connect to the CLI
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
Build
If not specified otherwise, the build command builds standalone, domain, and host controller images based on the official WildFly images. The images contain specific modifications and a management user with a predefined username and password.
Predefined images for all supported versions are available at https://quay.io/organization/wado. If you want to change the username and password, you can build your own local image.
Build WildFly images
Usage: wado build [OPTIONS] <wildfly-version>
Arguments:
<wildfly-version> A single WildFly version or version range
Options:
-u, --username <username> The username of the management user [default: admin]
-p, --password <password> The password of the management user [default: admin]
--standalone Build standalone images only
--domain Build domain controller and host controller images only
--chunks <chunks> Build the images in chunks of this size. If not specified, the images are built in one go.
-h, --help Print help
-V, --version Print version
Examples
wado build 34
wado build 34 --username alice --password "Admin#70365"
wado build 10,23,34 --standalone
wado build 20..29 --domain
wado build 10,20..29,34
wado build .. --chuncks 5
Standalone
Start
Start a standalone server
Usage: wado start [OPTIONS] <wildfly-version> [-- [wildfly-parameters]...]
Arguments:
<wildfly-version> A single WildFly version or version range
[wildfly-parameters]... Parameters passed to the standalone server
Options:
-n, --name <name> The name of the standalone server [default: wado-sa-<major><minor>].
Not allowed when multiple versions are specified.
-p, --http <http> The published HTTP port [default: 8<major><minor>].
Not allowed when multiple versions are specified.
-m, --management <management> The published management port [default: 9<major><minor>].
Not allowed when multiple versions are specified.
-o, --offset <offset> The offset added to the published HTTP and management ports.
Not allowed when multiple versions are specified.
--operations <operations> A comma seperated list of operations to bootstrap the standalone server.
Can be provided multiple times.
--cli <cli> A file with operations to bootstrap the standalone server
-h, --help Print help
-V, --version Print version
Examples
wado start 34
wado start 3x34
wado start 30..35
wado start 34 --name foo
wado start 34 --name bar --offset 100
wado start 34 --http 8080 --management 9990
wado start 34 --operations "/subsystem=logging/console-handler=CONSOLE:write-attribute(name=level,value=DEBUG)"
wado start 34 --offset 100 -- --server-config=standalone-microprofile.xml
Stop
Stop a standalone server
Usage: wado stop [OPTIONS] [wildfly-version]
Arguments:
[wildfly-version] A single WildFly version or version range
Options:
-n, --name <name> The name of the standalone server [default: wado-sa-<major><minor>]
-a, --all Stop all running standalone servers. If specified with a version,
stop all running standalone servers of that version.
-h, --help Print help
-V, --version Print version
Examples
wado stop 34
wado stop 30..35
wado stop 34 --name foo
wado stop 34 --all
wado stop --all
Domain
Domain Controller
Start
Start a domain controller
Usage: wado dc start [OPTIONS] <wildfly-version> [-- [wildfly-parameters]...]
Arguments:
<wildfly-version> A single WildFly version or version range
[wildfly-parameters]... Parameters passed to the domain controller
Options:
-n, --name <name> The name of the domain controller [default: wado-dc-<major><minor>].
Not allowed when multiple versions are specified.
-p, --http <http> The published HTTP port [default: 8<major><minor>].
Not allowed when multiple versions are specified.
-m, --management <management> The published management port [default: 9<major><minor>].
Not allowed when multiple versions are specified.
-o, --offset <offset> The offset added to the published HTTP and management ports.
Not allowed when multiple versions are specified.
-s, --server <server> Manage servers of the domain controller.
Servers are specified as a comma seperated list of <name>[:<server-group>][:<offset>][:start].
The option can be specified multiple times.
<name> The name of the server. This part is mandatory and must be first.
All other parts are optional.
<server-group> The name of the server group. Allowed values are 'main-server-group' or 'msg',
and 'other-server-group' or 'osg'. If not specified, 'main-server-group' is used.
<offset> The port offset. If not specified, 100 is used from the second server onwards.
start Whether to start the server.
--operations <operations> A comma seperated list of operations to bootstrap the domain controller.
Can be provided multiple times.
--cli <cli> A file with operations to bootstrap the domain controller
-h, --help Print help
-V, --version Print version
Examples
wado dc start 34
wado dc start 3x34
wado dc start 30..35
wado dc start 34 --name foo
wado dc start 34 --name bar --offset 100
wado dc start 34 --http 8080 --management 9990
wado dc start 34 --server s1:start
wado dc start 35 --server s1,s2,s3,s4:osg,s5:osg
wado dc start 34 --server s1:start,s2,s3 --server s4:osg:start,s5:osg,s6:osg
wado dc start 34 --name dc \
--server server-one:main-server-group:start \
--server server-two:main-server-group:10 \
--server server-three:other-server-group:20
Stop
Stop a domain controller
Usage: wado dc stop [OPTIONS] [wildfly-version]
Arguments:
[wildfly-version] A single WildFly version or version range
Options:
-n, --name <name> The name of the domain controller [default: wado-dc-<major><minor>]
-a, --all Stop all running domain controllers. If specified with a version,
stop all running domain controllers of that version.
-h, --help Print help
-V, --version Print version
Examples
wado dc stop 34
wado dc stop 30..35
wado dc stop 34 --name foo
wado dc stop 34 --all
wado dc stop --all
Host Controller
Start
Start a host controller
Usage: wado hc start [OPTIONS] <wildfly-version> [-- [wildfly-parameters]...]
Arguments:
<wildfly-version> A single WildFly version or version range
[wildfly-parameters]... Parameters passed to the domain controller
Options:
-n, --name <name>
The name of the host controller [default: wado-hc-<major><minor>].
Not allowed when multiple versions are specified.
-d, --domain-controller <domain-controller>
The name of the domain controller [default: wado-dc-<major><minor>].
Required if different versions are specified.
-u, --username <username>
The username to connect to the domain controller [default: admin]
-p, --password <password>
The password to connect to the domain controller [default: admin]
-s, --server <server>
Manage servers of the host controller.
Servers are specified as a comma seperated list of <name>[:<server-group>][:<offset>][:start].
The option can be specified multiple times.
<name> The name of the server. This part is mandatory and must be first.
All other parts are optional.
<server-group> The name of the server group. Allowed values are 'main-server-group' or 'msg',
and 'other-server-group' or 'osg'. If not specified, 'main-server-group' is used.
<offset> The port offset. If not specified, 100 is used from the second server onwards.
start Whether to start the server.
--operations <operations>
A comma seperated list of operations to bootstrap the host controller.
Can be provided multiple times.
--cli <cli>
A file with operations to bootstrap the host controller
-h, --help
Print help
-V, --version
Print version
Examples
wado hc start 34
wado hc start 3x34
wado hc start 30..35 --domain-controller dc
wado hc start 34 -n foo -d dc -u alice -p "Admin#70365"
wado hc start 34 --server s1
wado hc start 3x34 --server s1,s2,s3:osg
wado hc start 35 --name hc \
--server server-one:main-server-group:start \
--server server-two:main-server-group:10 \
--server server-three:other-server-group:20
Stop
Stop a host controller
Usage: wado hc stop [OPTIONS] [wildfly-version]
Arguments:
[wildfly-version] A single WildFly version or version range
Options:
-n, --name <name> The name of the host controller [default: wado-hc-<major><minor>]
-a, --all Stop all running host controllers. If specified with a version,
stop all running host controllers of that version.
-h, --help Print help
-V, --version Print version
Examples
wado hc stop 34
wado hc stop 30..35
wado hc stop 34 --name foo
wado hc stop 34 --all
wado hc stop --all
Topology
[!WARNING] The topology commands are not yet implemented. You can work around with the
dc
andhc
commands though:wado dc start 35 -n dc -s s1,s2,s3,s4:osg,s5:osg wado hc start 32,33,2x35 -d dc -s s1,s2,s3:osg wado console 35
Open http://localhost:9350/console/index.html#runtime;path=domain-browse-by~topology
Start
Start a topology
Usage: wado topology start <setup>
Arguments:
<setup> The topology setup
Options:
-h, --help Print help
-V, --version Print version
Stop
Stop a topology
Usage: wado topology stop <setup>
Arguments:
<setup> The topology setup
Options:
-h, --help Print help
-V, --version Print version
The topology setup is a YAML file like this:
version: 34
hosts:
- name: dc
domain-controller: true
- name: host1
servers:
- name: server-one
group: main-server-group
auto-start: true
- name: server-two
group: main-server-group
offset: 100
- name: server-three
group: other-server-group
offset: 200
- name: server-four
group: other-server-group
offset: 300
- name: host2
version: 33
servers:
- name: server-one
group: main-server-group
- name: server-two
group: main-server-group
offset: 100
- name: server-three
group: other-server-group
offset: 200
- name: host3
servers:
- name: server-one
group: main-server-group
- name: server-two
group: other-server-group
offset: 100
- name: server-three
group: other-server-group
offset: 200
Images
List all available standalone, domain and host controller images
Usage: wado images
Options:
-h, --help Print help
-V, --version Print version
PS
List running standalone, domain and host controller containers
Usage: wado ps [OPTIONS]
Options:
--standalone List standalone containers only
--domain List domain controller and host controller containers only
-h, --help Print help
-V, --version Print version
Management Clients
Console
Open the management console
Usage: wado console [OPTIONS] [wildfly-version]
Arguments:
[wildfly-version] A single WildFly version or version range.
If omitted the console is opened for all running standalone and domain controller containers.
Options:
-n, --name <name> The name of the standalone server or domain controller [default: wado-sa|dc-<major><minor>].
Not allowed when multiple versions are specified.
-m, --management <management> The published management port. Not allowed when multiple versions are specified.
-h, --help Print help
-V, --version Print version
Examples
wado console
wado console 34
wado console 30..35
wado console 34 --management 9990
CLI
If not already present, this command downloads the wildfly-cli-client.jar
and jboss-cli.xml
of the specified version
to the $TMPDIR
.
Connect to the CLI
Usage: wado cli [OPTIONS] [wildfly-version] [-- [cli-parameters]...]
Arguments:
[wildfly-version] A single WildFly version.
Can be omitted if only one standalone or domain controller is running.
[cli-parameters]... Parameters passed to the CLI
Options:
-n, --name <name> The name of the standalone server or domain controller [default: wado-sa|dc-<major><minor>].
Not allowed when multiple versions are specified.
-m, --management <management> The published management port
-u, --username <username> The username to connect to the CLI [default: admin]
-p, --password <password> The password to connect to the CLI [default: admin]
-h, --help Print help
-V, --version Print version
Examples
wado cli
wado cli 34
wado cli 34 -- --command "/subsystem=logging/console-handler=CONSOLE:write-attribute(name=level,value=DEBUG)"
Dependencies
~19–36MB
~573K SLoC