From 6c8ca0ad2a9fe0bab2033e41c6b056226cf9a856 Mon Sep 17 00:00:00 2001 From: Peter Mikus Date: Wed, 16 Mar 2022 16:42:57 +0100 Subject: feat(dash): Terraform AWS Beanstalk split Signed-off-by: Peter Mikus Change-Id: I6a9f54be0f734cd267c7ea5aa7f9933e04a8e139 --- .../README.md | 41 ++++++++++++++++++++++ .../example/main.tf | 4 +++ .../example/output.tf | 9 +++++ .../example/providers.tf | 3 ++ .../example/variables.tf | 11 ++++++ .../example/versions.tf | 9 +++++ .../main.tf | 21 +++++++++++ .../output.tf | 7 ++++ .../variables.tf | 29 +++++++++++++++ .../versions.tf | 9 +++++ 10 files changed, 143 insertions(+) create mode 100644 fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/README.md create mode 100644 fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/main.tf create mode 100644 fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/output.tf create mode 100644 fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/providers.tf create mode 100644 fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/variables.tf create mode 100644 fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/versions.tf create mode 100644 fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/main.tf create mode 100644 fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/output.tf create mode 100644 fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/variables.tf create mode 100644 fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/versions.tf (limited to 'fdio.infra.terraform/terraform-aws-elastic-beanstalk-application') diff --git a/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/README.md b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/README.md new file mode 100644 index 0000000000..d149d90038 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/README.md @@ -0,0 +1,41 @@ + +## Requirements + +| Name | Version | +|------|---------| +| [terraform](#requirement\_terraform) | >= 1.1.4 | +| [aws](#requirement\_aws) | ~> 4.3.0 | + +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | ~> 4.3.0 | + +## Modules + +No modules. + +## Resources + +| Name | Type | +|------|------| +| [aws_elastic_beanstalk_application.application](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/elastic_beanstalk_application) | resource | + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [application\_description](#input\_application\_description) | Short description of the application. | `string` | `"Beanstalk Application"` | no | +| [application\_name](#input\_application\_name) | The name of the application, must be unique within account. | `string` | `"Beanstalk"` | no | +| [appversion\_lifecycle\_delete\_source\_from\_s3](#input\_appversion\_lifecycle\_delete\_source\_from\_s3) | Whether to delete application versions from S3 source. | `bool` | `false` | no | +| [appversion\_lifecycle\_max\_count](#input\_appversion\_lifecycle\_max\_count) | The max number of application versions to keep. | `number` | `2` | no | +| [appversion\_lifecycle\_service\_role\_arn](#input\_appversion\_lifecycle\_service\_role\_arn) | The service role ARN to use for application version cleanup. If left empty, the `appversion_lifecycle` block will not be created. | `string` | `""` | no | + +## Outputs + +| Name | Description | +|------|-------------| +| [application\_description](#output\_application\_description) | n/a | +| [application\_name](#output\_application\_name) | n/a | + \ No newline at end of file diff --git a/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/main.tf b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/main.tf new file mode 100644 index 0000000000..410d1abc59 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/main.tf @@ -0,0 +1,4 @@ +module "elastic_beanstalk_application" { + source = "../" + application_description = var.application_description +} diff --git a/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/output.tf b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/output.tf new file mode 100644 index 0000000000..290e2a1c5a --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/output.tf @@ -0,0 +1,9 @@ +output "elastic_beanstalk_application_name" { + value = module.elastic_beanstalk_application.application_name + description = "Elastic Beanstalk Application name" +} + +output "elastic_beanstalk_application_description" { + value = module.elastic_beanstalk_application.application_description + description = "Elastic Beanstalk Application description" +} diff --git a/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/providers.tf b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/providers.tf new file mode 100644 index 0000000000..5ff54f0d65 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/providers.tf @@ -0,0 +1,3 @@ +provider "aws" { + region = var.region +} \ No newline at end of file diff --git a/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/variables.tf b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/variables.tf new file mode 100644 index 0000000000..12af1d64c6 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/variables.tf @@ -0,0 +1,11 @@ +variable "region" { + description = "AWS Region." + type = string + default = "us-east-1" +} + +variable "application_description" { + description = "Short description of the application." + type = string + default = "Beanstalk Application" +} diff --git a/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/versions.tf b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/versions.tf new file mode 100644 index 0000000000..af1be4a4e1 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/example/versions.tf @@ -0,0 +1,9 @@ +terraform { + required_providers { + aws = { + source = "hashicorp/aws" + version = ">= 4.3.0" + } + } + required_version = ">= 1.1.4" +} diff --git a/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/main.tf b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/main.tf new file mode 100644 index 0000000000..909d6fca4d --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/main.tf @@ -0,0 +1,21 @@ +locals { + tags = { + "Name" = "${var.application_name}" + "Environment" = "${var.application_name}" + } +} + +resource "aws_elastic_beanstalk_application" "application" { + name = var.application_name + description = var.application_description + tags = local.tags + + dynamic "appversion_lifecycle" { + for_each = var.appversion_lifecycle_service_role_arn != "" ? ["true"] : [] + content { + service_role = var.appversion_lifecycle_service_role_arn + max_count = var.appversion_lifecycle_max_count + delete_source_from_s3 = var.appversion_lifecycle_delete_source_from_s3 + } + } +} diff --git a/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/output.tf b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/output.tf new file mode 100644 index 0000000000..ce7f978e53 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/output.tf @@ -0,0 +1,7 @@ +output "application_name" { + value = aws_elastic_beanstalk_application.application.name +} + +output "application_description" { + value = aws_elastic_beanstalk_application.application.description +} \ No newline at end of file diff --git a/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/variables.tf b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/variables.tf new file mode 100644 index 0000000000..38090c99b5 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/variables.tf @@ -0,0 +1,29 @@ +variable "application_description" { + description = "Short description of the application." + type = string + default = "Beanstalk Application" +} + +variable "application_name" { + description = "The name of the application, must be unique within account." + type = string + default = "Beanstalk" +} + +variable "appversion_lifecycle_service_role_arn" { + description = "The service role ARN to use for application version cleanup. If left empty, the `appversion_lifecycle` block will not be created." + type = string + default = "" +} + +variable "appversion_lifecycle_max_count" { + description = "The max number of application versions to keep." + type = number + default = 2 +} + +variable "appversion_lifecycle_delete_source_from_s3" { + description = "Whether to delete application versions from S3 source." + type = bool + default = false +} diff --git a/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/versions.tf b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/versions.tf new file mode 100644 index 0000000000..66b9c17f9b --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/versions.tf @@ -0,0 +1,9 @@ +terraform { + required_providers { + aws = { + source = "hashicorp/aws" + version = "~> 4.3.0" + } + } + required_version = ">= 1.1.4" +} -- cgit 1.2.3-korg