일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 생성 패턴
- 논문 정리
- ssh
- Til
- 신혼 여행
- study
- 실용주의 프로그래머
- 오블완
- DevOps
- Playwright
- Go-lang
- amazon ecs
- 청첩장 모임
- 티스토리챌린지
- AWS 비용 절감
- 디자인 패턴
- 14일 공부
- Rust
- docker
- terraform
- leetcode
- 도커 주의사항
- Monthly Checklist
- AWS
- 경로 계획 알고리즘
- PostgreSQL
- github
- MAPF
- 지표
- 구조 패턴
- Today
- Total
밤 늦게까지 여는 카페
terraform이 뭘까? - IaC! 인프라도 형상 관리해야죠! 본문
안녕하세요. 오늘은 가장 인기 있는 IaC 툴 중 하나인 terraform에 대해서 공부해보려고 합니다.
혹시 진행 중인 프로젝트의 인프라가 클라우드 서비스를 통해서 관리되고 있고,
인프라에 대한 형상 관리가 필요하다면 terraform에 대해서 공부해보는 것을 추천드립니다.
IaC란
IaC는 Infrastructure As Code의 약자로 인프라의 할당, 수정, 배포, 관리를 코드로 진행하자는 개념입니다.
terraform 이외에도 다음과 같은 유명한 IaC 툴들이 있습니다.
- terraform
- AWS CloudFormation
- Azure Resource Manager
- Google Cloud Deployment Manager
- Ansible
IaC 툴을 사용하는 이유
요즘 클라우드 서비스가 제공되면서 개발자들이 인프라까지 관리해야 하는 경우가 많아졌습니다.
특히나 스타트업 같은 경우에는 적은 수의 개발자들이 인프라를 관리하면서 서비스까지 개발해야 합니다.
코드는 Version Control System(VCS)이 있어서 변경사항이 기록되지만 인프라는 그렇지 않습니다.
어떻게 변경되었고, 어떤 리소스들을 사용하고 있는지 신경써서 관리하지 않으면 인수인계도 어렵고, 비용 추적도 어려워집니다.
사실, 클라우드 서비스들이 리소스의 생성, 수정, 삭제 관련 API들을 제공해주기 때문에 어떤 프로그래밍 언어를 사용하더라도 인프라를 코드로 관리할 수 있습니다.
즉 개발자들과 비교적 더 친한 VCS로 인프라를 관리할 수 있는 것이죠!
- 문서 작성은 필수지만 항상 귀찮더라구요....ㅜ
그렇지만 자사 서비스들 개발하기도 바쁜데 클라우드 서비스에 새롭게 추가되는 리소스들과, API의 변경사항들을 유지보수할 시간이 있을까요?
IaC 툴들을 사용하면 이런 시간을 절약할 수 있습니다.
게다가 전용 스크립트 언어를 제공하기 때문에 직접 코드로 작성하는 것보다 훨씬 쉽고, 빠르게 인프라를 관리할 수 있습니다.
terraform 설치법
리눅스 기준으로 설치법만 작성하였습니다.
자세한 사항은 아래의 공식 문서 링크에서 확인하실 수 있습니다 :)
윈도우도 설치프로그램 다운로드 하는 것이 전부라서 쉽게 설치하실 수 있습니다!
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform
공식 문서 링크: https://www.terraform.io/downloads
terraform 사용법
terraform 을 사용하면서 자주 사용하는 명령어는 많지 않더라구요.
terraform init
terraform plan
terraform apply
이 3가지가 terraform의 거의 모든 명령어입니다.
terraform init
현재 디렉토리를 working directory 삼아 terraform 워크스페이스를 초기화합니다.
명시된 terraform 버전으로 사용하는 모듈(aws, azure, gcp 등의 provider가 제공)들을 설치합니다.
terraform plan
terraform 워크스페이스에 있는 terraform 스크립트의 내용과 .tfstate를 비교하여 변경 사항을 알려줍니다.
새롭게 추가 될 리소스와 삭제될 리소스를 보여줍니다.
- 실제로 인프라가 변경되는 것은 아니고 변경사항만 보여줍니다.
terraform apply
terraform 워크스페이스에 있는 terraform 스크립트를 기반으로 실제 인프라를 변경시킵니다.
apply를 실행하더라도 plan 결과를 보여주고 apply를 진행할지 말지 사용자에게 질의하므로
마지막으로 꼭, 꼭 변경사항을 검토하고 진행하시기 바랍니다.
- 얼핏 보고 넘겼다가 RDS가 삭제되는 불상사가 있었습니다...ㅜ
나머지는 스크립트 작성에 달려있습니다!
IaC 툴인 terraform에 공부해보신 소감은 어떠신가요?
스크립트 작성은 테라폼으로 간단한 스택을 만들어보는 포스팅에서 다뤄보겠습니다!
'DevOps' 카테고리의 다른 글
terraform 사용하기 - GCP terraform으로 Compute Engine 배포하기 (0) | 2022.11.19 |
---|---|
terraform cloud - 개인 PC에서 terraform 관리는 그만!!! (0) | 2022.10.29 |
github action을 활용한 CD - CD 여기 있어요 (0) | 2022.10.13 |
github action을 활용한 CI - CD는 어디 두고 왔어요? (0) | 2022.10.11 |
CI/CD 툴이 뭘까? - 주니어 개발자의 오해 (0) | 2022.10.10 |