♻ Terraform(테라폼) (45) 썸네일형 리스트형 Terraform - Module을 활용한 VPC 설계 # 생성 리소스 설명 -목표 아키텍처는 아래와 같고, Terraform Module을 활용하여 VPC를 설계한다. - 리전 : ap-northeast-2 (서울) - AZ : A영역과 C영역 사용 - 서브넷 : 4개 (퍼블릭 2개, 프라이빗 2개) - 인터넷 게이트웨이 : 1개 - NAT 게이트웨이 : 1개 - EIP (NAT에서 사용) : 1개 - 퍼블릭 라우팅 테이블 : 1개 - 프라이빗 라우팅 테이블 : 1개 - 기타 : 라우팅 테이블 연결 작업 → 퍼블릭 서브넷 2개, 프라이빗 서브넷 2개 - EC2 : 2개의 프라이빗 인스턴스 생성 # 목표 아키텍처 - BasicVPC 0. 기본 폴더 구조 확인 - 기본 폴더 구조는 아래와 같다. ① 리소스를 생성하기 위한 변수들을 입력한다. ② vpc.tf에서.. Terraform Module 구조 설명 # Terraform Module 구조 설명 - Terraform Module 구조를 확인하는 방법 - 아래의 명령어로 현재의 구조를 확인할 수 있다. tree . - tree. 명령어를 실행한 결과는 아래와 같다. 아래 구조를 잠시 설명하자면, Terraform_seung라는 폴더가 있고 그 밑에 다른 폴더는 생략하고 modules라는 폴더가 존재, 해당 폴더 아래에 module.ec2와 module.vpc가 존재하는 구조라고 볼 수 있다. - 아래의 링크를 참조하여 모듈을 왜 사용하는지 확인한다. 2022.04.15 - [Terraform(테라폼)/Terraform Modules] - 모듈을 활용한 재사용 가능한 인프라 생성 모듈을 활용한 재사용 가능한 인프라 생성 테라폼의 핵심은 바로 모듈을 활용한.. 테라폼 모듈을 2개 사용하는 방법 When you declare modules as follows in ./main.tf: module "networking" { source = "./modules/networking" } module "security" { source = "./modules/security" } The references to module.networking and module.security are only in scope for local variables, resources, data sources, outputs, and expressions in TF files in the same directory (./*.tf in this case). Since ./modules/security/security.tf i.. Terraform 모듈 사용 시 주의 할점 (file path 관련) # Terraform 에서 모듈 사용 시 file path 와 관련하여 설명 - 아래의 내용을 보면 private_ec2_postgresql.tf 파일에서 사용하는 private_key 파일의 패스 파일의 주소가 입력 되어 있다. 근데 실제로 module을 사용하여 작업을 수행하면 파일이 존재하지 않는다는 메세지가 나온다. 이유는 간단한데, 모듈은 모듈의 root 경로에서 파일을 찾고, private_ec2_postgresql.tf는 해당 파일이 존재하는 폴더의 경로에서 파일을 찾기 때문에 파일을 참조하는 위치가 다르기 때문이다. - 매우 당연한 이야기 인데, 그래서 만약에 root 경로에서 실행하는 것이 아니고, 해당 모듈에서 직접 terraform 리소스 생성을 실행할 경우 위와 같이 private_.. Terraform을 활용하여 기존 인프라 정보를 가져오기 # AWS로 구성된 기존 인프라를 가져오는 방법에 대해서 설명 1. terraforming을 통한 기존 인프라 코드를 가져오기 - 일단 지금은 AWS만 지원이 되며 Ruby on Rails가 설치 되어 있어야 한다. https://rubyinstaller.org/downloads/ Downloads Which version to download? If you don’t know what version to install and you’re getting started with Ruby, we recommend that you use the Ruby+Devkit 3.1.X (x64) installer. It provides the biggest number of compatible gems and inst.. 목표 아키텍처 구성 및 terraform 을 활용한 생성 # 목표아키텍처를 기반으로 테라폼 코드를 활용한 인프라 구성 1. 목표 아키텍처 - 목표 아키텍처 리소스 VPC, 인터넷 게이트웨이, NAT 게이트웨어, EC2 인스턴스, 퍼블릭 서브넷 2개, 프라이빗 서브넷 2개, ap-northeast-2 A-C - 위와 같이 목표 아키텍처를 정의 하였고, 실행한 아파치 웹서버로 접근을 하게 되면 아래와 같은 페이지를 출력하게 된다. 2. 테라폼 코드 살펴보기 - 일단 모듈로 구성을 했기때문에 폴더 구조는 아래와 같다. - Root 경로의 파일을 정의하여 해당 모듈인 vpc 및 ec2를 실행하여 리소스를 생성하는 구조이다. - ec2 폴더 main.tf 더보기 # RSA 알고리즘을 이용해 private 키 생성 resource "tls_private_key" "pk".. Terraform Output 이란? # Terraform Output - Terraform Output이란? 자바에서 java system.out.println 를 활용하여 리소스값을 화면에 출력하여 확인하는것처럼 테라폼에서도 리소스 값을 화면에 출력하여 확인하는 방법이 있다. - 테라폼에서의 변수는 입력변수와 출력변수로 나눌수 있는데 입력변수는 variable.tf에 정의하고 출력변수는 output.tf에 정의한다. - 리소스를 정의하고 콘솔 창에서 확인하는 방법으로 주로 output을 활용한다. 내가 정의한 리소스 의 실제 값이 어떤값을 부여 받았는지 확인하는 방법이 될 것이고, 두번째는 output을 활용하지 않으면 설정한 리소스 값을 모두 콘솔에서 직접 확인해 봐야한다는 불편함이 존재한다. 추가로 output은 테라폼 모듈이 실행되.. Terraform Variable (변수를 활용한 인프라 생성) # 테라폼에서 변수를 활용한 인프라 생성 - 변수를 활용한 인프라 생성은 재사용 측면에서 유용하다. 변수값만 변경하여 새로운 리소스 환경을 생성할 수 있다. - 일단 파일의 구성은 아래와 같다. (main.tf, output.tf, vars.tf) - 생성할 테라폼 main.tf 코드는 아래와 같다. provider "aws" { region = "ap-northeast-2" } resource "aws_instance" "example" { ami = "ami-0eddbd81024d3fbdd" instance_type = "t2.micro" vpc_security_group_ids = ["${aws_security_group.instance.id}"] user_data = 이전 1 2 3 4 5 6 다음