본문 바로가기

Infrastructure

(251)
[Terraform] String Functions Terraform String Functions 정리 Terraform v1.4.x 버전을 기준으로 문자와 관련된 기능을 정리한다. chomp 입력된 문자열 끝에 있는 개행 문자를 제거한다. 문자열 중간에 있는 개행 문자는 제거하지 않으므로 주의해야 한다. $ terraform console > chomp("helloworld\n") "helloworld" > chomp("helloworld\r\n") "helloworld" > chomp("hello\nworkd\n") endswith("foo bar", "foo") false format 사양 문자열에 따라 여러 다른 값의 형식을 지정하여 문자열을 생성한다. "C언어"의 printf와 유사한 기능을 한다. format(${spec}, ${values...
[Terraform] Numeric Functions Terraform Numeric Functions 정리 Terraform v1.4.x 버전을 기준으로 숫자와 관련된 기능을 정리한다. abs 주어진 숫자의 절대값을 반환한다. $ terraform console > abs(20) 20 > abs(0) 0 > abs(-12.4) 12.4 ceil 주어진 값보다 크거나 같은 가장 가까운 정수를 반환한다. $ terraform console > ceil(1) 1 > ceil(1.1) 2 floor 주어진 값보다 작거나 같은 가장 가까운 정수를 반환한다. $ terraform console > floor(1) 1 > floor(1.1) 1 log 주어진 밑(base)에서 주어진 숫자(number)의 로그를 반환한다. log(${숫자}, ${밑}) 형식으로 사용한..
[Terraform] 표준 모듈 구조 표준 모듈 구조 이전 장에서는 공급자의 버전을 관리하는 방법에 대해서 알아보았다. 이번 장에서는 "Terraform" 프로젝트를 위해 사용되는 모듈의 구조 중에 권장되는 방식은 무엇이 있는지 알아보도록 한다. 모든 소스 코드는 리포지토리에 올려두었다. Intro 표준 모듈 구조는 별도의 저장소에 배포된 재사용 가능한 모듈에 대해 권장하는 파일 및 디렉토리 레이아웃이다. "Terraform 도구"는 표준 모듈 구조를 이해하고 해당 구조를 사용하여 문서, 모듈 레지스트리용 색인 모듈 등을 생성하도록 구축되어있다. 표준 모듈 구조는 아래에 설명된 레이아웃을 예상한다. 목록이 길어 보일 수 있지만 루트 모듈을 제외한 모든 항목은 필요한 경우 도입할 수 있는 선택사항이다. 대부분의 모듈은 표준 구조를 따르기 위해..
[Terraform] 공급자(Provider) 버전 관리 공급자 버전 잠금 및 업그레이드 이전 장에서 원격 리포지토리에 상태를 저장하는 방법에 대해서 알아보았다. 이번 장에서는 "Terraform 공급자"의 버전을 관리하는 방법에 대해서 알아본다. 모든 소스 코드는 리포지토리에 올려두었다. Intro "Terraform 공급자(Provider)"는 "Terraform"과 대상 API 간에 통신하여 리소스를 관리한다. 대상 API가 기능을 변경하거나 추가할 때마다 "공급자 유지 관리자"는 버전을 지정하여 업데이트할 수 있다. 여러 사용자 또는 자동화 도구가 동일한 "Terraform" 구성을 실행하는 경우 모두 동일한 버전의 필수 공급자를 사용해야 한다. 구성에서 공급자 버전을 관리하는 방법에는 두 가지가 있다. terraform 블록에서 공급자 버전 제약 조건..
[Terraform] 원격 상태 저장 Terraform Remote State 이전 장에서는 "Terraform"이 무엇인지 알아보고 기본적인 사용법에 대해서 알아보았다. 이번 장에서는 "원격 상태 저장"에 대해서 알아보도록 한다. 모든 소스 코드는 리포지토리에 올려두었다. Intro 지금까지 우리가 살펴본 방법은 테스트 및 개발 환경에서 사용하기에는 적합하지만 운영 환경에서 사용하기에는 다소 무리가 있다. 운영 환경에서는 팀 동료가 액세스하여 인프라에서 협업할 수 있도록 상태를 보안 및 암호화로 유지해야 한다. 이러한 환경을 구축하기 위해 사용되는 가장 좋은 방법은 상태에 대한 공유 액세스가 있는 원격 환경에서 "Terraform"을 실행하는 것이다. "Terraform Cloud"를 사용하면 팀이 인프라 변경 사항을 쉽게 버전 확인, 감..
[Terraform] 기본 개념 Terraform Basic 이번 장에서는 "Terraform"이 무엇인지 알아보고 기본적은 사용법에 대해서 알아본다. 모든 소스 코드는 리포지토리에 올려두었다. Terraform의 코드형 인프라란? 코드형 인프라(IaC) 도구를 사용하면 GUI(그래픽 사용자 인터페이스)가 아닌 구성 파일로 인프라를 관리할 수 있다. IaC를 사용하면 버전화, 재사용 및 공유할 수 있는 리소스 구성을 정의하여 안전하고 일관되며 반복 가능한 방식으로 인프라를 구축, 변경 및 관리할 수 있다. "Terraform"은 "HashiCorp"의 인프라 코드 도구로, 사람이 읽을 수 있는 선언적 구성 파일에서 리소스와 인프라를 정의하고 인프라의 수명 주기를 관리할 수 있다. "Terraform"을 사용하면 수동으로 인프라를 관리하..
[AWS] AWS Control Tower 개념 AWS Control Tower 개념 이번 장에서는 AWS의 Control Tower의 개념에 대해서 알아본다. AWS Control Tower AWS Control Tower는 다중 계정 AWS 환경을 설정하고 관리하는 가장 쉬운 방법을 제공하여, 안전하고 이상적으로 설계된 다중 계정 AWS 환경인 기준 환경인 “랜딩 존”의 설정을 자동화한다. “랜딩 존”은 보안, 운영 및 규정 준수 규칙을 통해 AWS 워크로드를 더 쉽게 관리하게 해주는 안전한 환경을 조성하기 위해 수많은 엔터프라이즈 고객이 구축한 모범 사례를 바탕으로 구성할 수 있다. 2021년 서울 리전에 출시되었으며, 이전에 사용되던 솔루션인 “AWS Landing Zone”은 계속 사용할 수는 있지만 추가 기능은 개발되지 않는다. 주요 기능 ..
[AWS] Landing Zone Accelerator Landing Zone Accelerator 이번 장에서는 AWS의 Landing Zone Accelerator에 대해서 알아본다. 개요 Landing Zone Accelerator(이하 Accelerator) 솔루션은 AWS 모범 사례와 다수의 글로벌 규정 준수하는 프레임워크를 준수하도록 설계된 클라우드 기반을 쉽게 배포할 수 있도록 도움을 준다. 엄격한 규제를 받는 워크로드가 있는 경우 사용자들은 복잡한 규정을 준수해야 하는데, Accelerator을 통해 다중 계정 환경에 대한 관리 및 거버넌스를 개선할 수 있다. 아래의 다이어그램은 Accelerator를 통해 AWS CloudFormation 템플릿을 사용하여 자동으로 배포할 수 있는 아키텍처를 보여준다. AWS 아키텍처 기반 Landing Zo..