- 4. Terraform(테라폼)2023년 03월 30일 12시 33분 10초에 업로드 된 글입니다.작성자: 각수짱728x90반응형SMALL
Terraform
테라폼(Terraform)은 하시코프Hashicorp에서 오픈소스로 개발중인
클라우드 인프라스트럭처 자동화를 지향하는 코드로서의 인프라스트럭처Infrastructure as Code, IaC 도구
IaC는 코드로 인프라스트럭처를 관리한다는 개념으로 테라폼에서는 하시코프 설정 언어HCL, Hashicorp Configuration Language을 사용해 클라우드 리소스를 선언.
아마존 웹 서비스Amazon Web Service가 자체적으로 만든 AWS 클라우드 포메이션AWS CloudFormation의 경우 AWS만 지원하는 것과 달리 테라폼의 경우 아마존 웹 서비스Amazon Web Service, 구글 클라우드 플랫폼Google Cloud Platform, 마이크로소프트 애저Microsoft Azure와 같은 주요 클라우드 서비스를 비롯한 다양한 클라우드 서비스들을 프로바이더 방식으로 제공.
이를 통해 테라폼만으로 멀티 클라우드의 리소스들을 선언하고 코드로 관리하는 것도 가능.
테라폼 특징
API를 호출해 명령을 실행하는 절차적인 방법과 달리 HCL은 선언적으로 리소스를 정의하기 때문에 리소스를 정의하고 여러번 테라폼을 실행한다고 여러 개의 리소스가 만들어지지 않음.
코드를 한번 실행 것과 여러번 실행한 결과가 같은 성질(멱등성)
테라폼 맛보기
테라폼 설치
terraform 명령어 설치
https://www.terraform.io/downloads
설치후 환경변수 등록
awk cli 설치
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html
개발 환경 설정
aws 인증 정보 설정
cmd에서
설정 정보 확인aws configure list
cmd에서
aws configure 명령어 실행
발급 받은 Access Key 내용 입력
Region은 ap-northeast-2
Default output format은 그냥 엔터aws configure
VSCode 다운 및 설치
https://code.visualstudio.com/
hashicorp Terraform 플러그인 추가
테라폼 코드 작성
EC2 생성
테라폼 파일(ex: main.tf) 작성
# AWS 프로바이더 설정 provider "aws" { region = "ap-northeast-2" # AWS 리전 설정 (예: 아시아태평양 서울) } # 리소스 생성: EC2 인스턴스 resource "aws_instance" "app_server" { ami = "ami-068a0feb96796b48d" # 사용할 Amazon Machine Image ID 설정 instance_type = "t2.micro" # 인스턴스 유형 설정 (예: t2.micro) # 인스턴스에 할당할 태그 설정 tags = { Name = "ExampleAppServerInstance" # 인스턴스 이름 설정 } }
- provider: 어떤 클라우드 환경에 리소스를 생성할 것인지 설정. 여기서는 AWS를 사용.
- resource: 리소스의 종류와 이름을 지정. 여기서는 aws_instance라는 종류의 리소스를 생성하고 있으며, 이름은 app_server로 설정.
테라폼 명령어 실행
terraform init 초기화 terraform validate 검증 terraform plan 계획 terraform apply 적용 terraform destroy 제거 terraform show 상태 확인
테라폼 구성요소
- provider: 테라폼으로 생성할 인프라의 종류를 의미
- resource: 테라폼으로 실제로 생성할 인프라 자원을 의미
- state: 테라폼을 통해 생성한 자원의 상태를 의미
- output: 테라폼으로 만든 자원을 변수 형태로 state에 저장하는 것을 의미
- module: 공통적으로 활용할 수 있는 코드를 문자 그대로 모듈 형태로 정의하는 것을 의미
- remote: 다른 경로의 state를 참조하는 것을 의미, output 변수를 불러올때 주로 사용
테라폼 작동 원리
- Local 코드 : 현재 개발자가 작성/수정하고 있는 코드
- AWS 실제 인프라 : 실제로 AWS에 배포되어 있는 인프라
- Backend에 저장된 상태 : 가장 최근에 배포한 테라폼 코드 형상
테라폼은 실제 인프라와 Backend에 저장된 상태를 일치하도록 만드는 프로그램
terraform init
terraform init 명령어는 프로젝트를 terraform을 구동할 수 있는 환경으로 만듦.
보통 provider가 작성된 main.tf가 존재하는 경로에서 사용. terraform 최초 구동 시 반드시 필요한 명령어.terraform plan
현재 작성된 terraform 코드로 생성되고 변경될 내역을 보여줌.
실제 환경에 적용하기 전 검증할 수 있게 하는 매우 중요한 명령어이다.
또한 terraform 코드의 문법적 오류가 없는지도 검증 가능.terraform apply
terraform apply는 실제로 인프라스트럭처를 구성.
terraform destroy
구성했던 인프라스트럭처의 resource를 모두 회수.
테라폼 리소스 코드 양식
https://registry.terraform.io/providers/hashicorp/aws/latest/docs
resource "리소스타입" "리소스이름" { 속성이름 = "속성값" }
728x90반응형LIST'IaC' 카테고리의 다른 글
4. Terraform(테라폼) - 변수 (0) 2023.03.30 4. Terraform(테라폼) - 실습 (0) 2023.03.30 Ansible(앤서블) - 활용(3계층구현) (0) 2023.03.29 3. Ansible(앤서블) (0) 2023.03.29 쉘 프로그래밍 - 활용 (0) 2023.03.29 이전글이 없습니다.댓글