Feature: CDN custom domain resource and data source (#801)
* Feature: CDN custom domain resource and data source * stabilize acceptance tests * add guide * review changes --------- Co-authored-by: Malte Ehrlen <malte.ehrlen@freiheit.com>
This commit is contained in:
parent
0a86417cbb
commit
2d757a93fd
13 changed files with 914 additions and 19 deletions
39
docs/data-sources/cdn_custom_domain.md
Normal file
39
docs/data-sources/cdn_custom_domain.md
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
---
|
||||
# generated by https://github.com/hashicorp/terraform-plugin-docs
|
||||
page_title: "stackit_cdn_custom_domain Data Source - stackit"
|
||||
subcategory: ""
|
||||
description: |-
|
||||
CDN distribution data source schema.
|
||||
~> This resource is in beta and may be subject to breaking changes in the future. Use with caution. See our guide https://registry.terraform.io/providers/stackitcloud/stackit/latest/docs/guides/opting_into_beta_resources for how to opt-in to use beta resources.
|
||||
---
|
||||
|
||||
# stackit_cdn_custom_domain (Data Source)
|
||||
|
||||
CDN distribution data source schema.
|
||||
|
||||
~> This resource is in beta and may be subject to breaking changes in the future. Use with caution. See our [guide](https://registry.terraform.io/providers/stackitcloud/stackit/latest/docs/guides/opting_into_beta_resources) for how to opt-in to use beta resources.
|
||||
|
||||
## Example Usage
|
||||
|
||||
```terraform
|
||||
data "stackit_cdn_custom_domain" "example" {
|
||||
project_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
||||
distribution_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
||||
name = "https://xxx.xxx"
|
||||
}
|
||||
```
|
||||
|
||||
<!-- schema generated by tfplugindocs -->
|
||||
## Schema
|
||||
|
||||
### Required
|
||||
|
||||
- `distribution_id` (String) CDN distribution ID
|
||||
- `name` (String)
|
||||
- `project_id` (String) STACKIT project ID associated with the distribution
|
||||
|
||||
### Read-Only
|
||||
|
||||
- `errors` (List of String) List of distribution errors
|
||||
- `id` (String) Terraform's internal resource identifier. It is structured as "`project_id`,`distribution_id`".
|
||||
- `status` (String) Status of the distribution
|
||||
60
docs/guides/stackit_cdn_with_custom_domain.md
Normal file
60
docs/guides/stackit_cdn_with_custom_domain.md
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
---
|
||||
page_title: "Using STACKIT CDN with your own domain"
|
||||
---
|
||||
# Using STACKIT CDN with your own domain
|
||||
|
||||
## Overview
|
||||
|
||||
This guide outlines the process of creating a STACKIT CDN distribution and configuring it to make use of an existing domain using STACKIT DNS.
|
||||
|
||||
## Steps
|
||||
|
||||
1. **Create a STACKIT CDN and DNS Zone**
|
||||
|
||||
Create the CDN distribution and the DNS zone.
|
||||
|
||||
```terraform
|
||||
resource "stackit_cdn_distribution" "example_distribution" {
|
||||
project_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
||||
config = {
|
||||
backend = {
|
||||
type = "http"
|
||||
origin_url = "mybackend.onstackit.cloud"
|
||||
}
|
||||
regions = ["EU", "US", "ASIA", "AF", "SA"]
|
||||
}
|
||||
}
|
||||
|
||||
resource "stackit_dns_zone" "example_zone" {
|
||||
project_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
||||
name = "My DNS zone"
|
||||
dns_name = "myapp.runs.onstackit.cloud"
|
||||
contact_email = "aa@bb.ccc"
|
||||
type = "primary"
|
||||
}
|
||||
```
|
||||
|
||||
2. **Add CNAME record to your DNS zone**
|
||||
|
||||
If you want to redirect your entire domain to the CDN, you can instead use an A record.
|
||||
```terraform
|
||||
resource "stackit_dns_record_set" "example" {
|
||||
project_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
||||
zone_id = stackit_dns_zone.example_zone.zone_id
|
||||
name = "cdn"
|
||||
type = "CNAME"
|
||||
records = ["${stackit_cdn_distribution.domains[0].name}."]
|
||||
}
|
||||
```
|
||||
|
||||
3. **Create a STACKIT CDN Custom Domain**
|
||||
```terraform
|
||||
# Create a CDN custom domain
|
||||
resource "stackit_cdn_custom_domain" "example" {
|
||||
project_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
||||
distribution_id = stackit_cdn_distribution.example_distribution.distribution_id
|
||||
name = "${stackit_dns_record_set.example.name}.${stackit_dns_zone.dns_name}"
|
||||
}
|
||||
```
|
||||
|
||||
Now, you can access your content on the url `cdn.myapp.runs.onstackit.cloud`.
|
||||
40
docs/resources/cdn_custom_domain.md
Normal file
40
docs/resources/cdn_custom_domain.md
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
---
|
||||
# generated by https://github.com/hashicorp/terraform-plugin-docs
|
||||
page_title: "stackit_cdn_custom_domain Resource - stackit"
|
||||
subcategory: ""
|
||||
description: |-
|
||||
CDN distribution data source schema.
|
||||
~> This resource is in beta and may be subject to breaking changes in the future. Use with caution. See our guide https://registry.terraform.io/providers/stackitcloud/stackit/latest/docs/guides/opting_into_beta_resources for how to opt-in to use beta resources.
|
||||
---
|
||||
|
||||
# stackit_cdn_custom_domain (Resource)
|
||||
|
||||
CDN distribution data source schema.
|
||||
|
||||
~> This resource is in beta and may be subject to breaking changes in the future. Use with caution. See our [guide](https://registry.terraform.io/providers/stackitcloud/stackit/latest/docs/guides/opting_into_beta_resources) for how to opt-in to use beta resources.
|
||||
|
||||
## Example Usage
|
||||
|
||||
```terraform
|
||||
# Create a CDN custom domain
|
||||
resource "stackit_cdn_custom_domain" "example" {
|
||||
project_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
||||
distribution_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
||||
name = "https://xxx.xxx"
|
||||
}
|
||||
```
|
||||
|
||||
<!-- schema generated by tfplugindocs -->
|
||||
## Schema
|
||||
|
||||
### Required
|
||||
|
||||
- `distribution_id` (String) CDN distribution ID
|
||||
- `name` (String)
|
||||
- `project_id` (String) STACKIT project ID associated with the distribution
|
||||
|
||||
### Read-Only
|
||||
|
||||
- `errors` (List of String) List of distribution errors
|
||||
- `id` (String) Terraform's internal resource identifier. It is structured as "`project_id`,`distribution_id`".
|
||||
- `status` (String) Status of the distribution
|
||||
|
|
@ -40,7 +40,7 @@ resource "stackit_cdn_distribution" "example_distribution" {
|
|||
### Read-Only
|
||||
|
||||
- `created_at` (String) Time when the distribution was created
|
||||
- `distribution_id` (String) STACKIT project ID associated with the distribution
|
||||
- `distribution_id` (String) CDN distribution ID
|
||||
- `domains` (Attributes List) List of configured domains for the distribution (see [below for nested schema](#nestedatt--domains))
|
||||
- `errors` (List of String) List of distribution errors
|
||||
- `id` (String) Terraform's internal resource identifier. It is structured as "`project_id`,`distribution_id`".
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue