IaC

Terraform - (1) 소개 및 설치

Operation CWAL 2021. 3. 29. 22:40

Terraform

Terraform을 간단히 소개하자면, 다양한 Cloud Provider(ex: AWS, Azure)의 플랫폼을 지원하는 IaC툴이다. IaC(Infrastructure as Code) 개념이 아직 낯설다면 아래 링크를 참고하길 바란다.

 

코드형 인프라(IaC)란?

코드형 인프라(Infrastructure as Code, IaC)는 수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝하는 것을 말합니다.

www.redhat.com

설치

Ubuntu/Debian 계열의 Linux는 apt를 통해 Terraform을 설치할 수 있다. 

$ curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
$ sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
$ sudo apt-get update && sudo apt-get install terraform

 

정상적으로 설치되었는지 아래 명령어로 확인해보자.

$ terraform -help

AWS IAM User 생성

Root 계정을 실제 서비스에 사용하는 것은 보안상 매우 위험하므로, 반드시 전용 IAM User를 생성해야 한다. 필자는 'terraform'이라는 user를 생성하고, AdministratorAccess Policy를 부여하였다. 

Access type은 'Programmatic access'만 체크한다. Acess Key 정보가 담긴 CSV 파일은 반드시 다운로드하되, 다른 사람과 공유하지 않도록 주의한다.

 

AWS CLI 설치

Access Key 정보를 Terraform 파일(.tf)에 직접 사용할 수도 있지만, 외부에 노출될 위험이 크므로 지양하는 방식이다. 대신 aws cli를 사용하여 사용자의 Local 환경에 따로 저장(~/.aws/credentials)하고 Terraform에서 이를 자동으로 읽어오는 방식으로 진행한다.  Linux에서 aws cli를 설치하기 위해선 python과 pip가 필요하며 설치 자체는 매우 간단하다.

$ pip3 install --user awscli

다음은 aws cli 사용을 위해 Access Key 및 Region을 등록할 차례다.

$ aws configure

'terraform' IAM User를 생성하면서 얻은 Access Key ID, Secret Access Key 그리고 Region을 차례대로 입력한다. '--profile' 옵션을 사용하지 않을 경우, 'default' 프로필을 사용한다.

 

참고로 Production Level에선 Hashicorp Vault를 통해 Access Key를 암호화하여 관리하는 것이 일반적이다.

 

What comes next?

다음 시간은 Terraform으로 AWS의 리소스를 생성하면서 기본 사용법을 익혀볼 예정이다.

'IaC' 카테고리의 다른 글

Terraform - (3) Variables  (0) 2021.06.07
Terraform - (2) 기본 사용법  (0) 2021.06.06
Ansible - Playbook Tutorial(3/3)  (0) 2021.03.07
Ansible - Playbook Tutorial(2/3)  (0) 2021.03.06
Ansible - Playbook Tutorial(1/3)  (0) 2021.03.06