Cloud
Contribute a Demo
Fork, build, submit — your demo here
Contribute a Demo
Have a demo idea? We welcome contributions from Red Hat associates, partners, and the community. This guide walks you through the process of adding a new demo to the Ansible Product Demos repository.
Prerequisites
- A GitHub account with a fork of ansible/product-demos
- Access to demo.redhat.com for testing (Red Hat associates and partners)
- Familiarity with Ansible playbooks and AAP job templates
How to contribute
- Fork and branch – Fork the repo and create a feature branch from
main - Add your playbook – Place it in the appropriate section directory (
cloud/,linux/,windows/,network/,openshift/,satellite/) - Add a setup.yml entry – Register your demo as a job template or workflow in the section’s
setup.yml - Add documentation – Create a markdown file in
<section>/docs/describing your demo - Test on RHDP – Use demo.redhat.com to validate, specifying your branch in the project configuration
- Open a PR – Submit against
ansible/product-demoswith a descriptive title
Pull request guidelines
| Guideline | Details |
|---|---|
| Base branch | Always target main on ansible/product-demos |
| Scope | PRs should not impact more than a single demo section |
| Include setup.yml | Every demo needs a corresponding entry in <section>/setup.yml |
| Include docs | Add a README in <section>/docs/ for the demo catalog |
| Rebase | Rebase against main before submitting to avoid conflicts |
| No external deps | Don’t rely on external infrastructure unless automated or documented in user_message |
| Descriptive titles | PR titles should describe the work, not reference issue numbers |
Adding a job template entry
Copy an existing entry in your section’s setup.yml and adjust the fields:
- name: "Section | Your Demo Name"
job_type: run
inventory: "Ansible Product Demos Inventory"
project: "Ansible Product Demos"
playbook: "section/your_playbook.yml"
credentials:
- AAP Credential
survey_enabled: true
survey_spec:
name: ""
description: ""
spec:
- question_name: "Target hosts"
variable: "_hosts"
type: "text"
required: true
default: "all"
Playbook standards
- Parameterize the target hosts:
hosts: ""
- Use fully qualified collection names (FQCN) for all modules
- Follow existing naming conventions:
Section | Subsection | Demo Name - Add any required roles or collections to
collections/requirements.yml
Testing
Pre-commit hooks run automatically on each commit. To set up locally:
pip install pre-commit
pre-commit install
You will need an Automation Hub token for ansible-lint. Get one from the Red Hat Console and export it:
export ANSIBLE_GALAXY_SERVER_AH_TOKEN=<your-token>