Terraform Enterprise vs Maestro Terraform as a Service - Part I.


Maestro team has been constantly monitoring and carefully analyzing offerings and tendencies of the market. Currently, we have noticed, that Terraform Enterprise became the top and promising solution, being in great demand among virtual infrastructure users.

During Maestro earlier and present presales activities, we quite often get questions about how Maestro works with Terraform Enterprise, or whether we have a substitute or replacement of it in our application.

What benefits does Maestro have compared to Terraform Enterprise?

  • VCS Connection
TFE: VCS connection in Terraform Enterprise allows users to write, version, review, collaborate on code. Automate and trigger runs through the connection between Terraform and major VCS providers.
M: Maestro is integrated with GitHub and allows users to work with it as a source for taking Terraform templates. Maestro works not only with a single file but with large amounts of files located in different folders. Folders can contain different modules allowing them to deploy the whole infrastructure in a case when those templates are correctly configured and installed. If required, Maestro can be integrated with any other system of the customer company’s choice.
  • Private Module Registry
TFE: Shares code across the organization. Manages module lifecycle using versions that can be enforced by Sentinel and enable self-service.
M: Maestro allows users to work with modules. By the term “module”, in comparison to the common programming language, we mean functions or methods which can be reused. The module in Terraform is a created template or several files where the configuration to be reused is described. Currently, Terraform Enterprise offers its storage for storing such modules, and GitHub can be used for the same purposes as well. Deploying the Terraform template in the Maestro system means also that we can pull the whole repository where modules can be described, thus we will be able to reuse the code and work with modules automatically.
TFE also supports Sentinel. Sentinel is a proprietary policy engine that allows applying policies at the time a user launches the Terraform template. Maestro also has its Policy Engine, which is executed when launching a Terraform template, or when users perform any other actions. The Maestro Policy Engine also allows to control costs with quotas mechanism and allowing the execution of templates via approval flow.
Maestro also supports self-service, i.e. Terraform templates uploaded to Maestro system by users who created them can be used by other Maestro users via the Catalog and the Stacks pages, where all templates existing in the system are displayed.
  • Workspaces
TFE: Decomposes monolithic infrastructure into logical micro infrastructures. Maps functional responsibilities to individual workspaces and interlink workspace outputs via APIs.
M: In Maestro Workspaces allow decomposing the monolithic infrastructure into some logical parts or microservices, applying the “divide and conquer” algorithm.
Indeed, it is preferable to divide large infrastructures into smaller components. For example, a regular internet shop structure contains at least a database, one or several servers working on certain business logic and a load balancer, accepting requests from users, and distributing requests to specific servers.

Such an infrastructure can be divided into 3 separate independent parts:
  • database, as it does not depend on the rest of the application. If, for example, we update the server or change the settings of the load balancer, the database should not be involved or affected, as far as we can lose data. That database must always be managed separately.
  • servers, which are set by applying a separate Terraform template that describes the server configuration. For example, several instances are deployed, a certain set of software is installed on these instances, as well as the means of configuring the instances – all these actions are performed based on the description in one Terraform template.
  • load balancer, a separate component for which it is required to point out a list of instances among which the load must be distributed.
Each of the three components requires to be described in a separate Terraform template.
Maestro supports Workspaces, storing Workspaces as a new template in Maestro Catalog.

As for Interlink workspaces outputMaestro can work with the same repository. If this is all interconnected and the Terraform template is written using different modules, it is possible to use the outputs from these modules automatically by default.
The option to divide it into different Terraform templates and interlink their outputs to each other currently is not supported.

Proceed with reading the article here: Part II, Part III
;)

Comments

Popular posts from this blog

Maestro Analytics: Essentials at the Fingertips

Maestro: Greeting the Green Dragon

Maestro Orchestrator: Product? SaaS? Framework!