Skip to content

Comparison (Fabric/CFT)

General Philosophy#

Feature Fabric CFT MyOps IAC Library
Target User Organizations interested in forking, maintaining and customizing Terraform modules. Organizations interested in using opinionated, prebuilt Terraform modules. Organizations interested in using opinionated, prebuilt Terraform modules in combination with Terragrunt for dependency management, DRY deployments, and integrated automation.
Configuration Less opinionated allowing end users higher flexibility. Opinionated by default, end users may need to fork if it does not meet their use case. Less opinionated, high flexibility. Multiple tested input options for various use cases, to meet different customer needs.
Extensibility Built with extensibility in mind catering to fork and use patterns. Modules are often lightweight and easy to adopt / tailor to specific use cases. Not built with fork and use extensibility catering primarily to off the shelf consumption. Modules are tailored towards common use cases and extensible via composition. For off the shelf consumption. Modules tailored for GCP and implementing best practices. Modules by default are extended and cover multiple resources and different use cases.
Config customization Prefer customization using variables via objects, tight variable space. Prefer customization using variables via primitives. Various customization options based on Terraform variables or Terragrunt inputs. Aligns with Terragrunt best practices and recommended deployment patterns.

Module Details#

Feature Fabric CFT MyOps IAC Library
Examples Thorough examples for individual modules, and end to end examples composing multiple modules covering a wide variety of use cases from foundations to solutions. Examples for a module mostly focus on that individual module. Composition is often not shown in examples but in larger modules built using smaller modules. Examples focus on individual modules. Library modules are interoperable and can be used in tandem, or independently. Composition examples not shown and part of different offering.
Resources Leaner modules wrapping resources. Heavier root modules that often compose leaner sub modules wrapping resources. Heavy modules wrapping CFT/Fabric modules and Terraform resources.
Resource grouping Generally grouped by logical entities. Generally grouped by products/product areas. Combination of grouping by logical entities and products.

Distribution & Testing#

Feature Fabric CFT MyOps IAC Library
Release Cadence Modules versioned and released together. Modules versioned and released individually. Modules versioned and released individually.
Individual module usage Individual modules consumed directly using Git as a module source.
For production usage, customers are encouraged to “fork and own” their own repository.
Individual repositories consumed via the Terraform registry.
For production/airgapped usage, customers may also mirror modules to a private registry.
Individual modules consumed directly using Git as a module source. Every module has its own versioning published as a git tag. Private Terraform registry on the product roadmap.
Factories Fabric implements several "factories" in modules, where users can drive or automate Terraform via YAML files (projects, subnetworks, firewalls, etc.). CFT does not implement factories and generally show examples usable with variable definitions files (.tfvars). Part of different offering based on GCP best practices and Terragrunt.
Organizational adoption Mono repo cloned into an organizational VCS (or catalog) and separated into individual modules for internal consumption. Individual repos forked (for air gap) or wrapping upstream sources to create individual modules for internal consumption. Mono repo separated into individual modules.
Distribution Distributed via Git/GitHub. Distributed via Git/GitHub and Terraform Registry. Distributed via Git/GitHub.
Testing Every PR performs unit tests on modules, examples, and documentation snippets by evaluating a Terraform plan via Python tftest library. Every PR performs full end-to-end deployment with integration tests using the blueprint test framework. Pre-release development ensures and runs unit tests on modules, examples, and documentation snippets by evaluating a Terraform plan via Python tftest library.