Spaces as Terraform Backend

October 1, 2017 1.2k views
API Object Storage Ubuntu 16.04

Has anyone figured out how to configure terraform remote state to work with spaces by using its s3 driver. I have got other things that use s3 to work with spaces but have failed with terraform so far

2 Answers

A future release of terraform should support using other s3 compatible backends like Spaces but none of the currently available versions(v0.10.7 is the current latest) will work.

I was able to configure terraform to store remote state in Spaces by building terraform from source and using the config

terraform {
  backend "s3" {
    bucket = "tfstate-bucket"
    key    = "path/terraform.tfstate"
    region = "us-east-1"
    endpoint = "https://nyc3.digitaloceanspaces.com"
    access_key = "redacted"
    secret_key = "redacted"
    skip_credentials_validation = true
    skip_get_ec2_platforms = true
    skip_requesting_account_id = true
    skip_metadata_api_check = true
  }
}

Note the region key is set to a known s3 region. Attempting to use an unknown region still causes terraform to complain

https://github.com/hashicorp/terraform/pull/15553

Works great for me too :) this is the config I used :

terraform {
        required_version = ">= 0.11, < 0.12"
        backend "s3" {
                skip_requesting_account_id = true
                skip_credentials_validation = true
                skip_get_ec2_platforms = true
                skip_metadata_api_check = true
                access_key = "XXXXXXXXX"
                secret_key = "XXXXXXXXXXXXXXXXXXXXXXXXX"
                endpoint = "https://xxx.digitaloceanspaces.com"
                region = "us-east-1"
                bucket = "XXXXXXX" // name of your space
                key = "production/terraform.tfstate"
        }
}
  • endpoint should be in the form of 'https://ams3.digitaloceanspaces.com' ( example for when using ams3 as a region )
  • bucket is the name of your space on digitalocean
  • access_key is the key you'll find on your api page for spaces (https://cloud.digitalocean.com/settings/api/tokens)
  • secret_key is the secret for the key ( not shown on the api page, but you can regenerate )
  • key is the path on your space ( folder structure ) and the file it should save to
Have another answer? Share your knowledge.