✔️ Count The count Meta-Argument - Configuration Language | Terraform by HashiCorp Count helps you efficiently manage nearly identical infrastructure resources without writing a separate block for each one. www.terraform.io count는 meta argument이다. resource "aws_instance" "server" { count = 4 # create four similar EC2 instances ami = "ami-a1b2c3d4" instance_type = "t2.micro" tags = { Name = "Serv..
✔️ 모듈 (Module) Terraform Registry registry.terraform.io 모듈은 Terraform으로 리소스 구성을 패키징하고 재사용하는 주요 방법이다. ✔️ Root Module 모든 Terraform 구성에는 기본 작업 디렉토리의 .tf 파일에 정의된 리소스로 구성된 루트 모듈로 알려진 하나 이상의 모듈이 있다. ✔️ Child Modules Terraform 모듈(일반적으로 구성의 루트 모듈)은 다른 모듈을 호출하여 해당 리소스를 구성에 포함할 수 있다. 다른 모듈에 의해 호출된 모듈을 종종 자식 모듈이라고 한다. 자식 모듈은 동일한 구성 내에서 여러 번 호출할 수 있으며 여러 구성에서 동일한 자식 모듈을 사용할 수 있습니다. ✔️ Published Module 로컬 파일..
✔️ 프로비저너 (Provisioner) Provisioners | Terraform by HashiCorp Provisioners run scripts on a local or remote machine during resource creation or destruction. Learn how to declare provisioners in a configuration. www.terraform.io 로컬 머신이나 리모트 머신에 특정 액션(주로 명령어 실행)을 할 수 있게 해준다. AWS 리소스를 정의할 때도 provisioner를 정의할 수 있다. 테라폼에서 제공하는 공통 argument이다. 기본적인 사용법은 다음과 같다. resource "aws_instance" "web" { # ... prov..
✔️ 사용자 데이터 ec2 인스턴스를 만들 때 사용자 데이터를 입력하면 cloud-init이 명령을 실행해준다. terraform에서 인스턴스를 생성할 때 user_data를 실행할 수 있도록 해보자 resource "aws_instance" "app_web" { ... user_data = ... } Terraform에서 유저 데이터를 제공하는 방법은 여러가지이다. 일단 테라폼 코드에 직접 데이터를 입력하는 방법을 알아보자 ✔️ Terraform 코드에 직접 사용자 데이터 입력 main.tf 파일의 인스턴스 리소스 블록 내에 해당 코드를 작성한다. resource "aws_instance" "app_web" { user_data = (known after apply) # (6 unchanged attr..
✔️ 출력 값 (Output Value) Output Values - Configuration Language | Terraform by HashiCorp Output values are the return values of a Terraform module. www.terraform.io 출력값을 지정해 자주 확인해야 하는 리소스의 값을 확인할 수 있다. 인스턴스의 퍼블릭 ip나 EIP ip를 알고싶을 때는 어떻게 해야 할까 ? terraform state show aws_eip.app_server_eip ← 해당 명령어로 확인할 수 있다. 하지만, 매번 terraform.tfstate 파일을 열어 보거나 terraform show를 통해서 보는 것은 번거로운 작업이다. 이러한 값들을 출력하기 위해 사..
✔️ 변수의 연쇄 참조 인스턴스의 리전을 정하는 variable 블록을 보자 variable.tf variable "aws_region" { description = "AWS Region" type = string default = "ap-northeast-1" } 리전의 값은 string type이며 default의 값만 바꾸면 ec2 인스턴스를 배치할 리전을 변경할 수 있다. aws ec2 인스턴스를 배치 시킬 때 가용 영역을 인스턴스에 직접 정의하는 방식보다는 어떤 서브넷에 배치 시킬 것이냐를 결정하면 어떤 가용영역에 배치될 것인지가 결정되는 경우가 많다. 즉 가용 영역이 아닌 서브넷에 의해 배치되는 경우가 많다. variable.tf variable "aws_availability_zone" { ..