[Terraform] 데이터 소스(Data Source) Data Sources - Configuration Language | Terraform | HashiCorp Developer Data sources allow Terraform to use external data, function output, and data from other configurations. Learn data resource arguments, behavior, and lifecycle. developer.hashicorp.com 데이터 소스(Data Source) 공급자에서 가져온 읽기 전용 정보를 나타낸다. 데이터 공급자의 API만 물어보고 해당 데이터를 나머지 테라폼 코드에서 사용할 수 있게한다. 각 테라폼 공급자는 다..
[Terraform] 의존성 관리 (depends_on) Terraform은 선언형이기 때문에, 리소스에 종속성이 있으면 Terraform 엔진이 파악 후 순서대로 작업을 진행한다. 그러나 종속성이 없는 리소스지만, 종속성 선언이 필요한 경우엔 depends_on 인수를 사용하여 명시적으로 종속성을 선언해줄 수 있다. 암시적 종속성 눈으로 보이지 않는 종속성 예를 들어 VPC를 사용하는 EC2 인스턴스를 선언하면, 암시적으로 VPC를 먼저 생성 후 인스턴스를 생성한다. 명시적 종속성 사용자가 명시적으로 선언하는 종속성 예를 들어 s3 버킷과 인스턴스는 관계가 없으므로, s3 객체에 접근을 해 데이터를 가져와야 할 경우 명시적으로 종속을 선언해줘야 한다. 🔎 depends_on 명시적 종속성을 선언하는 경..
[Terraform] RDS 생성 테라폼으로 AWS의 RDS를 생성해보자 관련하여 코드 사용법들은 아래 링크에 잘 나와있다. https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/db_instance Terraform Registry registry.terraform.io RDS를 구성하기 위해선 다음이 필요하다. Security Group DB 인스턴스의 엔진은 MySQL을 사용, 3306 Port를 허용해주는 DB 보안그룹 Subnet Group 두 개 이상의 AZ에 생성된 private subnet 차례대로 만들어보자. 1. 보안 그룹 #aws_security_group resource "aws_security_gro..
[Terraform] LoadBalancer 생성 🔎LoadBalancer 여러 대상 인스턴스 또는 컨테이너로 들어오는 트래픽을 분산시켜 애플리케이션의 가용성과 확장성을 향상시키는 중요한 구성 요소 HTTP 앱애는 ALB(Application Load Balancer)가 가장 적합하기 때문에, ALB를 생성해줄 것이다. 생성을 하기 전, ALB의 구성을 먼저 살펴보자 리스너 : 특정 포트와 프로토콜을 수신 리스너 규칙 : 리스너에 들어오는 요청을 가져옴 => 특정 경로 및 호스트 이름과 일치하는 요청을 대상 그룹으로 보냄 대상 그룹 : LB에서 요청을 받는 하나 이상의 서버, 서버의 상태를 확인하고 요청을 정상 노드로 보냄 ALB는 대상 그룹에 대상을 등록하고, 대상 그룹으로 트래픽을 라우팅한다. 작업 ..
[Terraform] Key-Pair 생성 후 EC2 인스턴스 SSH 접속 앞서 테라폼으로 생성했던 EC2 인스턴스들은, Key가 없기때문에 SSH 접속을 할 수가 없었다. Terraform에는 Key를 사용하거나 Key를 생성하는 방법을 사용하여 SSH 접속을 할 수가 있다. 1. 기존에 있는 Key 사용하기 resource에 key_name을 추가해주면 된다. 나는 기존에 사용하고 있던 key 이름이 test 였기때문에, test로 두었다. resource "aws_instance" "web" { ami = "ami-0c9c942bd7bf113a2" #ubuntu 22.04 instance_type = "t2.micro" vpc_security_group_ids = [aws_security_group..
[Terraform] AWS Custom VPC 생성 AWS 콘솔에서 VPC를 생성하면 클릭 클릭으로 매우 간단하게 생성이 된다, 미리 보기를 보면 어떤 리소스들이 생성되는지 확인이 가능하다. 테라폼으로 Custom VPC를 생성하기 위해선 위와 같은 리소스들을 모두 생성해줘야 한다. 1. VPC 생성 vpc.tf 라는 새로운 파일을 하나 생성해준다. 위의 리소스를 모두 생성하려면 코드가 매우 길어지니 주석으로 분리를 해준다. #aws_vpc resource "aws_vpc" "vpc" { cidr_block = "10.0.0.0/16" instance_tenancy = "default" enable_dns_support = true enable_dns_hostname = true tags = { Nam..
[Terraform] 템플릿 파일(Templatefile) 테라폼에서 템플릿은 특정 형식으로 작성된 텍스트 파일로, 테라폼 설정을 작성하기 위한 기반으로 사용됨 템플릿은 테라폼 코드에서 변수를 사용하고, 반복문, 조건문 등의 로직을 적용할 수 있음 https://developer.hashicorp.com/terraform/language/functions/templatefile templatefile - Functions - Configuration Language | Terraform | HashiCorp Developer The templatefile function reads the file at the given path and renders its content as a template. dev..
[Terraform] 테라폼 변수와 출력 테라폼은 코드 내에서 값들을 저장하고 재사용할 수 있는 매개변수를 사용할 수 있다. 예를 들어, 특정 네트워크 서브넷 또는 인스턴스 유형을 Terraform 모듈의 변수로 정의할 수 있다. 이런식으로 변수를 사용하면, 모듈을 사용하는 프로젝트나 환경마다 변수 값을 다르게 지정할 수 있다. 이를 통해 코드의 유연성과 가독성을 높일 수 있다. Variables 입력 변수 (Input) 모듈의 매개 변수 역할을 한다 사용자는 소스를 편집하지 않고도 동작을 사용자 정의할 수 있음 함수의 입력 파라미터(인자 값)와 비슷한 개념 Input Variables - Configuration Language | Terraform | HashiCorp Developer Input v..
[Terraform] Terraform으로 AWS EC2 서버 배포하기 (2) https://heywantodo.tistory.com/106 [Terraform] Terraform으로 AWS EC2 서버 배포하기 (1) [Terraform] Terraform으로 AWS EC2 서버 배포하기 (1) Amazon EC2 인스턴스를 Default VPC에서 Terraform을 이용해 코드로 생성해보자 1. 공급자 (Provider) 구성 테라폼을 사용하기 위한 첫번째 단계 AWS 공급자를 사 heywantodo.tistory.com 앞 포스팅에 이어서 Userdata를 통해 EC2에 nginx를 설치하고, 보안그룹을 지정해주는 과정을 진행해보자 1. Userdata userdata는 aws_instance r..
[Terraform] Terraform으로 AWS EC2 서버 배포하기 (1) Amazon EC2 인스턴스를 Default VPC에서 Terraform을 이용해 코드로 생성해보자 1. 공급자 (Provider) 구성 테라폼을 사용하기 위한 첫번째 단계 AWS 공급자를 사용하고, 서울 리전에 인프라를 배포한다는 것을 의미함 1-1. 작업 폴더 생성 & 액세스키 등록 액세스키 등록을 다하고나면 aws s3 ls 명령을 통해서 접근이 잘 되는지 확인 mkdir ec2_test cd ec2_test aws configure aws s3 ls 액세스키에 대한 설명은 아래 포스팅에서 확인할 수 있음 [AWS] AWS CLI 설치 & 인증 [AWS] AWS CLI 설치 & 인증 AWS Command Line Inte..
[Terraform] Terraform 기본 명령어 테라폼은 공식 Document에 설명이 굉장히 친절하게 잘 되어있음 그렇기 때문에 공식 Document를 적극적으로 활용하는 것을 추천 Terraform CLI Documentation | Terraform | HashiCorp Developer Learn Terraform's CLI-based workflows. You can use the CLI alone or with Terraform Cloud or Terraform Enterprise. developer.hashicorp.com 테라폼 코드 테라폼 코드는 선형적인 언어로, 하나씩 추가되면서 작성될 수 있음 테라폼 기본 명령어 테라폼 코드 초기화 terraform init 테라폼 구성 요소 확인..
[Terraform] Terraform이란? Terraform HashiCorp에서 개발한 코드형 인프라스트럭처 자동화 도구 클라우드 서비스와 온프레미스 인프라스트럭처를 프로비저닝하고 관리하기 위해 사용됨 Terraform은 다양한 클라우드 프로바이더를 지원하며, AWS, Azure, GCP, VMware, OpenStack 등과 통합하여 인프라스트럭처를 관리할 수 있음 🔎 Infrastructure as Code (IaC) 인프라 운영 코드로 개발하여 관리하는 도구 기존의 수동으로 시스템마다 인프라를 구현하던 시대가 가고, 코드로 개발된 인프라 구성이 활성화되고 있음 인프라 구성의 시간과 비용이 절감되고, 일관성 보장, 오류 감소, 구성 변동 제거 등의 강점이 있음 테라폼 장점 협업하기 좋음 dry-r..