Terraform Scaffolder Frontend Plugin#
The frontend component of the Terraform Scaffolder plugin provides a rich user interface for discovering and configuring Terraform modules within Backstage Software Templates.
Components#
TerraformModuleForm#
The main form component that provides:
- Module selection from multiple sources (Config, Catalog, Registry)
- Version selection for modules with multiple versions
- Dynamic form generation based on module variables
- Type-safe input fields for all Terraform variable types
- Validation of required fields
- Support for sensitive variables
- Display of module documentation
TerraformModuleSchema#
The schema component that:
- Defines the structure of module configurations
- Validates input against Terraform variable types
- Handles complex types like maps and lists
- Provides type definitions for template parameters
- Supports version-specific schema validation
Features#
Module Discovery#
- Multiple module source types:
- Configuration-based modules
- Catalog-based modules
- Registry-based modules
- Rich module metadata display
- Module search and filtering
- Version management and selection
Version Management#
- Support for multiple module versions
- Automatic version sorting and comparison
- Latest version detection
- Version-specific variable handling
- Support for both tags and branches
Private Repository Support#
- Secure access to private GitHub repositories
- Proxy configuration for raw content
- Token-based authentication
- Automatic URL rewriting
Variable Configuration#
- Automatic form generation based on variables.tf
- Support for all Terraform variable types:
- String
- Number
- Boolean
- List
- Map
- Complex objects
- Default value handling
- Required field validation
- Sensitive variable handling
Type Safety#
- Runtime type checking
- Validation before template execution
- Error messages for invalid inputs
- Version-specific type validation
Documentation#
- Inline variable descriptions
- Module documentation display
- Version-specific documentation
- Usage examples
API#
The plugin provides an enhanced client API for interacting with Terraform modules:
interface TerraformScaffolderApi {
getModuleReferences(): Promise<TerraformModuleReference[]>;
getModuleVersions(moduleRef: TerraformModuleReference): Promise<string[]>;
getModuleVariables(moduleRef: TerraformModuleReference, version?: string): Promise<TerraformVariable[]>;
}
Types#
interface TerraformModuleReference {
name: string;
url: string;
refs?: string[];
description?: string;
isRegistryModule?: boolean;
}
interface TerraformVariable {
name: string;
type: string;
description?: string;
default?: any;
required: boolean;
sensitive: boolean;
originalDefinition?: string;
}
Integration#
The plugin integrates with Backstage's Software Templates system through:
- Custom field extensions
- Form validation
- Template parameter processing
- Configuration API integration
- Proxy integration for private repositories
- Catalog integration for module discovery
For installation and configuration details, see the Installation and Configuration guides.