본문 바로가기

Infrastructure/Terraform

(15)
[Terraform] Version Constraint Terraform Version 이전에 공급자의 버전 관리와 업그레이드에 대해서 알아본 적이 있다. 이번에는 코드로 버전의 제약하는 방법을 구체적으로 알아보도록 한다. 버전 제약(Version Constraints) 테라폼을 사용하여 허용 가능한 버전 범위를 지정할 수 있는 모든 곳에서 버전 제약 조건으로 알려진 특수 형식의 문자열이 필요하다. 하나의 버전을 지정하기 위해 여러 조건이 중첩되어 사용될 수 있으므로 사용자는 테라폼이 어떤 방식으로 버전을 지정하는지 이해하고 있어야 한다. 아래는 대표적으로 버전 제약 조건이 사용되는 곳이다. Modules Provider Requirements required_versions 블록 version = ">= 1.2.0, < 2.0.0" 버전 제약 조건은 쉼포로..
[Terraform] Blocks Terraform Blocks 이번 장에서는 테라폼에 어떠한 블록이 있는지 살펴보고 어떤 상황에서 어떤 블록을 사용해야 하는지에 대해서 알아본다. Block Intro HCL(Hashicorp Configuration Language)는 블록(Block) 을 사용하여 리소스를 정의하며, 블록은 다른 콘텐츠의 컨테이너로 볼 수 있다. 블록에는 블록 본문을 포함하는 대괄호({})가 뒤에 오는 0개 이상의 필수 레이블을 가질 수 있는 유형(type)이 있다. 블록은 서로 중첩될 수 있으며 아래는 일반적인 블록의 표현이다. type "label_1" "label_2" { argument_1 = value_1 argument_2 = value_2 } 아래는 대표적으로 많이 사용되는 resource 블록의 예시이다..
[Terraform] Type Conversion Functions Terraform Type Conversion Functions 정리 Terraform v1.4.x 버전을 기준으로 유형 변환과 관련된 기능을 정리한다. can 주어진 표현식을 평가하고 표현식이 오류 없이 결과를 생성했는지 여부를 반환한다. 인수를 평가할 때 생성된 오류를 잡을 수 있는 특수함수이며 대부분의 상황에서 can보다 try를 사용하는 것이 권장된다. 일반적으로 can은 변수 유효성 검사 규칙의 단순 테스트에만 사옹된다. $ terraform console > local.foo { "bar" = "baz" } > can(local.foo.bar) true > can(local.foo.boop) false sensitive, nonsensitive sensitive: 모든 값을 가져와서 Terra..
[Terraform] IP Network Functions Terraform IP Network Functions 정리 Terraform v1.4.x 버전을 기준으로 IP 및 네트워크와 관련된 기능을 정리한다. cidrhost 주어진 IP 네트워크 주소 접두사 내에서 주어진 호스트 번호에 대한 전체 호스트 IP 주소를 계산한다. cidrhost(${접두사}, ${호스트번호}) 형식으로 사용한다. $ terraform console > cidrhost("10.1.1.0/20", 10) "10.1.0.10" > cidrhost("10.1.1.0/20", 20) "10.1.0.20" > cidrhost("10.1.1.0/20", 300) "10.1.1.44" > cidrhost("fd00:fd12:3456:7890:00a2::/72", 34) "fd00:fd12:34..
[Terraform] Hash & Crypto Functions Terraform Hash & Crypto Functions 정리 Terraform v1.4.x 버전을 기준으로 해시 및 암호화와 관련된 기능을 정리한다. base64sha256, base64sha512 base64sha256: 주어진 문자열의 SHA256 해시를 계산하고 Base64 인코딩한다. base64encode(sha256("foo"))는 16진수 표현을 반환하기 때문에 sha256("foo")와 동일하지 않다. base64sha512: 주어진 문자열의 SHA512 해시를 계산하고 Base64 인코딩한다. base64encode(sha512("foo"))는 16진수 표현을 반환하기 때문에 sha512("foo")와 동일하지 않다. $ terraform console > base64sha256("..
[Terraform] Date & Time Functions Terraform Date & Time Functions 정리 Terraform v1.4.x 버전을 기준으로 날짜 및 시간과 관련된 기능을 정리한다. formatdate 타임스탬프를 다른 시간 형식으로 변환한다. 형식에 대한 자세한 사양은 공식문서를 참고한다. $ terraform console > formatdate("YYYY-MM-DD HH:mm:ss", "2023-01-01T00:00:00Z") "2023-01-01 12:00:00" > formatdate("MMM DD, YYYY", "2023-01-01T00:00:00Z") "Jan 01, 2023" timeadd 타임스탬프에 원하는 기간을 추가한다. 원하는 기간을 빼고 싶은 경우 음수 형태를 사용한다. $ terraform console > t..
[Terraform] File System Functions Terraform File System Functions 정리 Terraform v1.4.x 버전을 기준으로 파일 시스템과 관련된 기능을 정리한다. abspath 파일 시스템 경로를 포함하는 문자열을 가져와 절대 경로로 변환한다. 즉, 경로가 절대 경로가 아닌 경우 현재 작업 디렉토리와 결합된다. $ terraform console > path.root "." > abspath(path.root) "/Users/???/???/???/project/roy/terraform-tutorial" dirname 파일 시스템 경로를 포함하는 문자열에서 마지막 부분을 제거하고 디렉토리의 경로만 추출한다. $ terraform console > dirname("foo/poo/bar/var.txt") "foo/poo/b..
[Terraform] Encoding Functions Terraform Encoding Functions 정리 Terraform v1.4.x 버전을 기준으로 인코딩 및 디코딩과 관련된 기능을 정리한다. base64encode, base64decode base64encode: 입력된 문자열에 Base64 인코딩을 적용하여 반환한다. base64decode: Base64 문자 시퀀스를 포함하는 문자열을 가져와 원래 문자열을 반환한다. Terraform의 문자열은 바이트가 아닌 유니코드 문자 시퀀스이기 때문에 결과 바이트도 UTF-8로 해석한다. $ terraform console > base64encode("foo bar") "Zm9vIGJhcg==" > base64decode("Zm9vIGJhcg==") "foo bar" base64gzip 문자열을 gzip..