Terraform Provider Quickstart

Installation

If you don't have Terraform installed, follow the official installation guide for your operating system.

View markdown

Configure Terraform to Use the Rabata Provider

Create a new directory for your Terraform configuration and create a file named main.tf with the following content:

terraform {
  required_providers {
    rabata = {
      source  = "rabataio/rabata"
      version = "~> 1.0" # Use the latest version available
    }
  }
}

provider "rabata" {
  region     = "us-east-1" # Replace with your preferred region
  access_key = "your-access-key"
  secret_key = "your-secret-key"
}

Authentication

The Rabata provider offers multiple ways to provide credentials for authentication:

Method 1: Provider Configuration

You can directly specify your credentials in the provider block as shown above. However, it's generally not recommended to hardcode credentials in your Terraform files.

Method 2: Environment Variables

You can use environment variables to provide your Rabata credentials:

export RABATA_ACCESS_KEY="your-access-key"
export RABATA_SECRET_KEY="your-secret-key"
export RABATA_REGION="us-east-1"

Then, your provider configuration can be simplified:

provider "rabata" {}

Method 3: Shared Credentials File

You can also use a shared credentials file, similar to AWS CLI:

provider "rabata" {
  shared_credentials_file = "~/.aws/credentials"
  profile                 = "rabata"
}

Creating Your First Resources

Create a Bucket

To create a bucket in Rabata.io, add the following to your main.tf file:

resource "rabata_s3_bucket" "example_bucket" {
  bucket = "my-example-bucket"
  acl    = "private"
}

Upload an Object to the Bucket

To upload an object to your bucket:

resource "rabata_s3_bucket_object" "example_object" {
  bucket = rabata_s3_bucket.example_bucket.bucket
  key    = "example-object.txt"
  source = "path/to/local/file.txt"
  etag   = filemd5("path/to/local/file.txt")
}

Initialize and Apply

After configuring your Terraform files, initialize the working directory:

terraform init

This will download the Rabata provider plugin. Then, apply your configuration:

terraform plan
terraform apply

Review the planned changes and type yes to apply them.

Advanced Configuration

Custom Endpoints

If you need to use a custom endpoint for the S3 service:

provider "rabata" {
  region     = "us-east-1"
  access_key = "your-access-key"
  secret_key = "your-secret-key"

  endpoints {
    s3 = "https://s3.us-east-1.rabata.io"
  }
}

Path-Style Access

To force path-style addressing (https://s3.us-east-1.rabata.io/BUCKET/KEY) instead of virtual-hosted bucket addressing:

provider "rabata" {
  region             = "us-east-1"
  access_key         = "your-access-key"
  secret_key         = "your-secret-key"
  s3_force_path_style = true
}

Complete Example

Here's a complete example that creates a bucket, sets up a bucket policy, and uploads an object:

terraform {
  required_providers {
    rabata = {
      source  = "rabataio/rabata"
      version = "~> 1.0"
    }
  }
}

provider "rabata" {
  region     = "us-east-1"
  access_key = "your-access-key"
  secret_key = "your-secret-key"
  endpoints {
    s3 = "https://s3.us-east-1.rabata.io"
  }
}

resource "rabata_s3_bucket" "storage_bucket" {
  bucket = "my-storage-bucket"
  acl    = "private"

  tags = {
    Environment = "Production"
    Project     = "Data Storage"
  }
}

resource "rabata_s3_bucket_object" "readme" {
  bucket  = rabata_s3_bucket.storage_bucket.bucket
  key     = "README.md"
  content = "# This is a README file for my bucket"
  content_type = "text/markdown"
}

output "bucket_domain_name" {
  value = rabata_s3_bucket.storage_bucket.bucket_domain_name
}

Next Steps

Now that you've set up your first resources with the Rabata Terraform provider, you can:

Troubleshooting

Common Issues

Provider Installation Fails

If you encounter issues during terraform init, ensure you have the correct provider source:

terraform {
  required_providers {
    rabata = {
      source = "rabataio/rabata"
    }
  }
}

Authentication Errors

If you receive authentication errors, verify that:

  • Your access key and secret key are correct
  • You've specified the correct region
  • Your credentials have the necessary permissions

S3 Endpoint Issues

If you have connectivity issues, try explicitly setting the S3 endpoint:

provider "rabata" {
  endpoints {
    s3 = "https://s3.us-east-1.rabata.io"
  }
}

Need Help?

If you need assistance, contact Rabata.io Support.

AWS Cli Quickstart Python Quickstart