본문 바로가기
IT/DevOps

[Terraform] 테라폼이란,

by cg1735 2023. 10. 12.
반응형

[ 목차 ]

    Terraform

    오늘은 하시코프에서 오픈소스로 개발중인 클라우드 IaC(Infrastructure as Code) 도구 인 Terraform에 대해서 알아 보겠습니다. 사실 테라폼을 포스팅 하게 된 이유는 테라폼을 잘 모르기 때문입니다. 본인 신입 사원 교육때 부장님께서 "야 테라폼 뭔지 몰라?" 라고 물으셨는데 모른다고 대답했더니 "너는 그것도 모르냐" 라고 하셔서 이제서야 테라폼을 이해하기 위해 포스팅 해보도록 하겠습니다. 

     

     
    개발자 : HashiCorp

    안정화 버전 : 1.6.1 / 2023년 10월 12일
    저장소 : github.com/hashicorp/terraform
    운영 체제 : macOS, Windows, Linux, FreeBSD, OpenBSD, Solaris
    종류 : IaC 도구
    라이선스 : Business Source License: BSL

    웹사이트 : https://www.terraform.io/

     

    Terraform by HashiCorp

    Terraform is an infrastructure as code tool that enables you to safely and predictably provision and manage infrastructure in any cloud.

    www.terraform.io

     

    Terraform 메인페이지에는 다음과 같이 쓰여있습니다.

    Infrastructure automation to provision and manage resources in any cloud or data center.
    클라우드나 데이터 센터의 리소스를 프로비저닝하고 관리하는 인프라 자동화.

     

    Why Terraform?

     

    테라폼은 크게 4가지를 주력으로 설명하고 있습니다.

     

    • 모든 인프라 프로바이더의 리소스를 프로비저닝하기 위해 HCL을 사용하여 인프라를 Terraform 파일의 코드로 구성합니다.
    • IT 운영 및 개발자 팀 전반에 걸쳐 인프라를 코드로 구성, 협업, 재사용 및 프로비저닝하는 인프라 자동화 워크플로우입니다.
    • 역할 기반 액세스 제어, 정책 시행 및 감사를 통해 보안, 컴플라이언스 및 비용 관리를 위한 가드레일을 구축합니다.
    • 셀프 서비스 인프라를 코드로 사용하여 조직의 모든 팀으로 워크플로우 자동화를 확장하고 VCS, ITSM 및 CI/CD와 통합합니다.

    위의 설명에서 알 수 있듯이 테라폼의 목적은

    인프라의 리소스를 구축하는 것을 목표로 발전해 나가고 있습니다.

     

    Terraform key features

     

    테라폼의 8가지 사례를 통해 어떤곳에서 사용되는지 알아보겠습니다.

     

    IaC : 코드를 사용해 서버, DB, 방화벽 정책 등 대부분의 리소스를 포함한 Infrastructure의 프로비저닝을 자동화 할 수 있습니다.

     

    Multi-cloud provisioning : AWS Lambda를 통해 서버리스 기능을 배포하고, Microsoft Azure Active Directory 리소스를 관리하고, Google 클라우드에서 로드 밸런서를 프로비저닝하는 등의 작업을 수행할 수 있습니다.

     

    Manage Kubernetes : AWS, Microsoft Azure 또는 Google Cloud에서 Kubernetes 클러스터를 프로비저닝 및 관리하고 Kubernetes Terraform 프로바이더를 사용하여 클러스터와 상호 작용할 수 있습니다.

     

    Manage network infrastructure : 로드 밸런싱 구성원 풀 업데이트 또는 방화벽 정책 적용과 같은 주요 네트워킹 작업을 자동화합니다.

     

    Manage virtual images : HCP Packer와 Terraform Cloud로 멀티 클라우드 황금 이미지 파이프라인을 만듭니다.

     

    Integrate with existing workflows : 기존 CI/CD 워크플로우를 통해 인프라스트럭처 구축 자동화


    Enforce policy as code : Sentinel 정책을 코드로 사용하여 사용자가 인프라를 만들기 전에 정책을 시행합니다.

     

    Inject secrets into Terraform : 동적으로 생성된 비밀 및 자격 증명 사용을 자동화합니다.

    끝으로

    테라폼은 Go 프로그래밍 언어로 개발 되고 있습니다. 테라폼에서는 HCL을 사용해 클라우드 리소스를 선언합니다. AWS CloudForamtion의 경우 AWS만 지원하는 것과 달리 테라폼의 경우 아마존 웹 서비스Amazon Web Service, 구글 클라우드 플랫폼Google Cloud Platform, 마이크로소프트 애저Microsoft Azure와 같은 주요 클라우드 서비스를 비롯한 다양한 클라우드 서비스들을 프로바이더 방식으로 제공하고 있습니다. 이를 통해 테라폼만으로 멀티 클라우드의 리소스들을 선언하고 코드로 관리하는 것도 가능합니다

    출처: www.terraform.io

     

    테라폼 사용자는 HCL 언어로 클라우드 리소스를 정의하고 이 내용을 테라폼 CLI 애플리케이션(terraform)으로 자신의 클라우드 계정에 실제로 반영할 수 있습니다. API를 호출해 명령을 실행하는 절차적인 방법과 달리 HCL은 선언적으로 리소스를 정의하기 때문에 리소스를 정의하고 여러번 테라폼을 실행한다고 여러 개의 리소스가 만들어지지는 않습니다. 테라폼을 사용하면 이 과정을 계획(plan)과 적용(apply) 단계로 나누어 진행할 수 있습니다. plan 서브 명령어를 사용하면 클라우드에 적용될 변화 사항을 보여주며 apply 서브 명령어는 이를 자신의 클라우드 계정에 실제로 적용해줍니다.

     

    "클릭 노가다 해방기" 라고 불리우는 테라폼.
    아직은 사용하지 않았지만 추후에 서버 리소스를 제어할 때 유용하게 사용할 수 있을 것 같다. 

     

     

     

     

    용어

    IaC : 코드를 통해 인프라 관리 및 프로비저닝

    HCL : Hashicorp Configuration Language, 하시코프 설정 언어

    AWS CloudForamtion : AWS 리소스를 모델링하고 설정하여 리소스 관리 서비스

    Google Cloud Platfrom : IaC 위에서 제공하는 리소스 관리 서비스

    Microsoft Azure : 마이크로소프트 클라우드 리소스 관리 서비스

    클라우드 리소스 : 서버 자원(CPU, 파일, 데이터, 네트워크) 등

    프로비저닝 : IT 인프라를 생성하고 설정하는 프로세스, 사용자 및 시스템 액세스 관리 포함

     

                       

    오늘도 기분 좋은 하루 되시길 바라면서 포스팅 마치겠습니다. 감사합니다 :)

    반응형

    'IT > DevOps' 카테고리의 다른 글

    [HAProxy]란  (1) 2023.11.08
    [Terraform] AWS EC2에서 테라폼 설치하기  (0) 2023.10.18
    [Grafana] 그라파나 8.0 공식문서 번역  (0) 2023.10.11
    [Grafana] 그라파나란,  (0) 2023.10.10
    [DevOps] 데브옵스란,  (0) 2023.10.10