https://github.com/mastodon/terraform-fastly-files-service
Terraform module for creating a fastly service for Mastodon's files backend
https://github.com/mastodon/terraform-fastly-files-service
Last synced: about 2 months ago
JSON representation
Terraform module for creating a fastly service for Mastodon's files backend
- Host: GitHub
- URL: https://github.com/mastodon/terraform-fastly-files-service
- Owner: mastodon
- Created: 2023-04-24T14:05:47.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-03-20T11:01:46.000Z (7 months ago)
- Last Synced: 2025-08-11T15:48:43.944Z (about 2 months ago)
- Language: HCL
- Size: 31.3 KB
- Stars: 5
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Mastodon Terraform - Fastly Service for Mastodon Application File Hosting
Terraform module for creating a service in Fastly for directing traffic towards an external S3-style bucket for hosting mastodon media files (for example, files.mastodon.social).
## Requirements
| Name | Version |
|------|---------|
| [terraform](#requirement\_terraform) | >= 1.0.0 |
| [fastly](#requirement\_fastly) | >= 5.7.1 |## Providers
| Name | Version |
|------|---------|
| [fastly](#provider\_fastly) | >= 5.7.1 |## Modules
No modules.
## Resources
| Name | Type |
|------|------|
| [fastly_service_vcl.files_service](https://registry.terraform.io/providers/fastly/fastly/latest/docs/resources/service_vcl) | resource |## Inputs
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [app\_hostname](#input\_app\_hostname) | Hostname of the mastodon app that this service belongs to. | `string` | n/a | yes |
| [backend\_address](#input\_backend\_address) | Address to use for connecting to the backend. Can be a hostname or an IP address. | `string` | n/a | yes |
| [backend\_name](#input\_backend\_name) | Optional name for the backend. | `string` | `""` | no |
| [backend\_ssl\_check](#input\_backend\_ssl\_check) | Be strict about checking SSL certs when connecting to the backend. | `bool` | `true` | no |
| [datadog](#input\_datadog) | Whether to send logging info to Datadog | `bool` | `false` | no |
| [datadog\_region](#input\_datadog\_region) | The region that log data will be sent to. | `string` | `"EU"` | no |
| [datadog\_service](#input\_datadog\_service) | Datadog service name to use for logs | `string` | `"fastly"` | no |
| [datadog\_token](#input\_datadog\_token) | API key from Datadog. | `string` | `""` | no |
| [force\_tls\_hsts](#input\_force\_tls\_hsts) | Force TLS and HTTP Strict Transport Security (HSTS) to ensure that every request is secure. | `bool` | `true` | no |
| [hostname](#input\_hostname) | Hostname the service points to. | `string` | n/a | yes |
| [hsts\_duration](#input\_hsts\_duration) | Number of seconds for the client to remember only to use HTTPS. | `number` | `31557600` | no |
| [name](#input\_name) | Name of the fastly service (defaults to hostname). | `string` | `""` | no |
| [product\_enablement](#input\_product\_enablement) | Which additional Fastly products to enable for this service. |object({|
brotli_compression = optional(bool, false)
domain_inspector = optional(bool, false)
image_optimizer = optional(bool, false)
origin_inspector = optional(bool, false)
websockets = optional(bool, false)
}){| no |
"brotli_compression": false,
"domain_inspector": false,
"image_optimizer": false,
"origin_inspector": false,
"websockets": false
}
| [shield\_region](#input\_shield\_region) | Which Fastly shield region to use. Should correspond with the shield code. | `string` | n/a | yes |
| [ssl\_hostname](#input\_ssl\_hostname) | Hostname to use for SSL verification (if different from 'hostname'). | `string` | `""` | no |## Outputs
| Name | Description |
|------|-------------|
| [active\_version](#output\_active\_version) | The currently active version of the Fastly Service |
| [cloned\_version](#output\_cloned\_version) | The latest cloned version by the provider |
| [id](#output\_id) | The ID of this resource |