TrademarkTrademark
Features
Documentation

Get Started With Scalr & Terraform CLI on AWS

This tutorial will walk you through the basics of using Scalr for Terraform with Amazon Web Services.
Ryan FeeJune 11, 2021
Get Started With Scalr & Terraform CLI on AWS
Key takeaways
  • This tutorial uses Scalr as a remote backend for Terraform to deploy an EC2 instance on AWS via the Terraform CLI in a few minutes.
  • Setup steps are: link AWS access keys to Scalr as a provider configuration, generate a Scalr API token, and copy your environment name for the Terraform remote backend block.
  • The Scalr token is added to the Terraform CLI configuration file (~/.terraformrc on Unix, terraform.rc in %APPDATA% on Windows) so the CLI can talk to Scalr.
  • Scalr provides centralized run execution, state storage and locking, Open Policy Agent enforcement, and role-based access controls for Terraform.

This tutorial will walk you through the basics of using Scalr as a remote backend for Terraform. Scalr is a Terraform collaboration tool that provides a centralized runtime environment, state file storage and locking, policy enforcement with the Open Policy Agent, and role-based access controls.

Within a couple minutes you will have deployed an EC2 instance using Terraform and Scalr. Please note that while we're taking the example of an EC2 instance here, Scalr can instruct Terraform to deploy any resource it supports.

Prerequisites

To get started, you need to set your AWS access keys as variables in Scalr so that they can be passed along to Terraform. The easiest is to retrieve the access key for the IAM user that will be used to provision infrastructure. If you don't know how to do that, click here. Note that you can also use whatever process you have already implemented for Terraform: Hashicorp Vault, environment variables, …

From the Scalr UI, navigate to the account-level view (see the Scalr documentation for the current navigation).

Navigating to the Scalr account level

Note: The account level is used for admin tasks - adding cloud credentials, connecting vcs providers, managing users and teams, … The environment level is used to manage workspaces. You can read more on this here.

Click on Provider Configurations from the account dashboard. Click on Create Configuration and select the AWS Cloud. Enter a name, the Access Key ID and the Secret Access Key. Click save.

Now that you have registered your credentials within Scalr, click on the Environments tab, then Provider Credentials and link the AWS account you just added to an environment by clicking on the link icon in front of AWS.

Linking AWS provider credentials to a Scalr environment

Get your token from Scalr

Open your user profile in the Scalr UI, find the API access / tokens section, generate an API token, and save it somewhere safe (see the Scalr documentation for the current navigation).

Generating a Scalr API access token

Get your environment name from Scalr

Go back to the environment scope and copy your environment name from the Scalr UI. You'll use this as the organization value in the Terraform remote backend block (Scalr's hierarchy is Account → Environment → Workspace; the Terraform organization field carries the environment name).

Run the Get Started Script or use your own Terraform files

For this step you can decide to use your own Terraform code or use the starter main.tf file that we've built for this tutorial.

If you have a UNIX-based computer and want to use our starter code, open your terminal and run the following script:

bash <(curl https://raw.githubusercontent.com/jeanbaptistebeck/scalr-get-started-aws/main/scalr-get-started-aws.sh)>

It will ask for the Scalr account name you chose when creating your account, the Scalr token you retrieved earlier and a workspace name of your choice. This script creates a main.tf file that will deploy an EC2 instance in the us-east-2 region. It will also append your Scalr token to your ~/.terraformrc file so that the Terraform CLI can talk to your Scalr account.

If you are using your own Terraform files, append the Scalr token to the CLI configuration file.

  • Windows: terraform.rc in %APPDATA% directory
  • Unix/Linux/Mac : ~/.terraformrc
credentials "my-account.scalr.io" {
  token = "<user-token>"
}

Provision the virtual machine

Run terraform apply to provision the EC2 instance. Go to the Scalr UI to check that everything went well. Check that the EC2 instance has been deployed by going to your AWS console.

Destroy the virtual machine

Run terraform destroy from the terminal to remove the EC2 instance we just launched.

Conclusion

Congratulations! You have successfully deployed an instance on AWS using Scalr and the Terraform CLI. Note that you can also provision resources through VCS integration (GitHub, Gitlab, Bitbucket), the Scalr API and the Scalr UI.

From here, invite your teammates and connect a VCS provider.

Using another cloud provider? Check out Get Started With Scalr on Azure or Get Started With Scalr on Google Cloud Platform.

About the author
Ryan Feedirector of platform engineering at Scalr
Ryan Fee is the director of platform engineering at Scalr, with over 15 years of experience improving infrastructure experiences at companies large and small.