Terraform 10

Terraform _ 로드밸런스

웹 서비스에서 중요한 부분을 차지하고 있는 로드밸런서을 terrafrom 을 통해 설정해보겠습니다. 시나리오는 80port로 들어오는것을 모두 443포트로 보내는 것이다. 또한 해당 도메인으로 접속할 수 있도록 설정한다. 대상그룹 설정 우선 80port의 대상그룹을 설정하고 ec2에 연결하는 작업이 필요하다. # 대상그룹 설정 resource "aws_lb_target_group" "my80" { name = "my80" port = 80 protocol = "HTTP" vpc_id = aws_vpc.my_vpc.id } # 로드밸런서 ec2 연결 resource "aws_lb_target_group_attachment" "attachment_ec2"{ target_group_arn = aws_lb_ta..

Terraform 2023.09.30

Terraform _ Certificate 요청 및 Route 53

이번에 aws 에서 route53을 통해 도메인 서비스를 자동으로 등록해주도록 해보겠습니다. 그리고 사전에 aws certificate 도메인 인증 요청을 하는 코드를 보도록 하겠습니다. Terraform - Certificate # # 인증서 요청 resource "aws_acm_certificate" "cert" { domain_name = "mydns.link" validation_method = "DNS" tags = { Environment = "test" } lifecycle { create_before_destroy = true } } Terraform - Route 53 # route 53 resource "aws_route53_zone" "my-route53" { name = "mydns..

Terraform 2023.09.28

Terraform_DB subnet , DB instance

이번에는 aws db을 생성해보도록 하겠다. DB subnet이를 위해 우선, db subnet을 생성해야 한다. resource는 aws_db_subnet_group 이다. 해당 db 서브넷은 private-db 서브넷 각각 다른 리젼의 것 2개를 넣는다,resource "aws_db_subnet_group" "my-db-g"{ name = "my-db-g" subnet_ids = [aws_subnet.test-private-subnet-db-a.id , aws_subnet.test-private-subnet-db-c.id] } DB instanceresource는 db instance이다. mysql로 한번 생성 해보도록 하겠다.# rds 생성 resource "aws_db_instance" "my-..

Terraform 2023.09.22

Terraform_ EC2 instance 생성

EC2 instance 생성 이번에는 Terrafrom으로 ec2 인스턴스를 구성하는 방법에 대해 알아 보도록 하겠다. 시나리오 1. Public ec2 - openvpn(public subnet) 2. Private ec2 - 웹 서버 운영 (private subnet) , Linux 이렇게 구성해보도록 하겠다. Ec2 생성 resource는 aws_instance 을 사용하고 ec2을 생성하기 위해서는 해당 애플리케이션이나 os의 ami을 알고 있어야하고 또한 ssh 통신을 위해 아마존 키 페어가 있어야한다. openvpn 생성 resource "aws_instance" "my-openvpn" { ami = "ami-000ea6370ba7c6885" instance_type = "t2.micro" k..

Terraform 2023.09.22

Terraform_ 보안그룹에서 내 IP 설정하는 법

그런경우가 많이 있겠냐만은 보안그룹에서 허용 ip을 내 ip만 설정하고싶을 때가 있다(?) 이를 위해서는 내 ip을 직접 알아와서 cidr_block에 입력해도 되겠지만, terraform은 자동화 도구인 만큼 이 작업도 자동으로 해주고 싶어졌다 찾아보니 이것을 활용하면 될 것 같다. https://registry.terraform.io/providers/hashicorp/http/latest/docs/data-sources/http Terraform Registry registry.terraform.io 외부 api 데이터를 받아서 포맷팅 하는 방법을 선택했다. 내 IP 주소 가져오기 data "http" "my_ip" { url = "https://api64.ipify.org?format=text" ..

Terraform 2023.09.21

Terraform_ Security-group

이번에는 Terraform에서 보안그룹을 설정하는 코드를 공부하고 작성해보려고한다. Security group 시나리오 admin은 openvpn을 통해서 app-ec2에 접속이 가능하고, rds에 접근이 가능하며, user는 오직 lb를 통해서만 app-ec2에 접근이 가능하도록 하였다. egress는 모든 트래픽 허용으로 하겠다 Security_group terraform resource로는 security_group이다. 아래 옵션으로는 ingress 와 egress, vpc, name을 설정하면 된다. Alb-sg egress의 protocol에서의 -1 은 모든 protocol을 허용하겠다는 의미이다, # alb -sg resource "aws_security_group" "alb-sg"{ na..

Terraform 2023.09.21

Terraform _ Route-table , association

Terraform_ route table 이번에는 사전에 만든 서브넷을 라우팅하고 nat와 ig 을 라우팅하는 법을 작성해보도록 하겠다. public - route association 우선, 퍼블릭 라우트와 프라이빗 라우트를 만들어줘야 한다. 사용리소스는 aws_route_table_association 이다. 퍼블릭 라우트에는 퍼블릭 서브넷 두개를 연결해준다. ## my public- route resource "aws_route_table_association" "test-public-subnet-a_association"{ subnet_id = aws_subnet.test-public-subnet-a.id route_table_id = aws_route_table.my-public-route.id..

Terraform 2023.09.20

Terraform_aws gateway(internet,nat)

이전에는 간단하게 vpc을 생성하고, subnet을 코드로 생성하는법을 정리했다면, 이번에는 gateway , 즉 internet-gateway 와 nat-gateway을 생성하는 법을 정리해보려고 한다. Internet-gateway resource 명칭은 aws_internet_gateway로 서브넷과 마찬가지로 vpc_id 라는 매개변수를 가진다. ## internet gateway resource "aws_internet_gateway" "test-ig"{ vpc_id = aws_vpc.test_vpc.id # 해당 vpc 이름 tags = { Name = "my-ig" } } Nat-gateway resource 명칭은 aws_nat_gateway로, 우선 탄력적 ip을 하나 할당받은 이후에 n..

Terraform 2023.09.19

Terraform_ aws vpc , subnet 설정

Terraform Terraform은 버전 관리, 재사용 및 공유가 가능한 사람이 읽을 수 있는 구성 파일로 클라우드 및 온프레미스 리소스를 모두 정의할 수 있는 코드 도구로서의 aws 등 다양한 provider을 지원합니다. 그래서 Terraform을 활용하면 aws 설정을 자동화로, 코드로 관리할 수 있게 된다! VPC 설정 vpc는 aws_vpc 라는 reosoure로 정의한다. resource "aws_vpc" "test_vpc"{ cidr_block = "10.1.0.0/16" # 해당 vpc 네트워크 enable_dns_hostnames = true enable_dns_support = true instance_tenancy = "default" tags = { Name = "my -vpc" ..

Terraform 2023.09.19