본문 바로가기

Infrastructure/Terraform

(15)
[Terraform] Collection Functions Terraform Collection Functions 정리 Terraform v1.4.x 버전을 기준으로 컬렉션과 관련된 기능을 정리한다. alltrue 지정된 컬렉션의 모든 요소가 true인 경우 true를 반환한다. 컬렉션이 비어 있는 경우에도 true를 반환한다. $ terraform console > alltrue(["true", true]) true > alltrue([true, false]) false > alltrue([]) true anytrue 지정된 컬렉션의 요소 중 하나라도 true가 있으면 true를 반환한다. 컬렉션이 비어 있는 경우에는 false를 반환한다. $ terraform console > anytrue([true, true]) true > anytrue([true, f..
[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"을 사용하면 수동으로 인프라를 관리하..