feat(terraform): Refactor application version deploy 12/38012/4
authorpmikus <peter.mikus@protonmail.ch>
Wed, 25 Jan 2023 12:54:28 +0000 (12:54 +0000)
committerPeter Mikus <peter.mikus@protonmail.ch>
Wed, 25 Jan 2023 15:12:17 +0000 (15:12 +0000)
Signed-off-by: pmikus <peter.mikus@protonmail.ch>
Change-Id: I065a018745a82762c816de96d8a69116416aa0ce

csit.infra.dash/do_release.sh
fdio.infra.terraform/terraform-aws-elastic-beanstalk-application-version/main.tf
fdio.infra.terraform/terraform-aws-elastic-beanstalk-application-version/output.tf
fdio.infra.terraform/terraform-aws-elastic-beanstalk-application-version/variables.tf
fdio.infra.terraform/terraform-aws-elastic-beanstalk-application-version/versions.tf
fdio.infra.terraform/terraform-aws-elastic-beanstalk-application/versions.tf
fdio.infra.terraform/terraform-aws-fdio-csit-dash-app-base/main.tf
fdio.infra.terraform/terraform-aws-fdio-csit-dash-app-base/output.tf
fdio.infra.terraform/terraform-aws-fdio-csit-dash-app-base/variables.tf
fdio.infra.terraform/terraform-aws-fdio-csit-dash-app-base/versions.tf

index e4d7e3a..63aff04 100755 (executable)
@@ -11,3 +11,19 @@ find . -type d -name "__pycache__" -exec rm -rf "{}" \;
 find . -type d -name ".webassets-cache" -exec rm -rf "{}" \;
 zip -r ../app.zip .
 popd
