Github 와 Terraform
Github 소스 코드를 다운받고, 자신만의 레포를 만들고 관리합니다.
본 가이드에 사용할 코드를 다운로드 받고, 이를 자신만의 레포로 변경합니다.
Fork 해서 진행해도 되지만, 만약 Private하게 구성하고자 한다면 다음과 같이 구성할 수 있습니다.
Private 레포지토리 구성하기
먼저 Github 코드를 Clone합니다.
$ git clone https://github.com/DevopsArtFactory/aws-provisioning
'aws-provisioning'에 복제합니다...
remote: Enumerating objects: 940, done.
remote: Counting objects: 100% (135/135), done.
remote: Compressing objects: 100% (116/116), done.
remote: Total 940 (delta 36), reused 85 (delta 18), pack-reused 805
오브젝트를 받는 중: 100% (940/940), 170.45 KiB | 5.33 MiB/s, 완료.
델타를 알아내는 중: 100% (465/465), 완료.
폴더로 들어가서
.git
파일을 수정합니다.
$ rm -rf .git
$ git init
$ git remote add origin <your private repositsory URL>
$ git add .
$ git commit -m "init"
$ git push origin <default branch>
Terraform이란?
테라폼(Terraform)을 활용한 IaC(Infrastructure as Code) 도구 설명
테라폼(Terraform)은 HashiCorp에서 개발한 오픈소스 IaC(Infrastructure as Code) 도구입니다. IaC는 전통적으로 수동으로 설정되던 인프라를 코드로 정의하고 자동화하는 방식으로, 테라폼은 이를 통해 클라우드 인프라를 쉽게 배포, 관리, 확장할 수 있도록 돕습니다.
IaC(Infrastructure as Code)란?
IaC는 서버, 네트워크, 스토리지, 데이터베이스 등의 인프라 리소스를 코드로 정의하고 관리하는 방법론입니다. 코드로 인프라를 정의하면 버전 관리, 자동화 및 재사용성이 가능해져, 인프라 환경을 일관되게 유지할 수 있습니다.
테라폼의 주요 특징
다양한 클라우드 제공업체 지원 테라폼은 AWS, Microsoft Azure, Google Cloud Platform(GCP), Alibaba Cloud 등 다양한 클라우드 플랫폼과 온프레미스 환경을 지원합니다. 이는 특정 클라우드 제공업체에 종속되지 않고, 멀티클라우드 환경에서도 인프라를 관리할 수 있게 합니다.
선언형 구성 테라폼은 선언형 언어인 **HCL(HashiCorp Configuration Language)**을 사용해 인프라를 정의합니다. 선언형 방식은 사용자가 원하는 상태를 기술하면, 테라폼이 해당 상태에 도달할 수 있도록 자동으로 리소스를 생성하거나 업데이트합니다.
상태 파일(state file) 관리 테라폼은 리소스의 현재 상태를 상태 파일로 관리하여, 인프라의 변경 사항을 추적하고 관리합니다. 이를 통해, 테라폼은 이전 상태와 현재 상태를 비교해 필요한 변경 사항만 적용합니다.
모듈화와 재사용성 테라폼은 모듈 기능을 제공하여, 인프라 구성 요소를 템플릿화하고 재사용할 수 있게 합니다. 이를 통해 코드의 중복을 줄이고, 일관된 인프라 관리를 가능하게 합니다.
플랜(Plan)과 적용(Apply) 테라폼은 인프라 변경을 적용하기 전에 플랜(Plan) 단계에서 어떤 변화가 일어날지를 미리 시뮬레이션합니다. 이 기능은 실수를 방지하고 예상치 못한 변경 사항을 미리 파악할 수 있게 도와줍니다.
테라폼의 사용 예시
예를 들어, AWS에서 EC2 인스턴스를 프로비저닝하는 코드를 작성하면, 아래와 같은 테라폼 코드로 인프라를 관리할 수 있습니다.
provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
tags = {
Name = "TerraformExample"
}
}
위 코드는 AWS의 US-West-2 리전에서 t2.micro
인스턴스를 생성하며, 인스턴스의 이름은 "TerraformExample"으로 설정됩니다. 이 코드를 사용하면 테라폼이 자동으로 해당 인프라를 생성해줍니다.
테라폼의 장점
자동화: 테라폼을 사용하면 대규모 인프라를 자동으로 배포하고 관리할 수 있어, 시간과 비용을 절감할 수 있습니다.
확장성: 테라폼은 클라우드 리소스를 확장하는 과정을 간소화하여 빠르게 변화하는 요구 사항에 대응할 수 있습니다.
버전 관리: 인프라를 코드로 관리함으로써, 코드의 변경 내역을 추적하고, 롤백 기능을 활용해 안정적으로 운영할 수 있습니다.
결론
테라폼은 멀티 클라우드 환경에서 일관된 인프라 관리를 가능하게 하고, 코드 기반의 인프라 설정을 통해 효율성과 안정성을 높이는 도구입니다. 자동화와 선언적 정의 방식을 통해 인프라 운영의 복잡성을 줄이고, 클라우드 및 온프레미스 인프라의 통합 관리를 가능하게 합니다.
-
-
Last updated