OCP4 Role Reference
ocp4_workload_showroom deploys a complete Showroom instance to an OpenShift 4 cluster using a Helm chart.
It is designed for AgnosticD environments but can also be used in standalone playbooks.
What It Does
When ACTION=provision (or create):
-
Validates required inputs (
guid, content Git repo, apps domain). -
Loads
user_data(including optional per-user entries) viaagnosticd.core.agnosticd_user_data. -
Creates one or more namespaces (
showroom-<guid>orshowroom-<guid>-<user>). -
Renders the Showroom Helm chart with your content and terminal configuration.
-
Applies the rendered manifests to the cluster.
-
Waits for the Showroom pod to be running with all containers ready.
-
Discovers the Showroom
Routeand writes the URL into AgnosticDuser_info.
When ACTION=destroy (or remove): deletes the Showroom namespace(s), letting Kubernetes garbage-collect all resources.
Required Inputs
| Variable | Type | Description |
|---|---|---|
|
string |
Unique identifier for this deployment. Used in namespace names (e.g. |
|
string |
Git repository URL containing Antora content to render. |
|
string |
Apps domain for the OpenShift route (e.g. |
|
string |
Lifecycle action: |
Core Settings
| Variable | Type | Default | Description |
|---|---|---|---|
|
string |
|
Base name for Showroom resources. |
|
string |
|
Base namespace. In multi-user mode each user gets |
|
string |
|
HTML page title for the lab interface. |
Content Configuration
| Variable | Type | Default | Description |
|---|---|---|---|
|
string |
Antora content repository to clone. |
|
|
string |
|
Git branch, tag, or commit to use. |
|
string |
|
Antora playbook file inside the content repo. |
|
string |
|
Container image that clones and renders the Antora content. |
|
boolean |
|
If |
|
string |
|
Override |
|
string |
|
Antora builder image used in the init container. |
Dev Mode
Dev mode adds diagnostic features to Showroom that are useful during content development. Currently, it controls the Antora dev-mode extension, which adds an Attributes reference page and displays unlisted pages in the navigation. Future container-level dev-mode flags will follow the same pattern.
Master Toggle
Set the master toggle to enable dev mode for all Showroom containers at once:
ocp4_workload_showroom_enable_dev_mode: true
Per-Container Toggles
You can also enable dev mode for individual containers without turning on the master toggle.
When the master toggle is true, all per-container dev modes are enabled regardless of their individual settings.
| Variable | Type | Default | Description |
|---|---|---|---|
|
boolean |
|
Master toggle. When |
|
boolean |
|
Enable the Antora dev-mode extension (attribute reference page, unlisted pages in nav). Also enabled when the master toggle is |
Example: Enable Dev Mode from the Catalog
To let users toggle dev mode from the demo.redhat.com catalog form:
__meta__:
catalog:
parameters:
- name: ocp4_workload_showroom_enable_dev_mode
formLabel: Showroom Dev Mode
openAPIV3Schema:
type: boolean
default: false
Or in dev.yaml:
ocp4_workload_showroom_enable_dev_mode: true
Terminal Configuration
| Variable | Type | Default | Description |
|---|---|---|---|
|
string |
|
Terminal type: |
|
string |
|
Container image for the showroom terminal. Variants: |
|
string |
|
Image used when |
|
string |
|
CPU request for the terminal container. |
|
string |
|
Memory request for the terminal container. |
|
string |
|
CPU limit for the terminal container. |
|
string |
|
Memory limit for the terminal container. |
Terminal Types
showroom-
Deploys a containerised terminal with CLI tools pre-installed (oc, kubectl, etc.). Variants are available for different platforms:
-
quay.io/rhpds/openshift-showroom-terminal-ocp:latest— OpenShift -
quay.io/rhpds/openshift-showroom-terminal-rosa:latest— ROSA -
quay.io/rhpds/openshift-showroom-terminal-aro:latest— ARO
-
wetty-
Deploys a Wetty web terminal that can optionally auto-SSH to a bastion host. Set
ocp4_workload_showroom_wetty_ssh_bastion_login: trueto enable auto-login.When auto-login is enabled, the role expects these keys in
user_data:Key Type Description bastion_public_hostnamestring
Hostname or IP of the bastion host.
bastion_ssh_user_namestring
SSH username.
bastion_ssh_passwordstring
SSH password.
bastion_ssh_portinteger
SSH port (defaults to 22).
""(empty string)-
No terminal is deployed. Use with
ocp4_workload_showroom_content_only: truefor documentation-only labs.
Advanced Terminal Layouts
| Variable | Type | Default | Description |
|---|---|---|---|
|
boolean |
|
Show two terminals stacked vertically in a single tab. |
|
boolean |
|
Enable a second, separate terminal tab (ignored when stacked terminals are enabled). |
NoVNC (VNC Desktop Tab)
| Variable | Type | Default | Description |
|---|---|---|---|
|
boolean |
|
Enable a NoVNC tab for connecting to a remote VNC server. |
|
string |
|
VNC server address in |
|
string |
|
VNC password. |
|
string |
|
Container image for the NoVNC client. |
|
string |
|
CPU request. |
|
string |
|
Memory request. |
|
string |
|
CPU limit. |
|
string |
|
Memory limit. |
Helm Chart Settings
| Variable | Type | Default | Description |
|---|---|---|---|
|
string |
Helm chart repository URL. |
|
|
string |
|
Chart name. |
|
string |
|
Chart version or semver range. See releases. |
|
string |
|
Name of the Route/Service to wait for when publishing the URL. |
Zero-Touch and Passthrough Features
| Variable | Type | Default | Description |
|---|---|---|---|
|
string |
nookbag v0.3.0 ZIP URL |
URL of the zero-touch UI bundle (nookbag). |
|
boolean |
|
Enable zero-touch UI elements. |
|
boolean |
|
If |
Remote Cluster Deployment
To deploy Showroom to a different cluster than the one Ansible is running against:
| Variable | Type | Description |
|---|---|---|
|
string |
Remote API URL (e.g. |
|
string |
Bearer token with permissions to create namespaces and workload resources. |
Multi-User Deployments
Multi-user mode is activated automatically when user_data contains a users map.
The role creates one namespace, pod, and route per user:
-
showroom-<guid>-user1.apps.cluster.example.com -
showroom-<guid>-user2.apps.cluster.example.com
Each user’s Showroom instance receives the merged global + per-user data as Antora attributes. See User Data and Variables for details.
Examples
Minimal single-user
ocp4_workload_showroom_content_git_repo: https://github.com/myorg/my-lab.git
ocp4_workload_showroom_content_git_repo_ref: main
Content-only (no terminals)
ocp4_workload_showroom_content_git_repo: https://github.com/myorg/my-lab.git
ocp4_workload_showroom_content_only: true
Wetty with auto-SSH to bastion
ocp4_workload_showroom_content_git_repo: https://github.com/myorg/my-lab.git
ocp4_workload_showroom_terminal_type: wetty
ocp4_workload_showroom_wetty_ssh_bastion_login: true
With NoVNC desktop tab
ocp4_workload_showroom_content_git_repo: https://github.com/myorg/my-lab.git
ocp4_workload_showroom_novnc_enable: true
ocp4_workload_showroom_novnc_vnc_server_hostport: "vnc-server.my-namespace.svc:5900"
ocp4_workload_showroom_novnc_vnc_server_password: "s3cret"
Standalone playbook
- name: Deploy Showroom
hosts: localhost
gather_facts: false
vars:
guid: test-123
ACTION: provision
openshift_cluster_ingress_domain: apps.cluster.example.com
ocp4_workload_showroom_content_git_repo: https://github.com/myorg/my-lab.git
roles:
- agnosticd.showroom.ocp4_workload_showroom
Run with:
ansible-playbook deploy-showroom.yml
ansible-playbook deploy-showroom.yml -e ACTION=destroy # to tear down