DevOps/Terraform2022. 4. 23. 09:44[Terraform] 모듈 (Module)

✔️ 모듈 (Module) Terraform Registry registry.terraform.io 모듈은 Terraform으로 리소스 구성을 패키징하고 재사용하는 주요 방법이다. ✔️ Root Module 모든 Terraform 구성에는 기본 작업 디렉토리의 .tf 파일에 정의된 리소스로 구성된 루트 모듈로 알려진 하나 이상의 모듈이 있다. ✔️ Child Modules Terraform 모듈(일반적으로 구성의 루트 모듈)은 다른 모듈을 호출하여 해당 리소스를 구성에 포함할 수 있다. 다른 모듈에 의해 호출된 모듈을 종종 자식 모듈이라고 한다. 자식 모듈은 동일한 구성 내에서 여러 번 호출할 수 있으며 여러 구성에서 동일한 자식 모듈을 사용할 수 있습니다. ✔️ Published Module 로컬 파일..

DevOps/Terraform2022. 4. 22. 23:21[Terraform] 프로비저너 (Provisioner)

✔️ 프로비저너 (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..

DevOps/Terraform2022. 4. 22. 18:51[Terraform] ec2 인스턴스 생성시 사용자 데이터 실행하기

✔️ 사용자 데이터 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..

DevOps/Terraform2022. 4. 22. 18:17[Terraform] 출력값(Output Value), 로컬값(Local Value)

✔️ 출력 값 (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를 통해서 보는 것은 번거로운 작업이다. 이러한 값들을 출력하기 위해 사..

DevOps/Terraform2022. 4. 22. 17:45[Terraform] 연관된 변수들을 연쇄적으로 참조하기

✔️ 변수의 연쇄 참조 인스턴스의 리전을 정하는 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" { ..

DevOps/Terraform2022. 4. 21. 23:32[Terraform] 입력 변수 (Input Variable)

✔️ 입력 변수 (Input Variable) Input Variables - Configuration Language | Terraform by HashiCorp Input variables allow you to customize modules without altering their source code. Learn how to declare, define, and reference variables in configurations. www.terraform.io Terraform에서의 변수는 Input Variable이다. 변수는 variable이라는 블록을 사용하며 " " 안에 변수명을 지정한다. 변수를 정의할 때 몇가지 속성이 있다. description - 변수에 대한 설명 type - 변수..

image