Playplane

A visual control plane
for Ansible.

Run, target and trace real Ansible automation through a collaborative interface built around your existing repositories and infrastructure.

docs.stackfly.fr/playplane — quickstart, not yet published
Project
Demo Ansible
Playbook
deploy.yml
Target
web:&production
--check --diff 23 hosts targeted Run
control-node ansible-runner
web01 ok
web02 changed
web03 running
TASK [Install nginx] ***********
changed: [web01]
ok: [web02]
Your Ansible, still your Ansible

Keep your Ansible.
Add a control plane.

Existing repository
ansible.cfginventory/playbooks/roles/group_vars/host_vars/
Playplane
ansible-runner
SSH / WinRM / APIs
Existing infrastructure

No agent on managed machines

The agentless Ansible model stays intact. Nothing is installed on the hosts you already manage.

Your repositories stay central

Local Projects and Git Projects point at the repository you already maintain — layout unchanged.

Your inventories remain usable

Existing inventory files, groups and variables are read as they are.

Real ansible-runner execution

Playbooks run through ansible-runner, with the same flags you use on the command line.

Live execution

See automation as it happens.

Play
Deploy application
Task
Install nginx
control-node executing
web01 changed
web02 ok
web03 unreachable
task sent ok changed failed unreachable
ConsolePlaybookVariablesEvents pause · search · host filter
PLAY [Deploy application] ****************

TASK [Gathering Facts] *******************
ok: [web01]
ok: [web02]

TASK [Install nginx] *********************
changed: [web01]
ok: [web02]

PLAY RECAP *******************************
web01  : ok=4  changed=1  failed=0
web02  : ok=4  changed=0  failed=0
Live stdout, per-host filtering, search, autoscroll and pause. Output is persisted with the run.
Targeting

Know where your automation is going.

A target expression is resolved against the inventory before anything runs, so the set of machines a run will touch is reviewed rather than assumed.

groupshosts--limitSaved Targets
web:&production
Target resolution
23 hosts resolved 21 available 2 unavailable
web01 web02 web03 web04 web11 +18 more
Run 23 hosts · blast radius confirmed
Every way Ansible already targets

Groups, individual hosts and full --limit expressions, including intersections and exclusions, resolve the same way they do on the command line.

Saved Targets

Recurring operations keep a named target instead of a re-typed expression.

Preview before execution

The resolved host list, and which of those hosts are currently reachable, are shown before the run starts.

Inventory

Understand what Ansible sees.

Availability here means Ansible connectivity — whether the host can be reached over its configured connection — not application health.

GroupsHostsSaved Targets
all
├─ web 12 hosts 10 available 2 unavailable
├─ database 4 hosts 4 available
├─ monitoring 2 hosts 2 available
web01 Available
Connection
SSH
Groups
web, production
Last checked
10 seconds ago

Reachability is checked per host and shown beside the group it belongs to, so an unavailable machine is visible before it appears in a run.

Run history

Every run leaves a trail.

History is written as the run happens and kept in PostgreSQL afterwards: what was executed, against which hosts, from which revision, by whom.

Runs
SUCCESS deploy.yml
18.4 s
Productionweb23 hostsmarcelinux
FAILED patch.yml
32.8 s
Productiondatabase4 hostsalice
SUCCESS deploy.yml
11.2 s
Stagingweb6 hostsmarcelinux
Selected run shown at right.
SUCCESS deploy.yml ConsoleHostsEvents
Project
Production
Inventory
production
Revision
8d0fa73
Target
web:&production
Resolved hosts
23
Started by
marcelinux
Duration
18.4 s
Return code
0
A snapshot of the run, not of today

Project, Git revision, target expression and resolved hosts are stored as they were at launch, so a run stays readable after the repository and inventory move on.

Projects

Bring your repositories with you.

Local Project
/workspace/ansible

Point Playplane at a repository already present on the host. Inventory path and playbooks are read from the project as configured.

Git Project
git@example.com:infra/ansible.git
main 8d0fa73

Sync is explicit. Playplane fetches when you ask it to, records the revision it synced, and executes against that known revision. It does not write to your repository.

Teams

Automation without a shared shell.

Users, teams and per-project roles, with session authentication and every run attributed to the person who started it.

Viewer

Read inventory, playbooks and run history.

Operator

Run and cancel automation on permitted projects.

Admin

Manage projects, users, teams and access.

Architecture

Built around the way Ansible already works.

Users reach Playplane over HTTPS in a browser. Playplane reaches infrastructure the way Ansible already does — no Playplane agent runs on managed machines.

Browser
Browser
HTTPS
Playplane
UI·API·Auth / RBAC
PostgreSQL
Runs · Events
Users · Audit
ansible-runner
SSH / WinRM / APIs
Existing infrastructure
One execution path

Everything a run does passes through ansible-runner and the connection methods your hosts already accept. Playplane adds no new path into the infrastructure.

State beside the path, not in it

PostgreSQL holds runs, events, users and audit records. It persists what happened; it is not part of reaching a host.

Deployed next to your automation

Playplane runs where the endpoints are reachable — beside an existing Ansible environment rather than in place of it.

Deployment

Try it locally.
Run it centrally with your team.

Same Playplane. The stack — Playplane, PostgreSQL and ansible-runner in containers — runs on a workstation or on a shared server. Data does not move between them on its own; what carries over is everything you learned.

Local / Personal

Easiest entry point
Laptop / workstation
Playplane
+ PostgreSQL
browser · localhost:3000
Homelab / reachable infrastructure
$ git clone <repository>
$ docker compose up -d
Homelab, evaluation and solo administration.
Try locally

Shared access

Several engineers work against one control plane instead of separate local instances.

Persistent history

Runs stay available independently of any one engineer's workstation.

Central access control

Viewer, Operator and Admin roles are managed in one place, with runs attributed to users.

Network placement

Playplane runs where the automation endpoints are reachable. Credential handling stays server-side as the architecture develops.

playplane · live
Live view — target preview, host execution state and console output from a real Ansible run.
Open infrastructure software

Bring your Ansible automation into view.

Playplane is being built as an open-source, self-hostable project. License published with the repository.