✔️ Terraform
- HashiCorp에서 오픈소스로 개발 중인 인프라스트럭쳐 구축 및 운영의 자동화를 지향하는 IaC 도구이다.
- Cloud, on-prem의 리소스 모두 구성 가능하다.
- Human-readable configuration을 지향한다.
✔️ Terraform 주요 기능
코드형 인프라
Terraform은 HCL 구성파일로 정의하며, 이를 통해 인프라의 구성을 코드화하고 버전 관리를 통해 관리할 수 있다.
실행 계획
실제로 배포하기 전에 계획 단계를 통해 수행 할 작업을 미리 확인할 수 있다. (Ansible --check와 비슷)
리소스 종속성
내부적으로는 리소스의 종속성이 있을 수 있다. 예를들어 aws vcp와 ec2를 선언했다 ec2가 vcp를 사용할것이다. 그래서 내부적으로 테라폼에서 vcp를 만들고 ec2를 만든다. 종속성이 있는것들은 테라폼이 알아서 확인함, 종속적이지 않은 리소스들은 병렬화한다(같이 만들어진다). 인스턴스 10 개가 종속성이 없으면 인스턴스 10개가 동시에 만들어진다.
변경 자동화
테라폼 코드를 변경하여 다시 배포할 때 , 기본적으로 어떤순서로 변경 되었는지 테라폼이 확인하여 순서대로 구성한다. Terraform이 알아서 구성하므로 사람이 직접 구성함으로서 발생하는 오류를 방지한다.
✔️ Terraform 특징
- 테라폼은 HCL(HashCorp Lanaguage)이라는 DSL(Domain Specific Lanaguage)를 사용한다.
- Infrastructure의 lifecycle을 관리해준다.
Terraform이 작동하기 위해서는 3가지가 필요하다.
- 신뢰할 수 있는 API
Terraform이 작동하려면 안정적인 API가 필요하다.
Terraform을 사용할 때 관리 콘솔의 사용을 중단하고 Terraform에 의존하여 API를 통해 변경한다.
API로 변경할 수 없는 것은 Terraform으로 관리할 수 없다.
- Go Client Library
Terraform은 Go로 작성되었으며 Go로 작성된 대상 API에 대한 클라이언트 라이브러리가 필요하다.
클라이언트 라이브러리는 대상 앱에 대한 HTTP(S) 호출을 수행한다.
- Terraform provider
핵심 Terraform 소프트웨어는 공급자를 사용하여 대상 API와 상호 작용한다.
제공자는 Terraform 플러그인 SDK를 사용하여 Go로 작성된다.
Terraform 공급자는 Terraform이 관리할 수 있는 리소스 집합을 추가한다.
공급자는 Terraform 코드의 일부가 아니며 특정 응용 프로그램을 관리하기 위해 별도로 생성된다.
기본적으로 공급자는 Terraform이 리소스 집합에 대해 CRUD 작업을 수행할 수 있도록 한다.
공급자로 무장한 Terraform은 애플리케이션의 상태를 관리할 수 있다.
Terraform ← Terraform provider (공급자) ←Target API
Target API - 클라우드사(Amazon, Google, Azure 등)에서 공개한 API
공급자가 공개된 API를 HCL이라는 DSL로 사용할 수 있도록 정의한다.
사용자는 HCL를 이용해 인프라스트럭쳐 코드를 작성한다.
공급자는 이를 Cloud가 알 수 있는 언어로 변환하여 전달한다.
Terraform's Provider
테라폼의 주요한 Providers
Verified Providers
✔️ Terraform's Workflow
Write
-> Plan
-> Apply
- 코드 작성(Write) - HCL 언어로 코드를 작성한다.
- 계획(Plan) - (생략 가능) 실행 가능한지 체크한다.
- 적용(Apply) - 코드를 적용해 리소스를 생성한다.
✔️ Terraform 설치
테라폼 설치하기
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo yum -y install terraform
테라폼 설치 확인
[vagrant@controller ~]$ terraform --version
Terraform v1.1.9
on linux_amd64
AWS CLI 설치 및 configure 설정
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo yum -y install unzip
unzip awscliv2.zip
ls
cd aws/
sudo ./install
aws configure
본인 정보 확인
[vagrant@controller aws]$ aws sts get-caller-identity
{
"UserId": "",
"Account": "",
"Arn": ""
}
참고
'DevOps > Terraform' 카테고리의 다른 글
[Terraform] 입력 변수 (Input Variable) (0) | 2022.04.21 |
---|---|
[Terraform] 리소스 생성 순서와 의존성 (0) | 2022.04.21 |
[Terraform] Terraform 상태 확인 (0) | 2022.04.21 |
[Terraform] Terraform Workflow (실행 순서) (0) | 2022.04.21 |
[Terraform] Terraform 구성 파일 (0) | 2022.04.21 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!