+
+pushd "../fdio.infra.terraform/"
+pushd "terraform-aws-fdio-csit-dash-app-base"
+export BUILD_ID=41
+export TF_VAR_application_version="${BUILD_ID-}"
+export TF_LOG=INFO
+terraform validate
+terraform init
+terraform apply -no-color -auto-approve
+application_version="$(terraform output application_version)"
+popd
+popd
+
+#aws --region eu-central-1 elasticbeanstalk update-environment \
+#    --environment-name fdio-csit-dash-env \
+#    --version-label "${application_version}"
index 4a9f473..ace3aeb 100644 (file)
@@ -1,7 +1,5 @@
 locals {
-  bucket = "${var.application_name}-bucket"
-  key    = "${var.application_name}.zip"
-  source = "app.zip"
+  key = "${var.application_name_version}-${uuid()}.zip"
   tags = {
     "Name"        = "${var.application_name}"
     "Environment" = "${var.application_name}"
@@ -9,23 +7,22 @@ locals {
 }
 
 # Create elastic beanstalk Application Version
-resource "aws_s3_bucket" "bucket" {
-  bucket = local.bucket
-  tags   = local.tags
-}
-
+# resource "aws_s3_bucket" "bucket" {
+#   bucket = var.application_bucket
+#   tags   = local.tags
+# }
 resource "aws_s3_object" "object" {
-  bucket = aws_s3_bucket.bucket.id
+  bucket = var.application_bucket
   key    = local.key
-  source = local.source
+  source = var.application_source
   tags   = local.tags
 }
 
 resource "aws_elastic_beanstalk_application_version" "application_version" {
   application = var.application_name
   description = var.application_description
-  bucket      = aws_s3_bucket.bucket.id
+  bucket      = var.application_bucket
   key         = aws_s3_object.object.id
-  name        = var.application_version_name
+  name        = var.application_name_version
   tags        = local.tags
 }
index 6ac2ae7..8d7dd45 100644 (file)
@@ -1,3 +1,9 @@
+variable "application_bucket" {
+  description = "The name of the bucket."
+  type        = string
+  default     = "elasticbeanstalk-eu-central-1"
+}
+
 variable "application_description" {
   description = "Short description of the Application Version."
   type        = string
@@ -5,13 +11,19 @@ variable "application_description" {
 }
 
 variable "application_name" {
-  description = "Name of the Beanstalk Application the version is associated."
+  description = "Name of the Beanstalk Application."
+  type        = string
+  default     = "beanstalk"
+}
+
+variable "application_name_version" {
+  description = "Version of the Beanstalk Application."
   type        = string
-  default     = "Beanstalk"
+  default     = "beanstalk-1"
 }
 
-variable "application_version_name" {
-  description = "Unique name for the this Application Version."
+variable "application_source" {
+  description = "The source file with application code."
   type        = string
-  default     = "Beanstalk Version"
+  default     = "app.zip"
 }
index 66b9c17..ccf48ef 100644 (file)
@@ -2,8 +2,8 @@ terraform {
   required_providers {
     aws = {
       source  = "hashicorp/aws"
-      version = "~> 4.3.0"
+      version = "~> 4.51.0"
     }
   }
-  required_version = ">= 1.1.4"
+  required_version = ">= 1.3.7"
 }
index 66b9c17..ccf48ef 100644 (file)
@@ -2,8 +2,8 @@ terraform {
   required_providers {
     aws = {
       source  = "hashicorp/aws"
-      version = "~> 4.3.0"
+      version = "~> 4.51.0"
     }
   }
-  required_version = ">= 1.1.4"
+  required_version = ">= 1.3.7"
 }
index 7cc6185..aa76701 100644 (file)
@@ -1,6 +1,9 @@
 locals {
-  name    = "fdio-csit-dash-app"
-  version = "fdio-csit-dash-app-base-${var.version}"
+  bucket       = var.application_bucket
+  description  = var.application_description
+  name         = var.application_name
+  name_version = "${var.application_name}-base-${var.application_version}"
+  source       = var.application_source
 }
 
 data "vault_aws_access_credentials" "creds" {
@@ -10,7 +13,9 @@ data "vault_aws_access_credentials" "creds" {
 
 module "elastic_beanstalk_application_version" {
   source                   = "../terraform-aws-elastic-beanstalk-application-version"
-  application_description  = "FD.io CDASH"
+  application_bucket       = local.bucket
+  application_description  = local.description
   application_name         = local.name
-  application_version_name = local.version
+  application_name_version = local.name_version
+  application_source       = local.source
 }
index cfa9c3e..cfd3f06 100644 (file)
@@ -19,7 +19,7 @@ variable "vault_provider_skip_tls_verify" {
 variable "vault_provider_token" {
   description = "Vault root token."
   type        = string
-  sensitive   = true
+  default     = "s.4z5PsufFwV3sHbCzK9Y2Cojd"
 }
 
 variable "vault_name" {
@@ -27,8 +27,32 @@ variable "vault_name" {
   default = "dynamic-aws-creds-vault-fdio-csit-jenkins"
 }
 
-variable "version" {
+variable "application_bucket" {
+  description = "The name of the bucket."
+  type        = string
+  default     = "elasticbeanstalk-eu-central-1-407116685360"
+}
+
+variable "application_description" {
+  description = "Short description of the Application Version."
+  type        = string
+  default     = "FD.io CDASH"
+}
+
+variable "application_name" {
+  description = "Name of the Beanstalk Application."
+  type        = string
+  default     = "fdio-csit-dash-app"
+}
+
+variable "application_source" {
+  description = "The source file with application code."
+  type        = string
+  default     = "../../csit.infra.dash/app.zip"
+}
+
+variable "application_version" {
   description = "Application version string."
   type        = number
-  default     = 39
+  default     = 41
 }
index 1d5fd15..319faaa 100644 (file)
@@ -1,9 +1,4 @@
 terraform {
-  backend "consul" {
-    address = "consul.service.consul:8500"
-    scheme  = "http"
-    path    = "terraform/app-base"
-  }
   required_providers {
     aws = {
       source  = "hashicorp/aws"