목차
IAC
1-1 Iac (Infra as a Code) 란?
1-2 Iac 종류
1-3 lac 가치와 기대 효과
Terraform
2-1 Terraform 이란?
2-2 Terraform 주요 명령어
2-3 Terraform 구성
IAC
1-1 Iac 란?
Iac 란 Infrastructure as Code의 약자로 IT 서비스를 위한 시스템을 구성할 때 수동으로 구성하는 대신 Shell기반의 스크립트(Shell Based Script)를 사용하여 컴퓨팅 인프라를 구성하는 기술을 말합니다.
"프로그래밍 형 인프라" 라고도 하는 iac (Infrastructure as Code)는 인프라 구성을 마치 소프트웨어를 프로그래밍 하는 것처럼 처리하는 방식입니다.
결과적으로 애플리케이션을 작성하는 작업과 애플리케이션이 실행되는 환경을 구현하는 작업 사이의 경계가 모호해지기 시작했습니다.
애플리케이션은 자체적으로 VM(가상 시스템)을 생성하고 오케스트레이션 하는 스크립트를 포함할 수 있습니다. 이는 클라우드 컴퓨팅의 기본적인 부분으로, DevOps에 반드시 필요한 요소입니다
1-2 Iac의 종류
Chef
Puppet
Red Hat Ansible Automation Platform [Ansible 개념과 설치]
Saltstack
Terraform
AWS CloudFormation
Tool | Tool Type | Approach | Language |
---|---|---|---|
CHEF | 설정 관리 | 선언형 & 명령형 | Ruby |
puppet | 설정 관리 | 선언형 | DSL & ERB |
Ansible | 설정 관리 | 선언형 & 명령형 | YAML |
CloudFormation | 인프라 프로비저닝 | 선언형 | JSON & YAML |
Terraform | 인프라 프로비저닝 | 선언형 | HCL (Hashicorp Configuration Language) |
1-3 lac 가치와 기대 효과
첫 번째 - 비용 절감입니다. IT 시스템의 운영/관리 에는 많은 인력과 비용이 소요됩니다. 단순히 재무적인 측면에서 비용 절감 효과 이외에 사람이 수 작업으로 진행하는 일들을 자동화하고, 운영/관리를 통합 관리함으로써 많은 비용 효율을 얻을 수 있으며, 기업 입장에서는 보다 중요한 비즈니스에 집중함으로써 높은 비용 효율을 확보할 수 있게 됩니다.
두 번째 - 빠른 실행입니다. 인프라 운영/관리의 자 동화를 통해 인프라를 보다 빠르고 효과적으로 구 성할 수 있습니다. 빠른 실행 능력을 통해 빠르게 변화하는 시장 상황에 보다 민첩하게 대응할 수 있으므로, 시장 선도적인 기술 도입을 통한 시장의 혁신을 주도할 수 있게 됩니다
세 번째 - 리스크 관리입니다. 인프라의 자동화는 수 동 구성 시 발생할 수 있는 오류와 인적 오류 (Human Error)와 관련된 위험(Risk)을 제거할 수 있습니다. 이런 위험을 제거하면 서비스의 다운타임(Down Time)이 감소하고 신뢰성이 향상될 수 있습니다.
이러한 laC의 가치(Value)와 기대 효과는 기업이
IT 시스템의 개발과 운영을 위한 DevOps를 구현하는데 필요한 핵심적인 역량이 됩니다.
2-1 [lac] Terraform이란?
쿠버네티스, aws, gcp, ncp 등의 클라우드 자원들을 코드 형태로 작성해서 배포하고 운영할 수 있는 환경을 제공합니다. Terraform은 기본적으로 코드를 작성하고 plan 명령을 이용해서 코드를 시뮬레이션을 하고 이상이 없으면 적용할 수 있다. Terraform은 테라폼 코어라는 기능을 제공하여 프로바이더와 프로비저너를 활용할 수 있고, 다양한 대상의 API를 연결해서 쓸 수 있도록 제공하는 도구 입니다.
Terraform은 원하는 결과(state)를 명시하면, Terraform이 그 결과를 달성하기 위해 필요한 일련의 작업들을 자동으로 수행하는 선언적(declarative) 방식으로 인프라를 관리하는 도구입니다. 선언적인 방식은 인프라 관리를 단순화하고, 일관성을 유지할 수 있게 도와줍니다. 또한, 변경 내역을 추적하기도 용이합니다.
Terraform은 자체적인 DSL(Domain Specific Language)을 사용합니다. DSL은 특정 분야에 특화된 언어를 말하며, Terraform에서는 HCL(HashiCorp Configuration Language)이라는 DSL을 사용합니다.
HCL은 Terraform을 위해 개발된 언어이며, HCL은 JSON과 유사한 구문을 사용하며, 구조화된 데이터를 표현하기 적합합니다. 그러나 HCL은 JSON보다 가독성이 높고 유연하다는 장점이 있습니다.
또한, HCL에서는 변수와 함수를 사용할 수 있어서, 코드를 재 사용하고 유연하게 구성할 수 있으며 복잡한 구성을 쉽게 표현할 수 있습니다.
2-2 Terraform 주요 명령어
terraform init - 초기화
terraform plan - 인프라 변경 사항에 관한 실행 계획
terraform validate - 유효성 검증
terraform apply - 계획을 기반으로 작업을 실행
terraform destroy - 모든 개체를 제거
terraform fmt - 코드 정렬 (띄어쓰기, 정렬 등)
terraform show - 현재 상태에 대한 Inspect 결과 출력
2-3 Terraform 코드는 어떻게 작성되는가?
Terraform은 위의 그림처럼 구성 되어 있습니다. 각 부분을 Software의 Block으로 생각하면 됩니다.
모든 Block을 한 파일에 구성 할 수도 있고, 분리 할 수도 있습니다.
Terraform 파일들과 SW Block을 같이 보게 되면 위 그림과 같습니다.
각 파일의 특징은 다음과 같습니다.
main.tf : 생성 될 자원들의 정보를 가지고 있는 파일입니다. resource, module SW Block을 포함하고 있습니다.
outputs.tf : terraform apply가 되고 나서 결과를 출력하거나 특정 값들을 다른 Block에서 참조 하도록 정보를 저장합니다.
Add Comment