본문 바로가기

DevOps/IaC (Infrastructure as Code)7

Terraform Backend 생성하기 (S3 버킷) 테라폼 backend용 s3 버킷 생성 provider "aws" { region = "ap-northeast-2" } resource "aws_s3_bucket" "example" { bucket = "iac-serverce1" tags = { Name = "iac-service1" Environment = "Dev" Management = "Terraform" CreatedBy = "hwan001" } } 2023. 10. 22.
[T1012] Week 6. 테라폼으로 협업하기 Git과 PR(Pull Request)을 활용한 협업 인프라의 규모가 확장되면서 여러 팀원들과 함께 작업하는 상황에서는 동일한 상태 파일을 공유하고 동기화하는 것이 중요해졌다. 유형 1은 직접 .tf 파일과 tfstate 파일을 공유하는 방식이다. 이런 방식으로 파일을 공유할 수는 있지만, 수동으로 관리하는 데에는 여러 번거로운 작업들이 포함된다. 이 과정에서 인간의 실수나 정보의 누락이 발생할 수 있기 때문에 이러한 문제점을 해결하고자 버전 관리 시스템(VCS)의 도입이 필요해졌다. 유형 2에서는 VCS(예: git, svn)를 사용하여 해당 파일들을 효율적으로 관리한다. 이를 통해 변경 이력을 체계적으로 추적할 수 있으며, 필요한 경우 이전 버전으로 쉽게 롤백할 수 있게 되었다. 유형 3은 git을 .. 2023. 8. 13.
[T1012] Week 4. State & module State file 상태 파일은 terraform apply시에 생성되는 .tfstate 파일이다. 해당 파일은 인프라의 상태를 json 형태로 가지고 있는데, 테라폼 내부에서만 사용하기 위한 파일이기 때문에 테라폼 상태 파일을 직접 편집하거나 직접 읽는 코드로 작성해서는 안된다. 팀 단위로 작업하는 경우 아래 조건이 갖춰져야 한다. 상태 파일을 저장하는 공유 스토리지 (Shared storage for state files) 각 팀원이 동일한 테라폼 상태 파일 사용을 위해서, 공유 위치에 저장이 필요 상태 파일 잠금 (Locking state files) 잠금 기능 없이 동시에 테라폼 실행 시 여러 테라폼 프로세스가 상태 파일을 동시에 업데이트하여 경쟁 상태(race condition)로 인한 충돌 가.. 2023. 7. 29.
[T1012] Week 3. 테라폼 기본 사용법 정리 (3/3) 조건문 Terraform에는 다른 언어처럼 조건문을 위한 if 키워드가 없기 때문에 3항 연산자를 사용하여 조건문을 작성해야 한다. 예를들면 아래처럼 환경에 대한 정보를 변수로 입력받아 product 환경일 경우 5번, 아닐 경우 1번만 리소스를 생성하도록 할 수 있다. resource "aws_instance" "hwan001_instance" { count = var.env == "prod" ? 5 : 1 } 만약 dev 환경일 경우에만 리소스를 생성하고 싶다면 아래처럼 작성할 수 있다. provider "aws" { region = "ap-northeast-2" } data "aws_ami" "ubuntu" { most_recent = true filter { name = "name" values .. 2023. 7. 22.
[T1012] Week 2. 테라폼 기본 사용법 정리 (2/3) 데이터 소스 Terraform의 데이터 소스는 테라폼 설정 내에서 읽기 전용의 값들을 제공한다. 이 값을 활용하면 이미 존재하는 리소스의 세부사항이나 외부 데이터를 참조할 수 있다. 데이터 소스 블록은 아래처럼 data로 시작하고 ‘데이터 소스 유형’과 '이름'을 정의한다. data "" "" { = } # 참조 : data... # 사용가능한 메타인수: # depends_on : 종속성 선언 # count : 선언된 개수만큼 리소스를 생성 # for_each : map또는 set 타입 변수로 리소스 반복 생성 # lifecycle : 리소스 수명주기 예를 들면 아래 코드는 aws의 az 정보를 얻어와 각 az에 subnet을 생성할 수 있다. data "aws_availability_zones" "av.. 2023. 7. 15.
[T1012] Week 1. 테라폼 기본 사용법 정리 (1/3) Terraform HashiCorp사의 Terraform은 버전화, 재사용 및 공유할 수 있는 사람이 읽을 수 있는 구성 파일에서 클라우드 및 온프레미스 리소스를 모두 정의할 수 있는 코드형 인프라(IaC) 도구로 Amazon Web Services(AWS), Azure, Google Cloud Platform(GCP), Kubernetes, Helm, GitHub, Splunk, DataDog 등 수천여개의 다양한 Provider를 제공한다. Provider 테라폼을 적용할 대상으로 한번에 하나의 프로비저닝만 가능하며 terraform init을 통해 설치된다. (aws 구성을 azure로 변경하는 등의 작업은 불가함, 프로바이더에 대한 자세한 정보는 아래 링크 참조) https://registry.t.. 2023. 7. 8.
Infrastructure as Code : 코드를 통한 인프라 구축 IaC (Infrastructure as Code) 소프트웨어를 작성하는 것처럼 인프라를 코드로 관리하는 것을 IaC라고 한다. 인프라를 코드로 관리할 때의 장점은 아래와 같다. 효율적인 구성 관리 : IaC로 인프라를 구성할 때의 장점 중 하나는 버전 관리 시스템(Git 등)을 활용할 수 있다는 점이다. 이를 통해 인프라의 구성을 버전별로 추적하고 이전 버전으로 되돌리는 등 인프라 구성을 쉽게 수정할 수 있다. 자동화 : IaC를 사용하면 인프라가 자동으로 구성되기 때문에 사람이 구성할 때보다 신뢰성과 정확성이 증가한다. 쉬운 구축과 배포: IaC를 사용하면 인프라 구축과 배포가 쉽고 빨라진다. 히스토리 : 직접 구축된 서버를 보면 실제로 사용하진 않지만, 작업 중에 남겨진 흔적 등이 발견되는 경우가 .. 2022. 12. 30.