Reusing Terraform code
Reference external public Terraform modules from within Facets modules to reuse common logic like naming and provisioning, plus the Facets Utility Modules.
When common Terraform logic recurs across modules, naming conventions or standardized resource provisioning, abstract it into an external Terraform module and reference it from your Facets modules. That keeps the logic consistent and reusable.
Referencing an external module
Create a standalone Terraform module for the reusable logic and host it in any Terraform-compatible registry or version-controlled repository (GitHub, GitLab, Bitbucket). Reference it from your Facets module with the source attribute:
module "s3_bucket" {
source = "git::https://github.com/your-org/terraform-aws-s3-bucket.git"
version = "1.0.0"
# Additional module inputs
}Here the s3_bucket module is sourced from a public GitHub repository.
Private modules
Facets references public Terraform modules directly. Private modules need extra configuration, so contact Facets support to enable it. For how Terraform resolves module sources, see the Terraform module sources documentation.
Facets Utility Modules
The Facets Utility Modules repository is a collection of reusable Terraform modules that work seamlessly with Facets, encapsulating common patterns and best practices for consistent provisioning.
AWS IAM in modules
Declaratively manage AWS IAM roles and policies in Facets service modules, attaching policies from managed resources and custom policies for unmanaged ones.
Project
A Project is your workspace in Facets: one blueprint and the environments deployed from it. When to create a project, when not to split one, and how Facets keeps large projects manageable.