1
0

feat: experiment with localstack

This commit is contained in:
xpk
2026-02-19 14:02:01 +08:00
parent 73f66bae5f
commit 4b4ee898df
12 changed files with 316 additions and 0 deletions
+52
View File
@@ -0,0 +1,52 @@
# resource "aws_instance" "Test" {
# ami = data.aws_ami.this.id
# instance_type = "t4g.large"
#
# tags = {
# Name : "TestInstance001"
# }
# }
module "TestInstance" {
source = "../../../modules/compute/ec2"
additional-tags = {}
ami-id = data.aws_ami.this.id
asso-eip = false
asso-public-ip = false
data-volumes = {}
instance-name = "TestInstance001"
instance-type = "t4g.large"
kms-key-id = module.KmsKeys.cmks["allpurpose"].arn
root-volume-size = 20
security-groups = []
subnet-id = data.terraform_remote_state.vpc.outputs.private_subnets[0]
user-data = <<EOF
#!/bin/bash
dnf -y install git
EOF
}
data "aws_ami" "this" {
most_recent = true
name_regex = "^al2023-ami-2023.*-kernel-6.1-arm64"
owners = ["amazon"]
}
resource "random_pet" "this" {
length = 1
}
module "KmsKeys" {
source = "../../../modules/security_identity_compliance/CustomerManagedKmsKeys"
create-allpurpose-key = true
create-backup-key = false
create-database-key = false
create-eksebs-key = false
create-log-key = false
create-notify-key = false
create-secret-key = false
create-storage-key = false
deletion_window_in_days = 7
}
+3
View File
@@ -0,0 +1,3 @@
output "instance_info" {
value = module.TestInstance.ec2-id-ip
}
+60
View File
@@ -0,0 +1,60 @@
provider "aws" {
region = var.aws-region
# localstack config
access_key = "test"
secret_key = "test"
skip_credentials_validation = true
skip_metadata_api_check = true
skip_requesting_account_id = true
# localstack endpoints https://docs.localstack.cloud/aws/integrations/infrastructure-as-code/terraform/#:~:text=tflocal%20is%20a%20small%20wrapper,unmodified%20Terraform%20scripts%20against%20LocalStack.
endpoints {
apigateway = "http://192.168.86.96:4566"
apigatewayv2 = "http://192.168.86.96:4566"
cloudformation = "http://192.168.86.96:4566"
cloudwatch = "http://192.168.86.96:4566"
dynamodb = "http://192.168.86.96:4566"
ec2 = "http://192.168.86.96:4566"
es = "http://192.168.86.96:4566"
elasticache = "http://192.168.86.96:4566"
firehose = "http://192.168.86.96:4566"
iam = "http://192.168.86.96:4566"
kinesis = "http://192.168.86.96:4566"
kms = "http://192.168.86.96:4566"
lambda = "http://192.168.86.96:4566"
rds = "http://192.168.86.96:4566"
redshift = "http://192.168.86.96:4566"
route53 = "http://192.168.86.96:4566"
s3 = "http://192.168.86.96:4566"
secretsmanager = "http://192.168.86.96:4566"
ses = "http://192.168.86.96:4566"
sns = "http://192.168.86.96:4566"
sqs = "http://192.168.86.96:4566"
ssm = "http://192.168.86.96:4566"
stepfunctions = "http://192.168.86.96:4566"
sts = "http://192.168.86.96:4566"
}
default_tags {
tags = {
Environment = var.environment
Project = var.project
Application = var.application
LocalStack = true
TerraformDir = join("/", reverse(slice(reverse(split("/", path.cwd)), 0, 2)))
}
}
}
terraform {
required_version = ">= 1.11.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 6.0"
}
}
}
# data aws_caller_identity current {}
@@ -0,0 +1,6 @@
data "terraform_remote_state" "vpc" {
backend = "local"
config = {
path = "${path.module}/../../Network/LabVpc/terraform.tfstate"
}
}
@@ -0,0 +1,4 @@
application = "localstack"
environment = "locallab"
project = "iac"
aws-region = "us-east-1"
+4
View File
@@ -0,0 +1,4 @@
variable "aws-region" {}
variable "environment" {}
variable "project" {}
variable "application" {}