Modules
Platform-engineering guides for Facets modules: core concepts, authoring, form UI, custom actions, versioning, the registry, and CI.
Introduction
How Facets modules turn Terraform into reusable, versioned capabilities with typed inputs and outputs, so developers can self-serve infrastructure.
Module anatomy
This section explains the building blocks of a Facets module. You’ll learn how modules declare what they offer, what they require, and how they connect with others using a shared type system.
Building a Facets Module
This section explains how to turn a module concept into a working Facets module. You'll define the module interface using `facets.yaml`, connect it to Terraform logic, and use the Facets CLI to scaffold and validate your work.
Form UI (X-UI Tags)
Reference for the x-ui-* extension fields in facets.yaml that shape module config forms: conditional display, dynamic dropdowns, layout, and validation.
Defining Module Resource Actions
Define custom resource Actions for any Facets module using containerised Tekton workflows, with auto-injected credentials, RBAC scoping, and UI integration.
Versioning Strategy
How Facets modules version safely: major versions in facets.yaml for breaking changes, soft versioning for compatible updates, and per-version directories.
Module Registry
The Facets Module Registry is a searchable catalogue of system and custom modules in a control plane, with metadata, preview/published states, and usage maps.
Continuous Integration
A GitHub Actions CI workflow for Facets module repos that previews modules on pull requests and publishes them to the control plane on merge to main.
Generate Modules via AI
Use the Facets Module-Generation MCP, a guided CLI tool, to turn a module concept into a working, standards-aligned Terraform module for Facets in minutes.
Secrets Backend Integration
Store secrets in AWS Secrets Manager, Google Cloud Secret Manager, or Vault-compatible OpenBao, with the backend set by your environment's cluster config.
Introduction
How Facets modules turn Terraform into reusable, versioned capabilities with typed inputs and outputs, so developers can self-serve infrastructure.