-
[T102 2주차] (1) 테라폼의 기본 문법(리소스, 변수)테라폼(Terraform) 스터디 2023. 7. 15. 21:06
cloudNet@ 팀의 가시다 님이 진행하는 테라폼 102 스터디 2주차 정리입니다.
1. 외부파일(ex txt, AWS 인수 등등) 에서 데이터(데이터 리소스)를 가지고 오는 법
<데이터 리소스 참고 형식>
#####################################
1234567# Terraform Codedata "<리소스 유형>" "<이름>" {<인수> = <값>}# 데이터 소스 참조data.<리소스 유형>.<이름>.<속성>cs #####################################
- 디렉토리생성(코드생략)
mkdir 3.5 && cd 3.5
cs - 참조 할 txt 파일 생성
echo "t101 study - 2week" > abc.txt
cs - main.tf 파일 생성& 참조 경로 파일 코드 작성(Visual Studio Code에서 GUI로 실행)
- 테라폼 초기화 & 실행계획 & 적용
terraform init && terraform plan && terraform apply -auto-approve
cs
테라폼 콘솔에서 리소스 호출 확인
terraform console #테라폼 콘솔 실행cs > data.local_file.abccs > data.local_file.abc.filename> data.local_file.abc.contentcs >data.local_file.abc.idcs > exitcs https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/availability_zones
2. 변수
<변수 선언 기본 형식>
#####################################
123456789# variable 블록 선언의 예variable "<이름>" {<인수> = <값>}# ex)variable "image_id" {type = string}cs #####################################
- 전달할 값이 number 인지 확인하는 입력 변수의 예
- 전달할 값이 list 인지 확인하는 입력 변수의 예
- 조건 결합 사용 가능. 다음은 리스트의 모든 항목이 number 인 list 의 예
- 다음은 모든 값이 string 인 map 의 예
- 다음은 object 또는 tuple 제약 조건을 사용하여 보다 복잡한 구조적 유형(structural type) 작성 가능< ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 변수 선언 예시↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓>
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475variable "string" {type = stringdescription = "var String"default = "myString"}variable "number" {type = numberdefault = 123}variable "boolean" {default = true}variable "list" {default = ["google","vmware","amazon","microsoft"]}output "list_index_0" {value = var.list.0}output "list_all" {value = [for name in var.list : upper(name)]}variable "map" { # Sortingdefault = {aws = "amazon",azure = "microsoft",gcp = "google"}}variable "set" { # Sortingtype = set(string)default = ["google","vmware","amazon","microsoft"]}variable "object" {type = object({ name = string, age = number })default = {name = "abc"age = 12}}variable "tuple" {type = tuple([string, number, bool])default = ["abc", 123, true]}variable "ingress_rules" { # optional ( >= terraform 1.3.0)type = list(object({port = number,description = optional(string),protocol = optional(string, "tcp"),}))default = [{ port = 80, description = "web" },{ port = 53, protocol = "udp" }]}
cs
'테라폼(Terraform) 스터디' 카테고리의 다른 글
[T102 4주차] (2)테라폼 모듈(Module) (0) 2023.07.30 [T102 4주차] (1)테라폼 state (0) 2023.07.30 [T102 3주차] (1) 테라폼 프로비저너 (0) 2023.07.22 [T102 2주차] (2) 테라폼의 기본 문법(스터디 실습 (VPC + 보안그룹 + EC2 배포) (0) 2023.07.15 [T102 1주차] (1) 테라폼의 정의 및 Terraform(테라폼) 환경구축(Window10) (0) 2023.07.08 - 디렉토리생성(코드생략)