본문 바로가기

♻ Terraform(테라폼)

(45)
Terraform module을 활용 방법 설명 # Terraform modules 관련 사이트 https://registry.terraform.io/modules/terraform-aws-modules/security-group/aws/latest/submodules/http-80 Terraform Registry registry.terraform.io 1. 모듈의 사용방법 - 테라폼의 모듈을 잘 설명한 그림은 아래와 같다. - 아래의 그림처럼 모듈은 재사용성을 극대화 시킨 사용방법이다. 2. 모듈의 사용방법 가장 중요한 결론! 가장 중요한 결론은 위의 그림에서도 설명했 듯이 input 값과 output 값이라고 볼 수 있다. input 값은 Root 모듈의 입력 변수로 선언되고, 해당 변수를 받는 곳은 자식 모듈의 var.리소스 값으로 선언되어 있..
Terraform 변수 사용 # Terraform 변수 사용에 대해서 알아본다. - 변수의 기본 사용법은 아래와 같다. - 기본적으로 아래의 코드에서 var로 선언된 부분은 해당 폴더안에 vars.tf 라는 파일이 존재해야 하고, 해당 파일안에 해당 변수를 나타내는 내용이 있어야 한다. # 기본 문법 Name = "${var.변수명}" # 사용 예시 tags = { Name = "${var.alltag}-rtb-public" } - 기본적인 폴더 및 파일의 구조를 보면 아래와 같다. 예를들어 vpc라는 폴더안에 main.tf 파일과 vars.tf 파일이 존재한다고 가정하면, main.tf파일은 리소스 변수를 선언하고 실행한다. vars.tf는 해당 변수를 외부 모듈로 부터 받을수 있도록 선언되어 있다. 설명이 좀 부족한데 아래의 코..
Terraform 병렬처리 (parallelism) # Terraform parallelism 처리옵션을 사용하여 빠르게 처리한다. - Terraform을 활용하여 인프라 자원을 생성 시 인프라의 크기가 클 경우 생성 및 변경하는데 시간이 오래 걸린다. 그래서 terraform apply를 할때 옵션으로 parallelism 즉 병렬처리를 할 수 있는 옵션을 제공한다. 명령어는 아래와 같다. terraform apply -parallelism=n # 30개의 병렬처리 수행 terraform apply -parallelism=30 - 그외 다양한 옵션은 차근차근 하나씩 알아보자.
Terrafrom Provisioner 란? # 사용 목적 Terraform을 활용하여 인프라를 구성 시 여러가지 추가 작업이 필요하다. 가장 많이 하는 작업은 shellscript를 통한 application의 설치와 기타 설정 작업 들일 것이다. terraform의 작업을 고도화 하기위해서는 외부에 설정된 파일의 사용은 거의 필수 이므로 해당 내용에대한 Case-Study가 필요하다. # Terraform Provisioner에 대해 알아보고, 간단한 사용법 확인 테라폼 프로비저너(provisioner)는 테라폼을 실행할 때 여러가지 추가 작업을 위해 로컬 시스템이나 원격 시스템에서 스크립트를 실행하는데 사용된다. 여기서 로컬 시스템에서 스크립트를 실행하는 local-exec , 원격 리소스에서 스크립트를 실행하는 remote-exec, 원격 ..
Terraform Provisioner 를 활용한 ShellScript 실행 # Terraform Provisioner 를 활용한 ShellScript 실행하기 Terraform을 활용하여 인프라를 만들다보면 여러가지 패키지를 설치할 필요가 있다. 예를들어 ec2 인스턴스를 생성하면서 아파치 웹서버를 동시에 설치하고, 해당 index.html 파일에 특정 문자를 넣고 웹 서비스를 실행할때, 아래와 같은 스크립트가 필요할 것이다. #!/bin/bash sudo yum install -y httpd touch /var/www/html/index.html sudo su - echo "zzanggu의 DB서버 테스트 중..." > /var/www/html/index.html exit sudo systemctl start httpd sudo systemctl enable httpd - 위..
Terraform을 활용한 인프라 설계 01 # 일단 EC2를 생성하기 위한 기본적인 인프라를 설계한다. 필수 인프라 요소 4가지가 핵심이다. 1. VPC 2. Subnet (Private, Public) 3. Gateway (Internet-GW, NAT-GW) 4. Routing Table (Public, Private) # 기본 아키텍처 구조는 아래와 같다. - 비용을 절약하기 위해 NAT-GW를 1개만 생성 했다... # Ver_02
Terraform을 활용하여 EKS 클러스터 구축하기 # Terraform을 활용하여 EKS 클러스터를 구축하는 방법에 대해서 알아보자. 1. 일단 Terraform 설치는 아래의 링크로 이동하여 설치 2021.08.29 - [Terraform(테라폼)] - AWS CLI 및 Terraform 설치 AWS CLI 및 Terraform 설치 1. AWS CLI 설치 curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" 2. 다운받은 CLI 파일을 압축해제 unzip awscliv2.zip sudo ./aws/install 3. Terraform 설치 # 테라폼 다.. may9noy.tistory.com 2. 설치 후 Terraform의 폴더 구조는 아래와 같게 한다...
모듈을 활용한 재사용 가능한 인프라 생성 테라폼의 핵심은 바로 모듈을 활용한 재사용 이라고 할 수 있다. - 모듈의 간단한 사용 방법은 아래와 같다. 만약 Root 폴더에 asg.tf 라는 파일이 존재하고 Root 폴더에 asg.tf에 정의된 값을 활용하여 module.asg 폴더 안에 main.tf에 정의된 리소스를 실행시킨다고 가정할 경우 아래의 flow를 따라서 동작한다. (매우 간단하지만 실제로 해보지 않으면 헷갈림, 머리가 나빠서 그런거 같기도...) Root폴더의 실행파일.tf → 실행하는 Resource의 variables.tf와 맵핑 → 실행하는 Resource의 main.tf의 var.{resource_name} 으로 선언 되어 있어야 한다. - 그리고 asg.tf 파일의 내용을 보면 아래와 같다. module "asg" { s..