TractorStackdocs
Docs menu

Docs / Start

How it fits together

Planned design. TractorStack is in development. This page describes how it is designed to work; nothing here is available to install yet. See the roadmap for the status of each part.

This page describes the planned design. TractorStack is in development and none of it is installable yet.

TractorStack is planned as six layers, built from the bottom up. Each layer is handled by one well-known tool, and all of it is described as code in a Git repository the customer keeps. Nothing in the design depends on a cloud service or on InfraTractor’s own servers.

The six layers

LayerWhat it coversTools
L0 Network and siteVLANs, firewall rules, DNS and DHCP, an internal certificate authorityOpenTofu, Ansible
L1 HardwareBIOS and iDRAC/iLO settings, firmware inventory through Redfish, PXE install ExploringAnsible
L2 VirtualizationVirtual machines, disks and networks on Proxmox VE or VMware vSphereOpenTofu
L3 OS and hardeningCIS-style baseline, users and SSH, host firewall, time sync, logging, DockerAnsible
L4 Platform servicesPostgreSQL, RustFS, optional Valkey or Redis, container registry, mirrors, monitoring with Grafana, backupsAnsible, Docker Compose
L5 ApplicationsDocker Compose stacks in stages 1 and 2, Helm charts deployed from Git in stages 3 and 4Docker Compose, Helm

For Proxmox VE the design uses community OpenTofu providers such as bpg/proxmox. For vSphere it uses the hashicorp/vsphere provider. The layers above L2 shouldn’t care which hypervisor is underneath.

One Git repository per environment

Each customer environment is planned to live in a single Git repository. Production and a test environment would each get their own. Everything needed to rebuild the environment is in it, apart from secrets, which are referenced rather than committed.

A planned example layout, not taken from a release:

# planned layout (illustrative)
tofu/          VMs, disks, networks
ansible/       OS hardening, data services,
               Kubernetes install, routine checks
compose/       application stacks (stages 1-2)
k8s/           Helm charts and GitOps apps (stages 3-4)
runbooks/      failover, restore, upgrades

The Ansible inventory is generated from OpenTofu outputs, so a VM created in tofu/ appears in Ansible without anyone typing its address twice. See OpenTofu and Ansible for detail.

How a change flows

No one changes production by hand. The planned flow for every change, from a new VM to a firewall rule, is:

  1. Merge request. Someone edits the repository on a branch in the customer’s self-hosted GitLab and opens a merge request.
  2. Dry run. The pipeline runs tofu plan for infrastructure changes and ansible-playbook --check --diff for configuration changes, and posts the output on the merge request.
  3. Approval. A second person reads the plan, not just the code, and approves the merge request.
  4. Apply. After merge, the same GitLab pipeline runs tofu apply or the playbook for real. From stage 3, Argo CD applies Kubernetes changes from the same repository.

The dry run is the important step. It shows what will be created, changed or destroyed before it happens, and it doubles as a record of who approved what.

Drift is caught the same way. A scheduled tofu plan that shows changes means something was altered outside Git, and the routine checks will report it.

Where state and backups live

Everything stays on-site.

Because backups use plain S3 from the start, a later stage can restore what stage 1 saved. More on this in Backups and Security.

Last updated 25 October 2026 · Questions or corrections: sales@infratractor.com