diff --git a/released/terraform-be/README.md b/released/terraform-be/README.md index e2ba32ff..735997fb 100644 --- a/released/terraform-be/README.md +++ b/released/terraform-be/README.md @@ -18,4 +18,4 @@ As mentioned the default backend stores state as a local file on disk. It is sui ### Kubernetes Backend -The [Kubernetes backend](https://developer.hashicorp.com/terraform/language/settings/backends/kubernetes) stores state in a Kubernetes secret and supports state locking using a Lease resource. It allows for secure and collaborative state management in Kubernetes environments. You find a sample technical setup in the directory [k8sasbackend](./k8sasbackend/README.md) +The [Kubernetes backend](https://developer.hashicorp.com/terraform/language/settings/backends/kubernetes) stores state in a Kubernetes secret and supports state locking using a Lease resource. It allows for secure and collaborative state management in Kubernetes environments. You find a sample technical setup in the directory [k8sasbackend](./k8sasbackend/README.md) \ No newline at end of file diff --git a/released/terraform-be/s3asbackend/README.md b/released/terraform-be/s3asbackend/README.md new file mode 100644 index 00000000..a89583b1 --- /dev/null +++ b/released/terraform-be/s3asbackend/README.md @@ -0,0 +1,17 @@ +# Backend as S3 + +The Terraform S3 [backend](https://developer.hashicorp.com/terraform/language/settings/backends/s3) allows you to store the Terraform state files in an Amazon S3 bucket, providing a centralized, reliable, and durable storage solution. + +## Example Configuration + +```terraform +terraform { + backend "s3" { + bucket = "" + key = "terraform/state" + region = "" + encrypt = true + acl = "bucket-owner-full-control" + } +} +``` \ No newline at end of file diff --git a/released/terraform-be/s3asbackend/backend.tf b/released/terraform-be/s3asbackend/backend.tf new file mode 100644 index 00000000..5608ec56 --- /dev/null +++ b/released/terraform-be/s3asbackend/backend.tf @@ -0,0 +1,9 @@ +terraform { + backend "s3" { + bucket = "btpterraformbackend" + key = "terraform/state" + region = "eu-north-1" + encrypt = true + acl = "bucket-owner-full-control" + } +} \ No newline at end of file diff --git a/released/terraform-be/s3asbackend/main.tf b/released/terraform-be/s3asbackend/main.tf new file mode 100644 index 00000000..a394938f --- /dev/null +++ b/released/terraform-be/s3asbackend/main.tf @@ -0,0 +1,26 @@ +############################################################################################### +# Creation of subaccount +############################################################################################### +resource "random_uuid" "uuid" {} + +resource "btp_subaccount" "project" { + name = var.subaccount_name + subdomain = "${var.subaccount_name}-${random_uuid.uuid.result}" + region = lower(var.region) +} + +###################################################################### +# Add entitlement for BAS, Subscribe BAS and add roles +###################################################################### +resource "btp_subaccount_entitlement" "bas" { + subaccount_id = btp_subaccount.project.id + service_name = "sapappstudio" + plan_name = var.bas_plan_name +} + +resource "btp_subaccount_subscription" "bas-subscribe" { + subaccount_id = btp_subaccount.project.id + app_name = "sapappstudio" + plan_name = var.bas_plan_name + depends_on = [btp_subaccount_entitlement.bas] +} diff --git a/released/terraform-be/s3asbackend/provider.tf b/released/terraform-be/s3asbackend/provider.tf new file mode 100644 index 00000000..3a9d1b84 --- /dev/null +++ b/released/terraform-be/s3asbackend/provider.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + btp = { + source = "sap/btp" + version = "~> 1.5.0" + } + } +} diff --git a/released/terraform-be/s3asbackend/variables.tf b/released/terraform-be/s3asbackend/variables.tf new file mode 100644 index 00000000..323f062c --- /dev/null +++ b/released/terraform-be/s3asbackend/variables.tf @@ -0,0 +1,32 @@ +###################################################################### +# Customer account setup +###################################################################### +# subaccount +variable "globalaccount" { + type = string + description = "The globalaccount subdomain." +} +# subaccount +variable "subaccount_name" { + type = string + description = "The subaccount name." +} +# Region +variable "region" { + type = string + description = "The region where the project account shall be created in." + default = "us10" +} +# CLI server +variable "cli_server_url" { + type = string + description = "The BTP CLI server URL." + default = "https://cli.btp.cloud.sap" +} + +# Plan_name update +variable "bas_plan_name" { + description = "BAS plan" + type = string + default = "standard-edition" #For production use of Business Application Studio, upgrade the plan from the `free-tier` to the appropriate plan e.g standard-edition +}