Terraform/OpenTofu Fundamentals
Quiz: Variable Types
한국어 원문으로 표시합니다.
type = map(string) 인 변수에 tfvars 로 { rev = 3, tls = true } 를 주면?
- 형이 맞지 않아 계획 단계에서 거절된다
- 숫자와 참거짓이 문자열로 바뀌어 조용히 담긴다
- 숫자만 통과하고 참거짓은 null 로 대체된다
- 원소 형 선언이 무시되고 원래 형 그대로 담긴다
object({ name = string, port = number }) 변수에 name·port 와 함께 선언에 없는 owner 를 주면?
- 선언에 없는 속성이라며 계획이 거절된다
- owner 가 any 형으로 추가되어 그대로 담긴다
- owner 때문에 전체가 map 으로 승격되어 담긴다
- owner 는 오류 없이 버려지고 두 속성만 담긴다
같은 ["b", "a", "b"] 를 list(string) 과 set(string) 변수에 각각 넣었을 때 길이는?
- 둘 다 3 — 담는 방식만 다르고 원소 수는 같다
- 둘 다 2 — 어느 쪽이든 중복은 허용되지 않는다
- 목록은 3, 집합은 2 — 집합은 중복을 버린다
- 목록은 2, 집합은 3 — 목록이 인접 중복을 합친다
nullable = false 이고 기본값이 있는 변수에 null 을 주면 어떻게 되는가?
- 기본값으로 대체되어 계획이 그대로 진행된다
- null 을 받지 않겠다는 선언이므로 오류가 난다
- 기본값을 무시하고 빈 문자열이 들어간다
- 선언이 무시되고 null 이 그대로 흘러 들어간다
type = any 변수에 숫자를 주고 그 값에 length() 를 쓰면 오류가 어디서 나는가?
- tfvars 를 읽는 순간, 값이 들어오는 줄 번호와 함께
- 구조 검사 단계에서, 형이 정해지지 않았다는 이유로
- 적용이 끝난 뒤 상태를 쓰는 단계에서
- 계획 단계에서, 그 값을 쓰는 함수 호출 자리에서
포트 변수가 숫자인지와 그 숫자가 1024 이상인지를 각각 무엇이 보는가?
- 둘 다 형 제약이 본다 — 범위도 형의 일부로 적을 수 있다
- 둘 다 validation 블록이 본다 — 형은 문서일 뿐이다
- 숫자인지는 형이, 범위는 validation 블록이 본다
- 숫자인지는 validation 이, 범위는 프로바이더 스키마가 본다