From c9f2b7d76df2b2855d7b42a4f436bec591f9b1be Mon Sep 17 00:00:00 2001 From: sunm2n Date: Fri, 19 Jun 2026 19:31:52 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[chore]=20terraform(OpenTofu)=20=EC=9E=91?= =?UTF-8?q?=EC=97=85=20=ED=99=98=EA=B2=BD=20=EC=84=B8=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - OpenTofu + AWS provider(~> 5.0, ap-northeast-2) 선언 추가 - .gitignore에 terraform 산출물 규칙 추가 (tfstate/.terraform/tfvars/lock) IssueNum #17 --- .gitignore | 18 +++++++++++++++++- terraform/provider.tf | 14 ++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 terraform/provider.tf diff --git a/.gitignore b/.gitignore index e986fe5..75e2a10 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,20 @@ # OS 파일 .DS_Store -Thumbs.db \ No newline at end of file +Thumbs.db + +# Terraform / OpenTofu +**/.terraform/* +*.tfstate +*.tfstate.* +crash.log +crash.*.log +*.tfvars +*.tfvars.json +override.tf +override.tf.json +*_override.tf +*_override.tf.json +.terraformrc +terraform.rc +.terraform.lock.hcl \ No newline at end of file diff --git a/terraform/provider.tf b/terraform/provider.tf new file mode 100644 index 0000000..1bc63f5 --- /dev/null +++ b/terraform/provider.tf @@ -0,0 +1,14 @@ +terraform { + required_version = ">= 1.6" + + required_providers { + aws = { + source = "hashicorp/aws" + version = "~> 5.0" + } + } +} + +provider "aws" { + region = "ap-northeast-2" +} \ No newline at end of file From 44be45ebc5bd16cedba61ea63b7a71b4144cbace Mon Sep 17 00:00:00 2001 From: sunm2n Date: Fri, 19 Jun 2026 19:31:52 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[chore]=20terraformer=EB=A1=9C=20=EB=84=A4?= =?UTF-8?q?=ED=8A=B8=EC=9B=8C=ED=81=AC=C2=B7=EC=BB=B4=ED=93=A8=ED=8A=B8?= =?UTF-8?q?=C2=B7DNS=20=EC=9D=B8=ED=94=84=EB=9D=BC=20=EC=8A=A4=EB=83=85?= =?UTF-8?q?=EC=83=B7=20export?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 네트워크: vpc/subnet/route_table/igw/eip/nacl - 컴퓨트: ec2_instance(app·db)/eni/sg - DNS: route53(zone·record) - region ap-northeast-2, terraformer 0.8.30 + connect=true IssueNum #17 --- .../ec2_instance/ap-northeast-2/provider.tf | 11 ++ .../ec2_instance/ap-northeast-2/variables.tf | 23 +++ .../generated/aws/ec2_instance/instance.tf | 171 ++++++++++++++++++ .../generated/aws/ec2_instance/outputs.tf | 7 + .../generated/aws/ec2_instance/provider.tf | 11 ++ .../generated/aws/ec2_instance/variables.tf | 23 +++ .../aws/eip/ap-northeast-2/provider.tf | 11 ++ terraform/generated/aws/eip/eip.tf | 17 ++ terraform/generated/aws/eip/outputs.tf | 3 + terraform/generated/aws/eip/provider.tf | 11 ++ .../aws/eni/ap-northeast-2/provider.tf | 11 ++ .../generated/aws/eni/network_interface.tf | 37 ++++ terraform/generated/aws/eni/outputs.tf | 7 + terraform/generated/aws/eni/provider.tf | 11 ++ .../aws/igw/ap-northeast-2/provider.tf | 11 ++ .../aws/igw/ap-northeast-2/variables.tf | 7 + .../generated/aws/igw/internet_gateway.tf | 3 + terraform/generated/aws/igw/outputs.tf | 3 + terraform/generated/aws/igw/provider.tf | 11 ++ terraform/generated/aws/igw/variables.tf | 7 + .../aws/nacl/ap-northeast-2/provider.tf | 11 ++ .../aws/nacl/ap-northeast-2/variables.tf | 15 ++ .../generated/aws/nacl/default_network_acl.tf | 25 +++ terraform/generated/aws/nacl/outputs.tf | 3 + terraform/generated/aws/nacl/provider.tf | 11 ++ terraform/generated/aws/nacl/variables.tf | 15 ++ terraform/generated/aws/route53/outputs.tf | 35 ++++ terraform/generated/aws/route53/provider.tf | 11 ++ .../generated/aws/route53/route53_record.tf | 71 ++++++++ .../generated/aws/route53/route53_zone.tf | 5 + .../route_table/ap-northeast-2/provider.tf | 11 ++ .../route_table/ap-northeast-2/variables.tf | 23 +++ .../main_route_table_association.tf | 4 + .../generated/aws/route_table/outputs.tf | 15 ++ .../generated/aws/route_table/provider.tf | 11 ++ .../generated/aws/route_table/route_table.tf | 25 +++ .../route_table/route_table_association.tf | 4 + .../generated/aws/route_table/variables.tf | 23 +++ .../aws/sg/ap-northeast-2/provider.tf | 11 ++ .../aws/sg/ap-northeast-2/variables.tf | 7 + terraform/generated/aws/sg/outputs.tf | 11 ++ terraform/generated/aws/sg/provider.tf | 11 ++ terraform/generated/aws/sg/security_group.tf | 108 +++++++++++ terraform/generated/aws/sg/variables.tf | 7 + .../aws/subnet/ap-northeast-2/provider.tf | 11 ++ .../aws/subnet/ap-northeast-2/variables.tf | 7 + terraform/generated/aws/subnet/outputs.tf | 19 ++ terraform/generated/aws/subnet/provider.tf | 11 ++ terraform/generated/aws/subnet/subnet.tf | 78 ++++++++ terraform/generated/aws/subnet/variables.tf | 7 + .../aws/vpc/ap-northeast-2/provider.tf | 11 ++ terraform/generated/aws/vpc/outputs.tf | 3 + terraform/generated/aws/vpc/provider.tf | 11 ++ terraform/generated/aws/vpc/vpc.tf | 9 + 54 files changed, 1036 insertions(+) create mode 100755 terraform/generated/aws/ec2_instance/ap-northeast-2/provider.tf create mode 100755 terraform/generated/aws/ec2_instance/ap-northeast-2/variables.tf create mode 100755 terraform/generated/aws/ec2_instance/instance.tf create mode 100755 terraform/generated/aws/ec2_instance/outputs.tf create mode 100755 terraform/generated/aws/ec2_instance/provider.tf create mode 100755 terraform/generated/aws/ec2_instance/variables.tf create mode 100755 terraform/generated/aws/eip/ap-northeast-2/provider.tf create mode 100755 terraform/generated/aws/eip/eip.tf create mode 100755 terraform/generated/aws/eip/outputs.tf create mode 100755 terraform/generated/aws/eip/provider.tf create mode 100755 terraform/generated/aws/eni/ap-northeast-2/provider.tf create mode 100755 terraform/generated/aws/eni/network_interface.tf create mode 100755 terraform/generated/aws/eni/outputs.tf create mode 100755 terraform/generated/aws/eni/provider.tf create mode 100755 terraform/generated/aws/igw/ap-northeast-2/provider.tf create mode 100755 terraform/generated/aws/igw/ap-northeast-2/variables.tf create mode 100755 terraform/generated/aws/igw/internet_gateway.tf create mode 100755 terraform/generated/aws/igw/outputs.tf create mode 100755 terraform/generated/aws/igw/provider.tf create mode 100755 terraform/generated/aws/igw/variables.tf create mode 100755 terraform/generated/aws/nacl/ap-northeast-2/provider.tf create mode 100755 terraform/generated/aws/nacl/ap-northeast-2/variables.tf create mode 100755 terraform/generated/aws/nacl/default_network_acl.tf create mode 100755 terraform/generated/aws/nacl/outputs.tf create mode 100755 terraform/generated/aws/nacl/provider.tf create mode 100755 terraform/generated/aws/nacl/variables.tf create mode 100755 terraform/generated/aws/route53/outputs.tf create mode 100755 terraform/generated/aws/route53/provider.tf create mode 100755 terraform/generated/aws/route53/route53_record.tf create mode 100755 terraform/generated/aws/route53/route53_zone.tf create mode 100755 terraform/generated/aws/route_table/ap-northeast-2/provider.tf create mode 100755 terraform/generated/aws/route_table/ap-northeast-2/variables.tf create mode 100755 terraform/generated/aws/route_table/main_route_table_association.tf create mode 100755 terraform/generated/aws/route_table/outputs.tf create mode 100755 terraform/generated/aws/route_table/provider.tf create mode 100755 terraform/generated/aws/route_table/route_table.tf create mode 100755 terraform/generated/aws/route_table/route_table_association.tf create mode 100755 terraform/generated/aws/route_table/variables.tf create mode 100755 terraform/generated/aws/sg/ap-northeast-2/provider.tf create mode 100755 terraform/generated/aws/sg/ap-northeast-2/variables.tf create mode 100755 terraform/generated/aws/sg/outputs.tf create mode 100755 terraform/generated/aws/sg/provider.tf create mode 100755 terraform/generated/aws/sg/security_group.tf create mode 100755 terraform/generated/aws/sg/variables.tf create mode 100755 terraform/generated/aws/subnet/ap-northeast-2/provider.tf create mode 100755 terraform/generated/aws/subnet/ap-northeast-2/variables.tf create mode 100755 terraform/generated/aws/subnet/outputs.tf create mode 100755 terraform/generated/aws/subnet/provider.tf create mode 100755 terraform/generated/aws/subnet/subnet.tf create mode 100755 terraform/generated/aws/subnet/variables.tf create mode 100755 terraform/generated/aws/vpc/ap-northeast-2/provider.tf create mode 100755 terraform/generated/aws/vpc/outputs.tf create mode 100755 terraform/generated/aws/vpc/provider.tf create mode 100755 terraform/generated/aws/vpc/vpc.tf diff --git a/terraform/generated/aws/ec2_instance/ap-northeast-2/provider.tf b/terraform/generated/aws/ec2_instance/ap-northeast-2/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/ec2_instance/ap-northeast-2/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/ec2_instance/ap-northeast-2/variables.tf b/terraform/generated/aws/ec2_instance/ap-northeast-2/variables.tf new file mode 100755 index 0000000..2ff7467 --- /dev/null +++ b/terraform/generated/aws/ec2_instance/ap-northeast-2/variables.tf @@ -0,0 +1,23 @@ +data "terraform_remote_state" "ebs" { + backend = "local" + + config = { + path = "../../../../generated/aws/ebs/ap-northeast-2/terraform.tfstate" + } +} + +data "terraform_remote_state" "sg" { + backend = "local" + + config = { + path = "../../../../generated/aws/sg/ap-northeast-2/terraform.tfstate" + } +} + +data "terraform_remote_state" "subnet" { + backend = "local" + + config = { + path = "../../../../generated/aws/subnet/ap-northeast-2/terraform.tfstate" + } +} diff --git a/terraform/generated/aws/ec2_instance/instance.tf b/terraform/generated/aws/ec2_instance/instance.tf new file mode 100755 index 0000000..6e5b2e8 --- /dev/null +++ b/terraform/generated/aws/ec2_instance/instance.tf @@ -0,0 +1,171 @@ +resource "aws_instance" "tfer--i-0175957e300c3ccd9_linclean-app" { + ami = "ami-0596f7562954deb8e" + associate_public_ip_address = "true" + availability_zone = "ap-northeast-2a" + + capacity_reservation_specification { + capacity_reservation_preference = "open" + } + + cpu_core_count = "1" + + cpu_options { + core_count = "1" + threads_per_core = "2" + } + + cpu_threads_per_core = "2" + + credit_specification { + cpu_credits = "unlimited" + } + + disable_api_stop = "false" + disable_api_termination = "false" + ebs_optimized = "true" + + enclave_options { + enabled = "false" + } + + get_password_data = "false" + hibernation = "false" + iam_instance_profile = "linclean-ec2-role" + instance_initiated_shutdown_behavior = "stop" + instance_type = "t3.small" + ipv6_address_count = "0" + key_name = "linclean-key" + + maintenance_options { + auto_recovery = "default" + } + + metadata_options { + http_endpoint = "enabled" + http_protocol_ipv6 = "disabled" + http_put_response_hop_limit = "1" + http_tokens = "optional" + instance_metadata_tags = "disabled" + } + + monitoring = "false" + placement_partition_number = "0" + + private_dns_name_options { + enable_resource_name_dns_a_record = "false" + enable_resource_name_dns_aaaa_record = "false" + hostname_type = "ip-name" + } + + private_ip = "172.31.10.100" + + root_block_device { + delete_on_termination = "true" + encrypted = "false" + iops = "3000" + throughput = "125" + volume_size = "30" + volume_type = "gp3" + } + + security_groups = ["app-sg"] + source_dest_check = "false" + subnet_id = "${data.terraform_remote_state.subnet.outputs.aws_subnet_tfer--subnet-00b08863bb393665d_id}" + + tags = { + Name = "linclean-app" + } + + tags_all = { + Name = "linclean-app" + } + + tenancy = "default" + vpc_security_group_ids = ["${data.terraform_remote_state.sg.outputs.aws_security_group_tfer--app-sg_sg-01eb4b595c6303b33_id}"] +} + +resource "aws_instance" "tfer--i-087e8229818de4182_linclean-db" { + ami = "ami-0596f7562954deb8e" + associate_public_ip_address = "false" + availability_zone = "ap-northeast-2a" + + capacity_reservation_specification { + capacity_reservation_preference = "open" + } + + cpu_core_count = "1" + + cpu_options { + core_count = "1" + threads_per_core = "2" + } + + cpu_threads_per_core = "2" + + credit_specification { + cpu_credits = "unlimited" + } + + disable_api_stop = "false" + disable_api_termination = "false" + ebs_optimized = "true" + + enclave_options { + enabled = "false" + } + + get_password_data = "false" + hibernation = "false" + iam_instance_profile = "linclean-ec2-role" + instance_initiated_shutdown_behavior = "stop" + instance_type = "t3.micro" + ipv6_address_count = "0" + key_name = "linclean-key" + + maintenance_options { + auto_recovery = "default" + } + + metadata_options { + http_endpoint = "enabled" + http_protocol_ipv6 = "disabled" + http_put_response_hop_limit = "1" + http_tokens = "optional" + instance_metadata_tags = "disabled" + } + + monitoring = "false" + placement_partition_number = "0" + + private_dns_name_options { + enable_resource_name_dns_a_record = "false" + enable_resource_name_dns_aaaa_record = "false" + hostname_type = "ip-name" + } + + private_ip = "172.31.67.93" + + root_block_device { + delete_on_termination = "true" + encrypted = "false" + iops = "3000" + throughput = "125" + volume_size = "30" + volume_type = "gp3" + } + + security_groups = ["db-sg"] + source_dest_check = "true" + subnet_id = "${data.terraform_remote_state.subnet.outputs.aws_subnet_tfer--subnet-0632d2f0a805011b3_id}" + + tags = { + Name = "linclean-db" + } + + tags_all = { + Name = "linclean-db" + } + + tenancy = "default" + vpc_security_group_ids = ["${data.terraform_remote_state.sg.outputs.aws_security_group_tfer--db-sg_sg-01d7376ba980bf2e6_id}"] +} diff --git a/terraform/generated/aws/ec2_instance/outputs.tf b/terraform/generated/aws/ec2_instance/outputs.tf new file mode 100755 index 0000000..972d8c7 --- /dev/null +++ b/terraform/generated/aws/ec2_instance/outputs.tf @@ -0,0 +1,7 @@ +output "aws_instance_tfer--i-0175957e300c3ccd9_linclean-app_id" { + value = "${aws_instance.tfer--i-0175957e300c3ccd9_linclean-app.id}" +} + +output "aws_instance_tfer--i-087e8229818de4182_linclean-db_id" { + value = "${aws_instance.tfer--i-087e8229818de4182_linclean-db.id}" +} diff --git a/terraform/generated/aws/ec2_instance/provider.tf b/terraform/generated/aws/ec2_instance/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/ec2_instance/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/ec2_instance/variables.tf b/terraform/generated/aws/ec2_instance/variables.tf new file mode 100755 index 0000000..06a0d27 --- /dev/null +++ b/terraform/generated/aws/ec2_instance/variables.tf @@ -0,0 +1,23 @@ +data "terraform_remote_state" "ebs" { + backend = "local" + + config = { + path = "../../../generated/aws/ebs/terraform.tfstate" + } +} + +data "terraform_remote_state" "sg" { + backend = "local" + + config = { + path = "../../../generated/aws/sg/terraform.tfstate" + } +} + +data "terraform_remote_state" "subnet" { + backend = "local" + + config = { + path = "../../../generated/aws/subnet/terraform.tfstate" + } +} diff --git a/terraform/generated/aws/eip/ap-northeast-2/provider.tf b/terraform/generated/aws/eip/ap-northeast-2/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/eip/ap-northeast-2/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/eip/eip.tf b/terraform/generated/aws/eip/eip.tf new file mode 100755 index 0000000..2d673e2 --- /dev/null +++ b/terraform/generated/aws/eip/eip.tf @@ -0,0 +1,17 @@ +resource "aws_eip" "tfer--eipalloc-02a4533b598a1859a" { + domain = "vpc" + instance = "i-0175957e300c3ccd9" + network_border_group = "ap-northeast-2" + network_interface = "eni-01e3526fd0a19ee2d" + public_ipv4_pool = "amazon" + + tags = { + Name = "linclean-app-eip" + } + + tags_all = { + Name = "linclean-app-eip" + } + + vpc = "true" +} diff --git a/terraform/generated/aws/eip/outputs.tf b/terraform/generated/aws/eip/outputs.tf new file mode 100755 index 0000000..2aa5fb5 --- /dev/null +++ b/terraform/generated/aws/eip/outputs.tf @@ -0,0 +1,3 @@ +output "aws_eip_tfer--eipalloc-02a4533b598a1859a_id" { + value = "${aws_eip.tfer--eipalloc-02a4533b598a1859a.id}" +} diff --git a/terraform/generated/aws/eip/provider.tf b/terraform/generated/aws/eip/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/eip/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/eni/ap-northeast-2/provider.tf b/terraform/generated/aws/eni/ap-northeast-2/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/eni/ap-northeast-2/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/eni/network_interface.tf b/terraform/generated/aws/eni/network_interface.tf new file mode 100755 index 0000000..320ceb3 --- /dev/null +++ b/terraform/generated/aws/eni/network_interface.tf @@ -0,0 +1,37 @@ +resource "aws_network_interface" "tfer--eni-004ca4335ea1baf2c" { + attachment { + device_index = "0" + instance = "i-087e8229818de4182" + } + + interface_type = "interface" + ipv4_prefix_count = "0" + ipv6_address_count = "0" + ipv6_prefix_count = "0" + private_ip = "172.31.67.93" + private_ip_list = ["172.31.67.93"] + private_ips = ["172.31.67.93"] + private_ips_count = "0" + security_groups = ["sg-01d7376ba980bf2e6"] + source_dest_check = "true" + subnet_id = "subnet-0632d2f0a805011b3" +} + +resource "aws_network_interface" "tfer--eni-01e3526fd0a19ee2d" { + attachment { + device_index = "0" + instance = "i-0175957e300c3ccd9" + } + + interface_type = "interface" + ipv4_prefix_count = "0" + ipv6_address_count = "0" + ipv6_prefix_count = "0" + private_ip = "172.31.10.100" + private_ip_list = ["172.31.10.100"] + private_ips = ["172.31.10.100"] + private_ips_count = "0" + security_groups = ["sg-01eb4b595c6303b33"] + source_dest_check = "false" + subnet_id = "subnet-00b08863bb393665d" +} diff --git a/terraform/generated/aws/eni/outputs.tf b/terraform/generated/aws/eni/outputs.tf new file mode 100755 index 0000000..7a418a5 --- /dev/null +++ b/terraform/generated/aws/eni/outputs.tf @@ -0,0 +1,7 @@ +output "aws_network_interface_tfer--eni-004ca4335ea1baf2c_id" { + value = "${aws_network_interface.tfer--eni-004ca4335ea1baf2c.id}" +} + +output "aws_network_interface_tfer--eni-01e3526fd0a19ee2d_id" { + value = "${aws_network_interface.tfer--eni-01e3526fd0a19ee2d.id}" +} diff --git a/terraform/generated/aws/eni/provider.tf b/terraform/generated/aws/eni/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/eni/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/igw/ap-northeast-2/provider.tf b/terraform/generated/aws/igw/ap-northeast-2/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/igw/ap-northeast-2/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/igw/ap-northeast-2/variables.tf b/terraform/generated/aws/igw/ap-northeast-2/variables.tf new file mode 100755 index 0000000..36d640b --- /dev/null +++ b/terraform/generated/aws/igw/ap-northeast-2/variables.tf @@ -0,0 +1,7 @@ +data "terraform_remote_state" "vpc" { + backend = "local" + + config = { + path = "../../../../generated/aws/vpc/ap-northeast-2/terraform.tfstate" + } +} diff --git a/terraform/generated/aws/igw/internet_gateway.tf b/terraform/generated/aws/igw/internet_gateway.tf new file mode 100755 index 0000000..cb32a79 --- /dev/null +++ b/terraform/generated/aws/igw/internet_gateway.tf @@ -0,0 +1,3 @@ +resource "aws_internet_gateway" "tfer--igw-0fffc68ca33f6869f" { + vpc_id = "${data.terraform_remote_state.vpc.outputs.aws_vpc_tfer--vpc-0418db1a1f7e8320e_id}" +} diff --git a/terraform/generated/aws/igw/outputs.tf b/terraform/generated/aws/igw/outputs.tf new file mode 100755 index 0000000..a577fd9 --- /dev/null +++ b/terraform/generated/aws/igw/outputs.tf @@ -0,0 +1,3 @@ +output "aws_internet_gateway_tfer--igw-0fffc68ca33f6869f_id" { + value = "${aws_internet_gateway.tfer--igw-0fffc68ca33f6869f.id}" +} diff --git a/terraform/generated/aws/igw/provider.tf b/terraform/generated/aws/igw/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/igw/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/igw/variables.tf b/terraform/generated/aws/igw/variables.tf new file mode 100755 index 0000000..f64b884 --- /dev/null +++ b/terraform/generated/aws/igw/variables.tf @@ -0,0 +1,7 @@ +data "terraform_remote_state" "vpc" { + backend = "local" + + config = { + path = "../../../generated/aws/vpc/terraform.tfstate" + } +} diff --git a/terraform/generated/aws/nacl/ap-northeast-2/provider.tf b/terraform/generated/aws/nacl/ap-northeast-2/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/nacl/ap-northeast-2/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/nacl/ap-northeast-2/variables.tf b/terraform/generated/aws/nacl/ap-northeast-2/variables.tf new file mode 100755 index 0000000..cc3f8cc --- /dev/null +++ b/terraform/generated/aws/nacl/ap-northeast-2/variables.tf @@ -0,0 +1,15 @@ +data "terraform_remote_state" "subnet" { + backend = "local" + + config = { + path = "../../../../generated/aws/subnet/ap-northeast-2/terraform.tfstate" + } +} + +data "terraform_remote_state" "vpc" { + backend = "local" + + config = { + path = "../../../../generated/aws/vpc/ap-northeast-2/terraform.tfstate" + } +} diff --git a/terraform/generated/aws/nacl/default_network_acl.tf b/terraform/generated/aws/nacl/default_network_acl.tf new file mode 100755 index 0000000..736a2fb --- /dev/null +++ b/terraform/generated/aws/nacl/default_network_acl.tf @@ -0,0 +1,25 @@ +resource "aws_default_network_acl" "tfer--acl-0e1493ae5e8cc8c98" { + egress { + action = "allow" + cidr_block = "0.0.0.0/0" + from_port = "0" + icmp_code = "0" + icmp_type = "0" + protocol = "-1" + rule_no = "100" + to_port = "0" + } + + ingress { + action = "allow" + cidr_block = "0.0.0.0/0" + from_port = "0" + icmp_code = "0" + icmp_type = "0" + protocol = "-1" + rule_no = "100" + to_port = "0" + } + + subnet_ids = ["${data.terraform_remote_state.subnet.outputs.aws_subnet_tfer--subnet-00b08863bb393665d_id}", "${data.terraform_remote_state.subnet.outputs.aws_subnet_tfer--subnet-014c415046105e05e_id}", "${data.terraform_remote_state.subnet.outputs.aws_subnet_tfer--subnet-03ffeb8e049eec145_id}", "${data.terraform_remote_state.subnet.outputs.aws_subnet_tfer--subnet-0632d2f0a805011b3_id}", "${data.terraform_remote_state.subnet.outputs.aws_subnet_tfer--subnet-0ca72f19a480af2c8_id}"] +} diff --git a/terraform/generated/aws/nacl/outputs.tf b/terraform/generated/aws/nacl/outputs.tf new file mode 100755 index 0000000..60d26ff --- /dev/null +++ b/terraform/generated/aws/nacl/outputs.tf @@ -0,0 +1,3 @@ +output "aws_default_network_acl_tfer--acl-0e1493ae5e8cc8c98_id" { + value = "${aws_default_network_acl.tfer--acl-0e1493ae5e8cc8c98.id}" +} diff --git a/terraform/generated/aws/nacl/provider.tf b/terraform/generated/aws/nacl/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/nacl/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/nacl/variables.tf b/terraform/generated/aws/nacl/variables.tf new file mode 100755 index 0000000..45b8536 --- /dev/null +++ b/terraform/generated/aws/nacl/variables.tf @@ -0,0 +1,15 @@ +data "terraform_remote_state" "subnet" { + backend = "local" + + config = { + path = "../../../generated/aws/subnet/terraform.tfstate" + } +} + +data "terraform_remote_state" "vpc" { + backend = "local" + + config = { + path = "../../../generated/aws/vpc/terraform.tfstate" + } +} diff --git a/terraform/generated/aws/route53/outputs.tf b/terraform/generated/aws/route53/outputs.tf new file mode 100755 index 0000000..a92934d --- /dev/null +++ b/terraform/generated/aws/route53/outputs.tf @@ -0,0 +1,35 @@ +output "aws_route53_record_tfer--Z04489651RTX4SKR88HB1_accounts-002E-linclean-002E-kr-002E-_CNAME__id" { + value = "${aws_route53_record.tfer--Z04489651RTX4SKR88HB1_accounts-002E-linclean-002E-kr-002E-_CNAME_.id}" +} + +output "aws_route53_record_tfer--Z04489651RTX4SKR88HB1_api-002E-linclean-002E-kr-002E-_A__id" { + value = "${aws_route53_record.tfer--Z04489651RTX4SKR88HB1_api-002E-linclean-002E-kr-002E-_A_.id}" +} + +output "aws_route53_record_tfer--Z04489651RTX4SKR88HB1_clerk-002E-linclean-002E-kr-002E-_CNAME__id" { + value = "${aws_route53_record.tfer--Z04489651RTX4SKR88HB1_clerk-002E-linclean-002E-kr-002E-_CNAME_.id}" +} + +output "aws_route53_record_tfer--Z04489651RTX4SKR88HB1_clk-002E-_domainkey-002E-linclean-002E-kr-002E-_CNAME__id" { + value = "${aws_route53_record.tfer--Z04489651RTX4SKR88HB1_clk-002E-_domainkey-002E-linclean-002E-kr-002E-_CNAME_.id}" +} + +output "aws_route53_record_tfer--Z04489651RTX4SKR88HB1_clk2-002E-_domainkey-002E-linclean-002E-kr-002E-_CNAME__id" { + value = "${aws_route53_record.tfer--Z04489651RTX4SKR88HB1_clk2-002E-_domainkey-002E-linclean-002E-kr-002E-_CNAME_.id}" +} + +output "aws_route53_record_tfer--Z04489651RTX4SKR88HB1_clkmail-002E-linclean-002E-kr-002E-_CNAME__id" { + value = "${aws_route53_record.tfer--Z04489651RTX4SKR88HB1_clkmail-002E-linclean-002E-kr-002E-_CNAME_.id}" +} + +output "aws_route53_record_tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr-002E-_NS__id" { + value = "${aws_route53_record.tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr-002E-_NS_.id}" +} + +output "aws_route53_record_tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr-002E-_SOA__id" { + value = "${aws_route53_record.tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr-002E-_SOA_.id}" +} + +output "aws_route53_zone_tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr_id" { + value = "${aws_route53_zone.tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr.id}" +} diff --git a/terraform/generated/aws/route53/provider.tf b/terraform/generated/aws/route53/provider.tf new file mode 100755 index 0000000..f863d97 --- /dev/null +++ b/terraform/generated/aws/route53/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "us-east-1" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/route53/route53_record.tf b/terraform/generated/aws/route53/route53_record.tf new file mode 100755 index 0000000..514e6de --- /dev/null +++ b/terraform/generated/aws/route53/route53_record.tf @@ -0,0 +1,71 @@ +resource "aws_route53_record" "tfer--Z04489651RTX4SKR88HB1_accounts-002E-linclean-002E-kr-002E-_CNAME_" { + multivalue_answer_routing_policy = "false" + name = "accounts.linclean.kr" + records = ["accounts.clerk.services"] + ttl = "300" + type = "CNAME" + zone_id = "${aws_route53_zone.tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr.zone_id}" +} + +resource "aws_route53_record" "tfer--Z04489651RTX4SKR88HB1_api-002E-linclean-002E-kr-002E-_A_" { + multivalue_answer_routing_policy = "false" + name = "api.linclean.kr" + records = ["3.35.92.248"] + ttl = "300" + type = "A" + zone_id = "${aws_route53_zone.tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr.zone_id}" +} + +resource "aws_route53_record" "tfer--Z04489651RTX4SKR88HB1_clerk-002E-linclean-002E-kr-002E-_CNAME_" { + multivalue_answer_routing_policy = "false" + name = "clerk.linclean.kr" + records = ["frontend-api.clerk.services"] + ttl = "300" + type = "CNAME" + zone_id = "${aws_route53_zone.tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr.zone_id}" +} + +resource "aws_route53_record" "tfer--Z04489651RTX4SKR88HB1_clk-002E-_domainkey-002E-linclean-002E-kr-002E-_CNAME_" { + multivalue_answer_routing_policy = "false" + name = "clk._domainkey.linclean.kr" + records = ["dkim1.jv1fv7xo5kut.clerk.services"] + ttl = "300" + type = "CNAME" + zone_id = "${aws_route53_zone.tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr.zone_id}" +} + +resource "aws_route53_record" "tfer--Z04489651RTX4SKR88HB1_clk2-002E-_domainkey-002E-linclean-002E-kr-002E-_CNAME_" { + multivalue_answer_routing_policy = "false" + name = "clk2._domainkey.linclean.kr" + records = ["dkim2.jv1fv7xo5kut.clerk.services"] + ttl = "300" + type = "CNAME" + zone_id = "${aws_route53_zone.tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr.zone_id}" +} + +resource "aws_route53_record" "tfer--Z04489651RTX4SKR88HB1_clkmail-002E-linclean-002E-kr-002E-_CNAME_" { + multivalue_answer_routing_policy = "false" + name = "clkmail.linclean.kr" + records = ["mail.jv1fv7xo5kut.clerk.services"] + ttl = "300" + type = "CNAME" + zone_id = "${aws_route53_zone.tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr.zone_id}" +} + +resource "aws_route53_record" "tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr-002E-_NS_" { + multivalue_answer_routing_policy = "false" + name = "linclean.kr" + records = ["ns-1399.awsdns-46.org.", "ns-1678.awsdns-17.co.uk.", "ns-355.awsdns-44.com.", "ns-987.awsdns-59.net."] + ttl = "172800" + type = "NS" + zone_id = "${aws_route53_zone.tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr.zone_id}" +} + +resource "aws_route53_record" "tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr-002E-_SOA_" { + multivalue_answer_routing_policy = "false" + name = "linclean.kr" + records = ["ns-355.awsdns-44.com. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400"] + ttl = "900" + type = "SOA" + zone_id = "${aws_route53_zone.tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr.zone_id}" +} diff --git a/terraform/generated/aws/route53/route53_zone.tf b/terraform/generated/aws/route53/route53_zone.tf new file mode 100755 index 0000000..291f81d --- /dev/null +++ b/terraform/generated/aws/route53/route53_zone.tf @@ -0,0 +1,5 @@ +resource "aws_route53_zone" "tfer--Z04489651RTX4SKR88HB1_linclean-002E-kr" { + comment = "LinClean production zone" + force_destroy = "false" + name = "linclean.kr" +} diff --git a/terraform/generated/aws/route_table/ap-northeast-2/provider.tf b/terraform/generated/aws/route_table/ap-northeast-2/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/route_table/ap-northeast-2/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/route_table/ap-northeast-2/variables.tf b/terraform/generated/aws/route_table/ap-northeast-2/variables.tf new file mode 100755 index 0000000..8adbe44 --- /dev/null +++ b/terraform/generated/aws/route_table/ap-northeast-2/variables.tf @@ -0,0 +1,23 @@ +data "terraform_remote_state" "route_table" { + backend = "local" + + config = { + path = "../../../../generated/aws/route_table/ap-northeast-2/terraform.tfstate" + } +} + +data "terraform_remote_state" "subnet" { + backend = "local" + + config = { + path = "../../../../generated/aws/subnet/ap-northeast-2/terraform.tfstate" + } +} + +data "terraform_remote_state" "vpc" { + backend = "local" + + config = { + path = "../../../../generated/aws/vpc/ap-northeast-2/terraform.tfstate" + } +} diff --git a/terraform/generated/aws/route_table/main_route_table_association.tf b/terraform/generated/aws/route_table/main_route_table_association.tf new file mode 100755 index 0000000..c1e695d --- /dev/null +++ b/terraform/generated/aws/route_table/main_route_table_association.tf @@ -0,0 +1,4 @@ +resource "aws_main_route_table_association" "tfer--vpc-0418db1a1f7e8320e" { + route_table_id = "${data.terraform_remote_state.route_table.outputs.aws_route_table_tfer--rtb-09b773d78201e7426_id}" + vpc_id = "${data.terraform_remote_state.vpc.outputs.aws_vpc_tfer--vpc-0418db1a1f7e8320e_id}" +} diff --git a/terraform/generated/aws/route_table/outputs.tf b/terraform/generated/aws/route_table/outputs.tf new file mode 100755 index 0000000..1d9d012 --- /dev/null +++ b/terraform/generated/aws/route_table/outputs.tf @@ -0,0 +1,15 @@ +output "aws_main_route_table_association_tfer--vpc-0418db1a1f7e8320e_id" { + value = "${aws_main_route_table_association.tfer--vpc-0418db1a1f7e8320e.id}" +} + +output "aws_route_table_association_tfer--subnet-0632d2f0a805011b3_id" { + value = "${aws_route_table_association.tfer--subnet-0632d2f0a805011b3.id}" +} + +output "aws_route_table_tfer--rtb-09b773d78201e7426_id" { + value = "${aws_route_table.tfer--rtb-09b773d78201e7426.id}" +} + +output "aws_route_table_tfer--rtb-0bad7bb3776ec2f72_id" { + value = "${aws_route_table.tfer--rtb-0bad7bb3776ec2f72.id}" +} diff --git a/terraform/generated/aws/route_table/provider.tf b/terraform/generated/aws/route_table/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/route_table/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/route_table/route_table.tf b/terraform/generated/aws/route_table/route_table.tf new file mode 100755 index 0000000..67e7deb --- /dev/null +++ b/terraform/generated/aws/route_table/route_table.tf @@ -0,0 +1,25 @@ +resource "aws_route_table" "tfer--rtb-09b773d78201e7426" { + route { + cidr_block = "0.0.0.0/0" + gateway_id = "igw-0fffc68ca33f6869f" + } + + vpc_id = "${data.terraform_remote_state.vpc.outputs.aws_vpc_tfer--vpc-0418db1a1f7e8320e_id}" +} + +resource "aws_route_table" "tfer--rtb-0bad7bb3776ec2f72" { + route { + cidr_block = "0.0.0.0/0" + network_interface_id = "eni-01e3526fd0a19ee2d" + } + + tags = { + Name = "linclean-db-private-rt" + } + + tags_all = { + Name = "linclean-db-private-rt" + } + + vpc_id = "${data.terraform_remote_state.vpc.outputs.aws_vpc_tfer--vpc-0418db1a1f7e8320e_id}" +} diff --git a/terraform/generated/aws/route_table/route_table_association.tf b/terraform/generated/aws/route_table/route_table_association.tf new file mode 100755 index 0000000..7771307 --- /dev/null +++ b/terraform/generated/aws/route_table/route_table_association.tf @@ -0,0 +1,4 @@ +resource "aws_route_table_association" "tfer--subnet-0632d2f0a805011b3" { + route_table_id = "${data.terraform_remote_state.route_table.outputs.aws_route_table_tfer--rtb-0bad7bb3776ec2f72_id}" + subnet_id = "${data.terraform_remote_state.subnet.outputs.aws_subnet_tfer--subnet-0632d2f0a805011b3_id}" +} diff --git a/terraform/generated/aws/route_table/variables.tf b/terraform/generated/aws/route_table/variables.tf new file mode 100755 index 0000000..3ee8bcb --- /dev/null +++ b/terraform/generated/aws/route_table/variables.tf @@ -0,0 +1,23 @@ +data "terraform_remote_state" "route_table" { + backend = "local" + + config = { + path = "../../../generated/aws/route_table/terraform.tfstate" + } +} + +data "terraform_remote_state" "subnet" { + backend = "local" + + config = { + path = "../../../generated/aws/subnet/terraform.tfstate" + } +} + +data "terraform_remote_state" "vpc" { + backend = "local" + + config = { + path = "../../../generated/aws/vpc/terraform.tfstate" + } +} diff --git a/terraform/generated/aws/sg/ap-northeast-2/provider.tf b/terraform/generated/aws/sg/ap-northeast-2/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/sg/ap-northeast-2/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/sg/ap-northeast-2/variables.tf b/terraform/generated/aws/sg/ap-northeast-2/variables.tf new file mode 100755 index 0000000..20e1793 --- /dev/null +++ b/terraform/generated/aws/sg/ap-northeast-2/variables.tf @@ -0,0 +1,7 @@ +data "terraform_remote_state" "sg" { + backend = "local" + + config = { + path = "../../../../generated/aws/sg/ap-northeast-2/terraform.tfstate" + } +} diff --git a/terraform/generated/aws/sg/outputs.tf b/terraform/generated/aws/sg/outputs.tf new file mode 100755 index 0000000..46cecc8 --- /dev/null +++ b/terraform/generated/aws/sg/outputs.tf @@ -0,0 +1,11 @@ +output "aws_security_group_tfer--app-sg_sg-01eb4b595c6303b33_id" { + value = "${aws_security_group.tfer--app-sg_sg-01eb4b595c6303b33.id}" +} + +output "aws_security_group_tfer--db-sg_sg-01d7376ba980bf2e6_id" { + value = "${aws_security_group.tfer--db-sg_sg-01d7376ba980bf2e6.id}" +} + +output "aws_security_group_tfer--default_sg-0a0b640ab1ee6c2e5_id" { + value = "${aws_security_group.tfer--default_sg-0a0b640ab1ee6c2e5.id}" +} diff --git a/terraform/generated/aws/sg/provider.tf b/terraform/generated/aws/sg/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/sg/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/sg/security_group.tf b/terraform/generated/aws/sg/security_group.tf new file mode 100755 index 0000000..b1023bc --- /dev/null +++ b/terraform/generated/aws/sg/security_group.tf @@ -0,0 +1,108 @@ +resource "aws_security_group" "tfer--app-sg_sg-01eb4b595c6303b33" { + description = "LinClean app server" + + egress { + cidr_blocks = ["0.0.0.0/0"] + from_port = "0" + protocol = "-1" + self = "false" + to_port = "0" + } + + ingress { + cidr_blocks = ["0.0.0.0/0"] + from_port = "443" + protocol = "tcp" + self = "false" + to_port = "443" + } + + ingress { + cidr_blocks = ["0.0.0.0/0"] + from_port = "80" + protocol = "tcp" + self = "false" + to_port = "80" + } + + ingress { + cidr_blocks = ["116.121.87.170/32"] + from_port = "22" + protocol = "tcp" + self = "false" + to_port = "22" + } + + ingress { + cidr_blocks = ["172.31.64.0/20"] + description = "DB-subnet-NAT" + from_port = "0" + protocol = "-1" + self = "false" + to_port = "0" + } + + name = "app-sg" + vpc_id = "vpc-0418db1a1f7e8320e" +} + +resource "aws_security_group" "tfer--db-sg_sg-01d7376ba980bf2e6" { + description = "LinClean db server" + + egress { + cidr_blocks = ["0.0.0.0/0"] + from_port = "0" + protocol = "-1" + self = "false" + to_port = "0" + } + + ingress { + cidr_blocks = ["116.121.87.170/32"] + from_port = "22" + protocol = "tcp" + self = "false" + to_port = "22" + } + + ingress { + from_port = "5432" + protocol = "tcp" + security_groups = ["${data.terraform_remote_state.sg.outputs.aws_security_group_tfer--app-sg_sg-01eb4b595c6303b33_id}"] + self = "false" + to_port = "5432" + } + + ingress { + from_port = "6379" + protocol = "tcp" + security_groups = ["${data.terraform_remote_state.sg.outputs.aws_security_group_tfer--app-sg_sg-01eb4b595c6303b33_id}"] + self = "false" + to_port = "6379" + } + + name = "db-sg" + vpc_id = "vpc-0418db1a1f7e8320e" +} + +resource "aws_security_group" "tfer--default_sg-0a0b640ab1ee6c2e5" { + description = "default VPC security group" + + egress { + cidr_blocks = ["0.0.0.0/0"] + from_port = "0" + protocol = "-1" + self = "false" + to_port = "0" + } + + ingress { + from_port = "0" + protocol = "-1" + self = "true" + to_port = "0" + } + + name = "default" + vpc_id = "vpc-0418db1a1f7e8320e" +} diff --git a/terraform/generated/aws/sg/variables.tf b/terraform/generated/aws/sg/variables.tf new file mode 100755 index 0000000..824ea7f --- /dev/null +++ b/terraform/generated/aws/sg/variables.tf @@ -0,0 +1,7 @@ +data "terraform_remote_state" "sg" { + backend = "local" + + config = { + path = "../../../generated/aws/sg/terraform.tfstate" + } +} diff --git a/terraform/generated/aws/subnet/ap-northeast-2/provider.tf b/terraform/generated/aws/subnet/ap-northeast-2/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/subnet/ap-northeast-2/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/subnet/ap-northeast-2/variables.tf b/terraform/generated/aws/subnet/ap-northeast-2/variables.tf new file mode 100755 index 0000000..36d640b --- /dev/null +++ b/terraform/generated/aws/subnet/ap-northeast-2/variables.tf @@ -0,0 +1,7 @@ +data "terraform_remote_state" "vpc" { + backend = "local" + + config = { + path = "../../../../generated/aws/vpc/ap-northeast-2/terraform.tfstate" + } +} diff --git a/terraform/generated/aws/subnet/outputs.tf b/terraform/generated/aws/subnet/outputs.tf new file mode 100755 index 0000000..063ef50 --- /dev/null +++ b/terraform/generated/aws/subnet/outputs.tf @@ -0,0 +1,19 @@ +output "aws_subnet_tfer--subnet-00b08863bb393665d_id" { + value = "${aws_subnet.tfer--subnet-00b08863bb393665d.id}" +} + +output "aws_subnet_tfer--subnet-014c415046105e05e_id" { + value = "${aws_subnet.tfer--subnet-014c415046105e05e.id}" +} + +output "aws_subnet_tfer--subnet-03ffeb8e049eec145_id" { + value = "${aws_subnet.tfer--subnet-03ffeb8e049eec145.id}" +} + +output "aws_subnet_tfer--subnet-0632d2f0a805011b3_id" { + value = "${aws_subnet.tfer--subnet-0632d2f0a805011b3.id}" +} + +output "aws_subnet_tfer--subnet-0ca72f19a480af2c8_id" { + value = "${aws_subnet.tfer--subnet-0ca72f19a480af2c8.id}" +} diff --git a/terraform/generated/aws/subnet/provider.tf b/terraform/generated/aws/subnet/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/subnet/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/subnet/subnet.tf b/terraform/generated/aws/subnet/subnet.tf new file mode 100755 index 0000000..f9068b7 --- /dev/null +++ b/terraform/generated/aws/subnet/subnet.tf @@ -0,0 +1,78 @@ +resource "aws_subnet" "tfer--subnet-00b08863bb393665d" { + assign_ipv6_address_on_creation = "false" + cidr_block = "172.31.0.0/20" + enable_dns64 = "false" + enable_lni_at_device_index = "0" + enable_resource_name_dns_a_record_on_launch = "false" + enable_resource_name_dns_aaaa_record_on_launch = "false" + ipv6_native = "false" + map_customer_owned_ip_on_launch = "false" + map_public_ip_on_launch = "true" + private_dns_hostname_type_on_launch = "ip-name" + vpc_id = "${data.terraform_remote_state.vpc.outputs.aws_vpc_tfer--vpc-0418db1a1f7e8320e_id}" +} + +resource "aws_subnet" "tfer--subnet-014c415046105e05e" { + assign_ipv6_address_on_creation = "false" + cidr_block = "172.31.32.0/20" + enable_dns64 = "false" + enable_lni_at_device_index = "0" + enable_resource_name_dns_a_record_on_launch = "false" + enable_resource_name_dns_aaaa_record_on_launch = "false" + ipv6_native = "false" + map_customer_owned_ip_on_launch = "false" + map_public_ip_on_launch = "true" + private_dns_hostname_type_on_launch = "ip-name" + vpc_id = "${data.terraform_remote_state.vpc.outputs.aws_vpc_tfer--vpc-0418db1a1f7e8320e_id}" +} + +resource "aws_subnet" "tfer--subnet-03ffeb8e049eec145" { + assign_ipv6_address_on_creation = "false" + cidr_block = "172.31.48.0/20" + enable_dns64 = "false" + enable_lni_at_device_index = "0" + enable_resource_name_dns_a_record_on_launch = "false" + enable_resource_name_dns_aaaa_record_on_launch = "false" + ipv6_native = "false" + map_customer_owned_ip_on_launch = "false" + map_public_ip_on_launch = "true" + private_dns_hostname_type_on_launch = "ip-name" + vpc_id = "${data.terraform_remote_state.vpc.outputs.aws_vpc_tfer--vpc-0418db1a1f7e8320e_id}" +} + +resource "aws_subnet" "tfer--subnet-0632d2f0a805011b3" { + assign_ipv6_address_on_creation = "false" + cidr_block = "172.31.64.0/20" + enable_dns64 = "false" + enable_lni_at_device_index = "0" + enable_resource_name_dns_a_record_on_launch = "false" + enable_resource_name_dns_aaaa_record_on_launch = "false" + ipv6_native = "false" + map_customer_owned_ip_on_launch = "false" + map_public_ip_on_launch = "false" + private_dns_hostname_type_on_launch = "ip-name" + + tags = { + Name = "linclean-db-subnet" + } + + tags_all = { + Name = "linclean-db-subnet" + } + + vpc_id = "${data.terraform_remote_state.vpc.outputs.aws_vpc_tfer--vpc-0418db1a1f7e8320e_id}" +} + +resource "aws_subnet" "tfer--subnet-0ca72f19a480af2c8" { + assign_ipv6_address_on_creation = "false" + cidr_block = "172.31.16.0/20" + enable_dns64 = "false" + enable_lni_at_device_index = "0" + enable_resource_name_dns_a_record_on_launch = "false" + enable_resource_name_dns_aaaa_record_on_launch = "false" + ipv6_native = "false" + map_customer_owned_ip_on_launch = "false" + map_public_ip_on_launch = "true" + private_dns_hostname_type_on_launch = "ip-name" + vpc_id = "${data.terraform_remote_state.vpc.outputs.aws_vpc_tfer--vpc-0418db1a1f7e8320e_id}" +} diff --git a/terraform/generated/aws/subnet/variables.tf b/terraform/generated/aws/subnet/variables.tf new file mode 100755 index 0000000..f64b884 --- /dev/null +++ b/terraform/generated/aws/subnet/variables.tf @@ -0,0 +1,7 @@ +data "terraform_remote_state" "vpc" { + backend = "local" + + config = { + path = "../../../generated/aws/vpc/terraform.tfstate" + } +} diff --git a/terraform/generated/aws/vpc/ap-northeast-2/provider.tf b/terraform/generated/aws/vpc/ap-northeast-2/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/vpc/ap-northeast-2/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/vpc/outputs.tf b/terraform/generated/aws/vpc/outputs.tf new file mode 100755 index 0000000..fe117d0 --- /dev/null +++ b/terraform/generated/aws/vpc/outputs.tf @@ -0,0 +1,3 @@ +output "aws_vpc_tfer--vpc-0418db1a1f7e8320e_id" { + value = "${aws_vpc.tfer--vpc-0418db1a1f7e8320e.id}" +} diff --git a/terraform/generated/aws/vpc/provider.tf b/terraform/generated/aws/vpc/provider.tf new file mode 100755 index 0000000..5c046f7 --- /dev/null +++ b/terraform/generated/aws/vpc/provider.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = "ap-northeast-2" +} + +terraform { + required_providers { + aws = { + version = "~> 5.100.0" + } + } +} diff --git a/terraform/generated/aws/vpc/vpc.tf b/terraform/generated/aws/vpc/vpc.tf new file mode 100755 index 0000000..6d19446 --- /dev/null +++ b/terraform/generated/aws/vpc/vpc.tf @@ -0,0 +1,9 @@ +resource "aws_vpc" "tfer--vpc-0418db1a1f7e8320e" { + assign_generated_ipv6_cidr_block = "false" + cidr_block = "172.31.0.0/16" + enable_dns_hostnames = "true" + enable_dns_support = "true" + enable_network_address_usage_metrics = "false" + instance_tenancy = "default" + ipv6_netmask_length = "0" +} From 3930b969193460f4a7304ec72841efc908308d52 Mon Sep 17 00:00:00 2001 From: sunm2n Date: Fri, 19 Jun 2026 19:50:22 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[chore]=20LinClean=20IAM=20=EC=8A=A4?= =?UTF-8?q?=EB=83=85=EC=83=B7=20export=20(=EA=B3=84=EC=A0=95=20=EB=AC=B4?= =?UTF-8?q?=EA=B4=80=20=EB=A6=AC=EC=86=8C=EC=8A=A4=20=EC=A0=9C=EC=99=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - github-actions-deploy(OIDC 배포 역할), linclean-ec2-role(EC2 역할) - linclean-deploy-ssm, linclean-ec2-ssm-read 정책 및 인스턴스 프로파일 - 계정 전체 export에서 사용자/access key/서비스연결역할 제거 (시크릿·잡음 방지) - 공개 레포 대비: ARN의 계정 ID를 평문 대신 data.aws_caller_identity로 동적 참조 IssueNum #17 --- terraform/generated/aws/iam/data.tf | 2 + .../generated/aws/iam/iam_instance_profile.tf | 5 ++ terraform/generated/aws/iam/iam_policy.tf | 56 ++++++++++++++++++ terraform/generated/aws/iam/iam_role.tf | 57 +++++++++++++++++++ .../aws/iam/iam_role_policy_attachment.tf | 14 +++++ terraform/generated/aws/iam/outputs.tf | 31 ++++++++++ terraform/generated/aws/iam/provider.tf | 11 ++++ 7 files changed, 176 insertions(+) create mode 100644 terraform/generated/aws/iam/data.tf create mode 100755 terraform/generated/aws/iam/iam_instance_profile.tf create mode 100755 terraform/generated/aws/iam/iam_policy.tf create mode 100755 terraform/generated/aws/iam/iam_role.tf create mode 100755 terraform/generated/aws/iam/iam_role_policy_attachment.tf create mode 100755 terraform/generated/aws/iam/outputs.tf create mode 100755 terraform/generated/aws/iam/provider.tf diff --git a/terraform/generated/aws/iam/data.tf b/terraform/generated/aws/iam/data.tf new file mode 100644 index 0000000..f9f298d --- /dev/null +++ b/terraform/generated/aws/iam/data.tf @@ -0,0 +1,2 @@ +# 공개 레포에 계정 ID 평문 노출을 피하기 위해 ARN의 account_id 부분을 동적으로 참조한다. +data "aws_caller_identity" "current" {} diff --git a/terraform/generated/aws/iam/iam_instance_profile.tf b/terraform/generated/aws/iam/iam_instance_profile.tf new file mode 100755 index 0000000..02be073 --- /dev/null +++ b/terraform/generated/aws/iam/iam_instance_profile.tf @@ -0,0 +1,5 @@ +resource "aws_iam_instance_profile" "tfer--linclean-ec2-role" { + name = "linclean-ec2-role" + path = "/" + role = "linclean-ec2-role" +} diff --git a/terraform/generated/aws/iam/iam_policy.tf b/terraform/generated/aws/iam/iam_policy.tf new file mode 100755 index 0000000..3c1d48e --- /dev/null +++ b/terraform/generated/aws/iam/iam_policy.tf @@ -0,0 +1,56 @@ +resource "aws_iam_policy" "tfer--linclean-deploy-ssm" { + name = "linclean-deploy-ssm" + path = "/" + + policy = < Date: Fri, 19 Jun 2026 19:50:23 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[docs]=20terraform=20=EC=9D=B8=ED=94=84?= =?UTF-8?q?=EB=9D=BC=20=EC=8A=A4=EB=83=85=EC=83=B7=20README=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 도구 버전·디렉터리 구조·스냅샷 범위(50개) 정리 - 재현 방법(provider 연결, AWS_REGION 우회) 기록 - 후속 작업 체크리스트(state 정합성/모듈화/OIDC 누락/레거시 provider/region·version) IssueNum #17 --- terraform/README.md | 80 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 terraform/README.md diff --git a/terraform/README.md b/terraform/README.md new file mode 100644 index 0000000..320ee5e --- /dev/null +++ b/terraform/README.md @@ -0,0 +1,80 @@ +# Terraform (IaC) — 현재 인프라 스냅샷 + +운영 중인 AWS 인프라를 [terraformer](https://github.com/GoogleCloudPlatform/terraformer)로 떠낸 **초기 스냅샷**이다. +이 디렉터리는 brownfield IaC 전환의 시작점으로, 아직 모듈화/리팩터링 전의 자동 생성 코드다. + +> ⚠️ 이 코드는 **아직 실물과 state로 연결되지 않았다.** `tofu plan`이 "No changes"가 되도록 +> 정합성을 맞추는 작업은 후속 단계에서 진행한다. (issue 후속) + +## 도구 + +| 도구 | 버전 | 비고 | +| --- | --- | --- | +| OpenTofu | 1.12.3 | IaC 엔진 (`tofu`) | +| terraformer | 0.8.30 | 기존 인프라 export (upstream archived, deprecated) | +| AWS provider | hashicorp/aws ~> 5.0 | | +| Region | `ap-northeast-2` | 서울 | + +## 디렉터리 구조 + +``` +terraform/ +├── provider.tf # OpenTofu + AWS provider 선언 +└── generated/aws/ # terraformer 자동 생성 (서비스별 분리) + ├── vpc/ subnet/ route_table/ igw/ eip/ nacl/ # 네트워크 + ├── ec2_instance/ eni/ sg/ # 컴퓨트 + 보안그룹 + ├── route53/ # DNS + └── iam/ # LinClean 관련 IAM만 +``` + +## 스냅샷 범위 (50개 리소스) + +| 서비스 | 개수 | 서비스 | 개수 | +| --- | --- | --- | --- | +| iam | 8 (정리 후) | route_table | 4 | +| route53 | 9 | sg | 3 | +| ec2_instance | 2 (app·db) | eni | 2 | +| subnet | 5 | vpc/igw/eip/nacl | 각 1 | + +## 재현 방법 + +```bash +cd terraform +tofu init # AWS provider 다운로드 + +# terraformer가 provider를 ~/.terraform.d/plugins 에서 찾으므로 바이너리 연결 필요 +mkdir -p ~/.terraform.d/plugins/darwin_arm64 +cp .terraform/providers/registry.opentofu.org/hashicorp/aws/*/darwin_arm64/terraform-provider-aws \ + ~/.terraform.d/plugins/darwin_arm64/terraform-provider-aws_v5.100.0_x5 + +# EC2 계열은 AWS_REGION 환경변수가 있어야 aws-global 오해석을 피함 +AWS_REGION=ap-northeast-2 terraformer import aws \ + --resources=vpc,subnet,route_table,igw,eip,ec2_instance,eni,sg,nacl,route53 \ + --regions=ap-northeast-2 --connect=true + +# iam/route53 는 글로벌 서비스라 별도 실행 (AWS_REGION 불필요) +terraformer import aws --resources=iam,route53 --regions=ap-northeast-2 +``` + +## 알려진 한계 / 후속 작업 + +- [ ] **state 정합성**: 각 서비스별 분리된 tfstate를 통합하고 `tofu plan` "No changes" 검증 +- [ ] **모듈화**: `tfer--` prefix의 자동 생성 코드를 의미 있는 모듈(network / compute / iam ...)로 리팩터링 +- [ ] **OIDC provider 누락**: terraformer가 `aws_iam_openid_connect_provider`(GitHub Actions OIDC)를 + 리소스로 export하지 못함. `github-actions-deploy` 역할의 trust policy에 ARN으로만 참조됨 → 수동 import 필요 +- [ ] **SSM Parameter Store**: SecureString 값이 평문 노출되므로 스냅샷에서 의도적으로 제외함. + 값이 아닌 "껍데기/참조" 형태로 별도 관리 필요 +- [ ] **IAM 정리됨**: terraformer는 계정 전체 IAM을 export하므로, LinClean 무관 사용자/access key/ + 서비스 연결 역할은 제거하고 `github-actions-deploy`·`linclean-ec2-role` 관련만 남김 +- [ ] **레거시 provider 주소**: terraformer가 `required_providers`에 `source`를 넣지 않은 구형(TF 0.12) + 형식으로 생성 → 현재 상태로는 `tofu init`이 실패함. 모듈화 시 루트 provider로 통합하며 해결 +- [ ] **provider region/version 불일치**: 글로벌 서비스(iam/route53) provider.tf는 `us-east-1`, + 나머지는 `ap-northeast-2`. 버전 핀도 generated는 `~> 5.100.0`, 루트는 `~> 5.0`. 통합 시 일원화 + (글로벌 리소스라 동작엔 영향 없음 — 모듈화 때 정리) + +## 주의 + +- `*.tfstate`, `.terraform/`, `*.tfvars`, `.terraform.lock.hcl` 은 `.gitignore` 처리됨 (민감정보 보호). +- **계정 ID 비노출**: 공개 레포라 IAM 정책/역할 ARN의 계정 ID를 평문 대신 + `data.aws_caller_identity.current.account_id`로 동적 참조한다 (`iam/data.tf`). +- 자동 생성 코드의 리소스 이름(`tfer--...`)은 후속 리팩터링에서 정리한다.