-
[TF]Terraform 기초 및 설치DevOps/Terraform 2021. 12. 15. 01:11
Infrastructure as Code(IaC)란?
- 직역하면 코드로서의 인프라이다.
- 코드를 통해 인프라 생성, 설정, 관리를 할 수 있는 방식
IaC의 장점
- 비용 절감
- 배포 속도 향상
- 오류 감소
- 인프라 일관성 향상
- 구성 변동 제거
IaC 구현에 자동화 및 구성 관리 툴을 사용할 수 있다.
대표적으로 아래와 같은 툴이 있다.
- Chef
- Puppet
- Terraform
- Ansible
- AWS CloudFormation
그 중에서 Terraform을 사용하여 AWS에서 어떻게 인프라를 코드로 구성하는지 공부할려고 한다.
Terraform이란?
- HashiCorp에서 만든 오픈소스 IaC툴
- .tf 파일 형식 (HCL 기반)
- UTF-8 사용
- AWS, GCP, Azure 퍼블릭 클라우드 및 다양한 서비스 지원
🔍구성요소
- provider : 생성 할 인프라의 종류
- resource : 생성 할인프라 자원
- state : 리소스의 상태
- output : 생성된 자원의 변수 형태로 state에 저장
- remote : 다른 경로의 state 참조
🔍기본명령어
- init : 명령어 사용을 위해 각종 설정 진행, 테라폼 명령어 최초 실행할 때 수행
- plan : 작성한 코드로 생성을 미리보기
- apply : 코드 적용
- import : 생성된 리소스를 state 파일로 옮김
- state : state 파일을 사용할 때 사용
- destroy : 생성된 리소스 삭제
- terraform state list : 생성된 리소스 리스트
- init
테라폼의 다른 명령어들을 위한 설정을 진행, 내부적으로 provider와 state, module 설정 등을 위한 명령어
terraform init
- plan
작성한 테라폼 코드가 어떻게 생성될지 미리보기를 제공하는 명령어
terraform plan
- apply
작성한 테라폼 코드를 적용시켜 리소스를 생성하는 명령어
terraform apply
Terraform 설치
AWS에서 EC2 Instance를 통해 테라폼을 설치할 것이다.
EC2 Instance 사용환경은 아래와 같다.
OS EC2 Instance Type ubuntu 20.04 t3.micro 프리티어 사용이 가능하면 t2.micro로 사용해도 된다.
1. 패키지 업데이트 및 HashiCorp 패키지 설치
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
2. HashiCorp Key 추가
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
3. HashiCorp 공식 Repository 추가
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
4. Terraform 설치
sudo apt-get update && sudo apt-get install terraform
편의성을 위한 세팅
리눅스에서 코드 및 편의성을 위해 추가로 세팅한게 있다.
vim 설치
sudo apt-get install vim
vim 기능 추가
vi ~/.vimrc
기능
set number " line 표시 set ai " auto indent set si " smart indent set cindent " c style indent set shiftwidth=4 " 자동 공백 채움 시 4칸 set tabstop=4 " tab을 4칸 공백으로 set ignorecase " 검색 시 대소문자 무시 set hlsearch " 검색 시 하이라이트 set nocompatible " 방향키로 이동 가능 set fileencodings=utf-8,euc-kr " 파일 저장 인코딩 : utf-8, euc-kr set fencs=ucs-bom,utf-8,euc-kr " 한글 파일은 euc-kr, 유니코드는 유니코드 set bs=indent,eol,start " backspace 사용가능 set ruler " 상태 표시줄에 커서 위치 표시 set title " 제목 표시 set showmatch " 다른 코딩 프로그램처럼 매칭되는 괄호 보여줌 set wmnu " tab 을 눌렀을 때 자동완성 가능한 목록 syntax on " 문법 하이라이트 on filetype indent on " 파일 종류에 따른 구문 강조 set mouse=a " 커서 이동을 마우스로 가능하도록
alias 세팅
수정 - 마지막 라인에 alias tf=terraform 추가
vi /etc/bashrc
동기화
source /etc/bashrc
terraform 대신 tf라는 alias를 통해 명령어를 입력할 수 있다.
나는 윈도우에서 코딩을 할 때 Jetbrains 제품을 애용한다.
요즘 파이썬을 쓰는 일이 많아 Pycharm에 terraform 플러그인을 추가하여 사용하였다.
terraform 플러그인을 설치하면 자동완성이 지원된다.
어디까지나 편의성을 위해 설치한 것이지 필수는 아니다.
참조
[1] https://www.redhat.com/ko/topics/automation/what-is-infrastructure-as-code-iac
[2] https://learn.hashicorp.com/tutorials/terraform/install-cli?in=terraform/aws-get-started
[3] https://gabii.tistory.com/entry/Ubuntu-vim-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%84%A4%EC%A0%95
'DevOps > Terraform' 카테고리의 다른 글
[TF]Terraform 조건문 (0) 2021.12.21 [TF]Terraform Count, Foreach (0) 2021.12.19 [TF]Terraform Variable & Local & Output (0) 2021.12.19 [TF] AWS Resource 생성 (0) 2021.12.19 [TF]HCL 기초문법 (0) 2021.12.19