Migrating From Terraform Cloud

Introduction

If you are currently using Terraform Cloud and looking into alternatives, the information below will give you the full picture of how Scalr compares to Terraform Cloud in terms of features and pricing. The guide also covers migration methods ranging from fully automated to a manual process depending on your needs.

Feature Comparison

Pipeline

FeatureScalrTFC/HCP
IaC ToolingTerraform
OpenTofu
Terragrunt
Terraform
Workspace TypesNative Terraform CLI
VCS based (GitOps)
No Code
API-Driven
Native Terraform CLI
VCS based (GitOps)
No Code
API-Driven
Support for Atlantis Style WorkflowsYesNo
Remote Backend OptionsScalr
All supported backend types
TFC Only
Drift DetectionYesYes
Run TriggersYesYes
Ephemeral WorkspacesYesYes
Comments Posted to PRYesNo
Run TasksYes, see list hereYes, see list here

Security

FeatureScalrTFC/HCP
State StorageScalr
GCP Bucket
S3 Bucket
TFC Only
Audit LogsYesYes
OIDC Authentication to cloud providers
(Dynamic Credentials)
YesYes
RBACSystem + Granular User-Defined RolesSystem Only
SAML 2.0 SupportYesYes
SCIM Protocol SupportYesNo
Policy as CodeOPA & CheckovOPA & Sentinel
Self-Hosted AgentsYes, for runs and
VCS connections
Runs only

Integrations

FeatureScalrTFC/HCP
All Major VCS ProvidersYesYes
SlackYes - Notifications & ApprovalsYes - Notification Only
TeamsYes - Notifications & ApprovalsYes - Notification Only
DatadogYes - Audit Logs, Events, & MetricsNo
SplunkNoYes
AWS EventBridgeYes - Audit Logs, Events, & MetricsNo
CheckovYesNo
OPAYesYes
InfracostYesYes
OpenMetricsYesNo
TerragruntYesNo
ServiceNowNoYes

Registries

FeatureScalrTFC/HCP
Module RegistryYesYes
Provider RegistryNo - Coming SoonYes

Reporting

FeatureScalrTFC/HCP
ReportingYesYes
Cross Account Workspace
Dashboard
YesNo
Cross Account Runs
Dashboard
YesNo

Pricing Comparison

ComponentScalrTFC
ConcurrencyStarts at 5, increased free of charge as customers growStandard Tier: 3
Plus Tier: 10
Pricing UnitPer Run - No other factors in the pricePer Resource Under Management
SupportIncluded in price (24x7x365)Tiered Options
Feature GatingAll features included on the paid and free planDifferent feature sets per tier

Scalr Cost Estimation

Interested in migrating to Scalr, but not sure what it will cost you? This script can be used to call the TFC API to get the total number of runs that have ever been executed in your TFC account. Unfortunately, the API doesn't allow for date filters so you will still need to estimate the per-month or year usage.

Scalr does not charge for all runs, see the following as a guideline to understand what runs you will not be charged for:

  • Runs executed based on the drift detector schedule.
  • Runs that use local execution mode in the workspace.
  • Runs that are stopped by an OPA policy in the pre-plan phase.
  • Runs that Checkov stops due to security violations in the pre-plan phase.
  • All runs that fail during the Terraform init due to. A couple examples of this, but not limited to are:
    • Missing folder or var file
    • Terraform code parsing errors
    • Connectivity errors (registries, docker, etc)
    • Broken provider configs errors
  • Runs that fail during the cost-estimate phase.
  • Runs failed due to an internal Scalr error.

Migration Guide

Before you migrate from TFC to Scalr, it's important to understand the terminology of both products so it's easier to understand what a migration would look like:

TFC TermScalr Term
OrganizationEquivalent to a Scalr environment. Environments are logical groupings of workspaces, teams, users, provider configurations, policies, and more.
WorkspacesEquivalent to a Scalr workspace. This is where end users mainly operate by executing, storing state, and more.
Terraform & Environment VariablesEquivalent to Terraform and shell variables.
State FilesSame as a Scalr state file.

Before Migrating

Regardless of the method that is used, the following steps should be taken before starting the migration:

  • Stop any runs or processes that might start runs in TFC to avoid runs executing in two places.
  • Add or amend the remote backend settings in the Terraform configuration files if the Terraform/Tofu CLI will be needed:
terraform {
  backend "remote" {
    hostname = "<account-name>.scalr.io"
    organization = "<scalr-environment-name>"

    workspaces {
      name = "<workspace-name>"
    }
  }
}

NOTE: It is possible to use the cloud backend as well.

Terraform Cloud Migration Module

If you are currently using Terraform Cloud or Enterprise and planning to migrate to Scalr, the quickest way to do this is by using our TFC migration module here. The module will migrate the following objects:

  • Organizations - Will be migrated into Scalr environments.
  • Workspaces - Will be migrated into Scalr workspaces. Only VCS-based workspaces will be migrated. CLI-driven workspaces have to be migrated manually.
  • Workspace variables - Terraform and non-sensitive environment variables will be created as Terraform and shell variables in Scalr.
  • State files - The current workspace state file will be migrated.

See the full description and instructions in the module readme.

Migrating with the Terraform CLI

If you would prefer to migrate workspaces one by one, this can be done with the Terraform CLI:

First, pull down the state from Terraform Cloud:

terraform state pull > terraform.state

Next, get the API token from Scalr:

terraform login <account-name>.scalr.io

Update your Terraform code and add Scalr as the new cloud backend. You will need to add the hostname field:

terraform {
  backend "remote" {
    hostname = "<account-name>.scalr.io"
    organization = "<scalr-environment-name>"

    workspaces {
      name = "<workspace-name>"
    }
  }
}

To initialize Scalr as the backend by running:

terraform init

Run the following to push the state into Scalr:

terraform state push terraform.state