Terraform is an open-source infrastructure as code software tool that provides a consistent CLI workflow to manage hundreds of cloud services. Terraform codifies cloud APIs into declarative configuration files.
테라폼은 코드로써의 인프라(IaC)를 위한 오픈소스 소프트웨어 도구로 수백 개의 클라우드 서비스를 관리하기 위해 일관된 CLI 워크 플로우를 제공한다.
테라폼은 현재 가장 많이 쓰이는 IaC도구라고 한다. IaC는 인프라 구성요소를 코드를 통해 구축하는 것을 말한다. IaC는 코드로 인프라를 구축하는 것이기 때문에 코드의 장점을 그대로 가져와서 작성/유지보수가 용이하고 재사용성이 높다는 장점을 가지고 있다.
2. Introduction(링크)
Welcome to the intro guide to Terraform! This guide is the best place to start with Terraform. We cover what Terraform is, what problems it can solve, how it compares to existing software, and contains a quick start for using Terraform.
Introduction 페이지에서는 테라폼이 무엇인지, 테라폼이 무슨 문제를 해결해 줄 수 있는지, 테라폼과 기존 소프트웨어의 차별점과 테라폼을 시작하는 빠른 방법을 소개하고 있다.
그래서 테라폼은 무엇을 위해 사용하고, 무엇을 할 수 있는 걸까?
Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular service providers as well as custom in-house solutions.
테라폼은 인프라를 안전하고 효율적으로 구축, 변경, 버전 관리를 하기 위한 도구이다. 테라폼으로 기존에 존재하는 인기있는 서비스(맞춤형 사내 솔루션)를 관리 할 수 있다.
이렇게 원하는 클라우드에서 인프라를 구축하고, 변경하고, 제거할 수 있고
쿠버네티스도 테라폼으로 관리가 가능하고, 타입스크립트와 파이썬으로도 테라폼을 작성할 수 있다고 한다.
Configuration files describe to Terraform the components needed to run a single application or your entire datacenter. Terraform generates an execution plan describing what it will do to reach the desired state, and then executes it to build the described infrastructure. As the configuration changes, Terraform is able to determine what changed and create incremental execution plans which can be applied.
구성 파일(Configuration file)은 단일 애플리케이션 또는 전체 데이터 센터를 실행하는 데 필요한 구성 요소를 테라폼에게 알려준다.
테라폼은 원하는 상태(desired state)에 도달하기 위해 수행할 작업을 설명하는 실행 계획(execution plan)을 생성한 다음 이를 실행하여 설명한 인프라를 구축한다.
구성이 변경되면, 테라폼은 변경된 사항을 확인하고 적용될 수 있는 증분 실행 계획(incremental execution plan)을 생성 할 수 있다.
The infrastructure Terraform can manage includes low-level components such as compute instances, storage, and networking, as well as high-level components such as DNS entries, SaaS features, etc.
테라폼이 관리 할 수있는 인프라에는 컴퓨팅 인스턴스, 스토리지 및 네트워킹과 같은 하위 수준 구성 요소와 DNS 항목, SaaS(Service as a Software) 기능 등과 같은 상위 수준 구성 요소가 포함된다.
* 테라폼을 보여주는 가장 적합한 예제 동영상(링크)
테라폼의 대표적인 특징은 아래와 같다.
1. Infrastructure as Code
Infrastructure is described using a high-level configuration syntax. This allows a blueprint of your datacenter to be versioned and treated as you would any other code. Additionally, infrastructure can be shared and re-used.
인프라를 high-level의 configuration syntax로 구축할 수 있다. 이것은 데이터센터의 청사진(링크)을 다른 코드들 처럼 버전화하고 다룰 수 있게한다. 그리고 인프라를 공유하고 재사용할 수 있게 된다.
2. Execution Plans
Terraform has a "planning" step where it generates an execution plan. The execution plan shows what Terraform will do when you call apply. This lets you avoid any surprises when Terraform manipulates infrastructure.
테라폼에는 실행 계획을 생성하는 "planning"단계가 있다. 실행 계획은 apply를 호출 할 때 테라폼이 수행 할 작업을 보여준다. 이를 통해 테라폼으로 인프라를 조작할 때 생길 수 있는 문제를 회피할 수 있다.
이 부분은 테라폼의 기본 명령어에 있는 plan과 apply에 대한 이야기다. plan은 테라폼으로 작성한 코드가 어떻게 만들어질지 예측한 결과를 보여주고, apply는 코드로 명령어를 생성하는데 이는 실제 인프라에 영향을 미치게 된다.
즉, plan에서 문제가 생기면 apply에서도 문제가 생길 수 있으니(실제 인프라에 문제가 생김) plan에서 미리 확인을 해보고 apply를 해야한다는 것이다.
3. Resource Graph
Terraform builds a graph of all your resources, and parallelizes the creation and modification of any non-dependent resources. Because of this, Terraform builds infrastructure as efficiently as possible, and operators get insight into dependencies in their infrastructure.
테라폼은 모든 리소스의 그래프를 생성하고, 모든 비종속(non-dependent; 의존적이지 않은) 리소스의 생성 및 수정을 병렬화(parallelize)합니다. 이 때문에 테라폼은 가능한 한 효율적으로 인프라를 구축할 수 있고, 운영자는 운영중인 인프라의 종속성(dependency)에 대한 인사이트를 얻을 수 있다.
4. Change Automation
Complex changesets can be applied to your infrastructure with minimal human interaction. With the previously mentioned execution plan and resource graph, you know exactly what Terraform will change and in what order, avoiding many possible human errors.
최소한의 인간 상호 작용으로 복잡한 변경들(changeset)을 인프라에 적용 할 수 있다. 앞서 언급 한 실행 계획(execution plan)과 리소스 그래프를 사용하면 테라폼이 무엇을 어떤 순서로 변경할 것인지 정확히 알 수 있으므로 수많은 가능한 인적 오류를 방지 할 수 있다.
'DevOps' 카테고리의 다른 글
Terraform aws s3 bucket 만들어보기 (0) | 2021.04.16 |
---|---|
ec2 zsh, oh-my-zsh 설치 (0) | 2021.04.06 |
윈도우에서 aws ec2 .pem파일로 접속하기(putty) (0) | 2021.04.06 |
[DevOps/03]The Core Terraform Workflow 테라폼 코어 워크플로우 (0) | 2021.04.06 |
[DevOps/02]Terraform Use cases 테라폼을 사용하는 이유 (0) | 2021.04.06 |