Updates from bitrot livestream (#16)

- Remove minor version pin for postgres versions (i.e. 12.5 -> 12)
- Update s3 config to use separate versioning and encryption terraform resources
- Use bucket_prefix instead of bucket for bucket naming to avoid name conflicts

Stream: https://youtu.be/KWwKPYuOGBw
This commit is contained in:
sidpalas
2023-01-13 12:43:41 -05:00
committed by GitHub
parent 7a3fdaca72
commit 9949d314f3
13 changed files with 56 additions and 45 deletions

View File

@@ -44,7 +44,7 @@ resource "aws_instance" "instance_2" {
} }
resource "aws_s3_bucket" "bucket" { resource "aws_s3_bucket" "bucket" {
bucket = "devops-directive-web-app-data" bucket_prefix = "devops-directive-web-app-data"
force_destroy = true force_destroy = true
} }

View File

@@ -37,7 +37,7 @@ resource "aws_db_instance" "db_instance" {
allocated_storage = 20 allocated_storage = 20
storage_type = "gp2" storage_type = "gp2"
engine = "postgres" engine = "postgres"
engine_version = "12.4" engine_version = "12"
instance_class = "db.t2.micro" instance_class = "db.t2.micro"
name = "mydb" name = "mydb"
username = var.db_user username = var.db_user

View File

@@ -45,20 +45,25 @@ resource "aws_instance" "instance_2" {
} }
resource "aws_s3_bucket" "bucket" { resource "aws_s3_bucket" "bucket" {
bucket = var.bucket_name bucket_prefix = var.bucket_prefix
force_destroy = true force_destroy = true
versioning {
enabled = true
} }
server_side_encryption_configuration { resource "aws_s3_bucket_versioning" "bucket_versioning" {
bucket = aws_s3_bucket.bucket.id
versioning_configuration {
status = "Enabled"
}
}
resource "aws_s3_bucket_server_side_encryption_configuration" "bucket_crypto_conf" {
bucket = aws_s3_bucket.bucket.bucket
rule { rule {
apply_server_side_encryption_by_default { apply_server_side_encryption_by_default {
sse_algorithm = "AES256" sse_algorithm = "AES256"
} }
} }
} }
}
data "aws_vpc" "default_vpc" { data "aws_vpc" "default_vpc" {
default = true default = true
@@ -202,7 +207,7 @@ resource "aws_db_instance" "db_instance" {
allocated_storage = 20 allocated_storage = 20
storage_type = "standard" storage_type = "standard"
engine = "postgres" engine = "postgres"
engine_version = "12.5" engine_version = "12"
instance_class = "db.t2.micro" instance_class = "db.t2.micro"
name = var.db_name name = var.db_name
username = var.db_user username = var.db_user

View File

@@ -1,4 +1,4 @@
bucket_name = "devops-directive-web-app-data" bucket_prefix = "devops-directive-web-app-data"
domain = "devopsdeployed.com" domain = "devopsdeployed.com"
db_name = "mydb" db_name = "mydb"
db_user = "foo" db_user = "foo"

View File

@@ -22,8 +22,8 @@ variable "instance_type" {
# S3 Variables # S3 Variables
variable "bucket_name" { variable "bucket_prefix" {
description = "name of s3 bucket for app data" description = "prefix of s3 bucket for app data"
type = string type = string
} }

View File

@@ -2,7 +2,7 @@ resource "aws_db_instance" "db_instance" {
allocated_storage = 20 allocated_storage = 20
storage_type = "standard" storage_type = "standard"
engine = "postgres" engine = "postgres"
engine_version = "12.5" engine_version = "12"
instance_class = "db.t2.micro" instance_class = "db.t2.micro"
name = var.db_name name = var.db_name
username = var.db_user username = var.db_user

View File

@@ -1,15 +1,20 @@
resource "aws_s3_bucket" "bucket" { resource "aws_s3_bucket" "bucket" {
bucket = var.bucket_name bucket_prefix = var.bucket_prefix
force_destroy = true force_destroy = true
versioning {
enabled = true
} }
server_side_encryption_configuration { resource "aws_s3_bucket_versioning" "bucket_versioning" {
bucket = aws_s3_bucket.bucket.id
versioning_configuration {
status = "Enabled"
}
}
resource "aws_s3_bucket_server_side_encryption_configuration" "bucket_crypto_conf" {
bucket = aws_s3_bucket.bucket.bucket
rule { rule {
apply_server_side_encryption_by_default { apply_server_side_encryption_by_default {
sse_algorithm = "AES256" sse_algorithm = "AES256"
} }
} }
} }
}

View File

@@ -34,8 +34,8 @@ variable "instance_type" {
# S3 Variables # S3 Variables
variable "bucket_name" { variable "bucket_prefix" {
description = "name of s3 bucket for app data" description = "prefix of s3 bucket for app data"
type = string type = string
} }

View File

@@ -37,11 +37,11 @@ module "web_app_1" {
source = "../web-app-module" source = "../web-app-module"
# Input Variables # Input Variables
bucket_name = "web-app-1-devops-directive-web-app-data" bucket_prefix = "web-app-1-data"
domain = "devopsdeployed.com" domain = "devopsdeployed.com"
app_name = "web-app-1" app_name = "web-app-1"
environment_name = "production" environment_name = "production"
instance_type = "t2.small" instance_type = "t2.micro"
create_dns_zone = true create_dns_zone = true
db_name = "webapp1db" db_name = "webapp1db"
db_user = "foo" db_user = "foo"
@@ -52,11 +52,11 @@ module "web_app_2" {
source = "../web-app-module" source = "../web-app-module"
# Input Variables # Input Variables
bucket_name = "web-app-2-devops-directive-web-app-data" bucket_prefix = "web-app-2-data"
domain = "anotherdevopsdeployed.com" domain = "anotherdevopsdeployed.com"
app_name = "web-app-2" app_name = "web-app-2"
environment_name = "production" environment_name = "production"
instance_type = "t2.small" instance_type = "t2.micro"
create_dns_zone = true create_dns_zone = true
db_name = "webapp2db" db_name = "webapp2db"
db_user = "bar" db_user = "bar"

View File

@@ -35,10 +35,10 @@ module "web_app" {
source = "../../../06-organization-and-modules/web-app-module" source = "../../../06-organization-and-modules/web-app-module"
# Input Variables # Input Variables
bucket_name = "devops-directive-web-app-data-${local.environment_name}" bucket_prefix = "web-app-data-${local.environment_name}"
domain = "devopsdeployed.com" domain = "devopsdeployed.com"
environment_name = local.environment_name environment_name = local.environment_name
instance_type = "t2.small" instance_type = "t2.micro"
create_dns_zone = false create_dns_zone = false
db_name = "${local.environment_name}mydb" db_name = "${local.environment_name}mydb"
db_user = "foo" db_user = "foo"

View File

@@ -35,7 +35,7 @@ module "web_app" {
source = "../../../06-organization-and-modules/web-app-module" source = "../../../06-organization-and-modules/web-app-module"
# Input Variables # Input Variables
bucket_name = "devops-directive-web-app-data-${local.environment_name}" bucket_prefix = "web-app-data-${local.environment_name}"
domain = "devopsdeployed.com" domain = "devopsdeployed.com"
environment_name = local.environment_name environment_name = local.environment_name
instance_type = "t2.micro" instance_type = "t2.micro"

View File

@@ -35,10 +35,10 @@ module "web_app" {
source = "../../06-organization-and-modules/web-app-module" source = "../../06-organization-and-modules/web-app-module"
# Input Variables # Input Variables
bucket_name = "devops-directive-web-app-data-${local.environment_name}" bucket_prefix = "web-app-data-${local.environment_name}"
domain = "devopsdeployed.com" domain = "devopsdeployed.com"
environment_name = local.environment_name environment_name = local.environment_name
instance_type = "t2.small" instance_type = "t2.micro"
create_dns_zone = terraform.workspace == "production" ? true : false create_dns_zone = terraform.workspace == "production" ? true : false
db_name = "${local.environment_name}mydb" db_name = "${local.environment_name}mydb"
db_user = "foo" db_user = "foo"

View File

@@ -1,6 +1,7 @@
How to run this test? How to run this test?
Build, then run... download dependencies, then run the tests...
```
`go test -v timeout 10m` go mod download
go test -v --timeout 10m
```