728x90
[Terraform] 템플릿 파일(Templatefile)
테라폼에서 템플릿은 특정 형식으로 작성된 텍스트 파일로, 테라폼 설정을 작성하기 위한 기반으로 사용됨
템플릿은 테라폼 코드에서 변수를 사용하고, 반복문, 조건문 등의 로직을 적용할 수 있음
https://developer.hashicorp.com/terraform/language/functions/templatefile
테라폼에서 Templatefile 함수는 템플릿 파일을 로드하여 사용할 수 있는 함수다.
Templatefile 함수는 파일 경로를 인수로 받아 해당 파일을 읽고, 템플릿 파일에 정의된 내용을 반환
템플릿 파일에 동적인 값을 전달하거나, 반복문과 조건문을 통해 템플릿을 동적으로 생성할 수 있음
예를 들어 앞선 포스팅 (https://heywantodo.tistory.com/120) 에서 작성했던 userdata를 Templatefile로 따로 관리해보자
템플릿파일은 확장자를 'tftpl'로 해주면 된다
- userdata.tftpl
#!/bin/bash
sudo apt-get update -y && sudo apt-get install nginx -y
sudo systemctl enable nginx --now
sudo sed -i "s/listen 80 default_server;/listen ${server_port} default_server;/" /etc/nginx/sites-enabled/default
sudo sed -i "s/listen \[::\]:80 default_server;/listen \[::\]:${server_port} default_server;/" /etc/nginx/sites-enabled/default
sudo systemctl restart nginx
echo '<html><h1>hello Terraform Port is ${server_port}</h1></html>' | sudo tee /var/www/html/index.nginx-debian.html >/dev/null
리소스에서 userdata부분을 tmplatefile 함수를 사용해서 지정해주면 된다.
userdata 파일 내부에선 다른 변수를 사용하고, 리소스에서 테라폼 variables를 정의해주면 됨
resource "aws_instance" "web" {
ami ="ami-0c9c942bd7bf113a2" #ubuntu 22.04
instance_type = "t2.micro"
vpc_security_group_ids = [aws_security_group.web.id]
user_data = templatefile("userdata.tftpl", {
server_port = var.server_port
})
tags = {
Name = "tf-ec2"
}
}
확인 해보자
terraform apply --auto-approve
templatefile 함수를 통해 userdate와 같은 파일들을 관리하면
파일의 관리도 쉬워지고, 코드의 가독성도 좋아진다.
반응형
'📚 IaC > Terraform' 카테고리의 다른 글
[Terraform] Key-Pair 생성 후 EC2 인스턴스 SSH 접속 (0) | 2023.07.03 |
---|---|
[Terraform] AWS Custom VPC 생성 (0) | 2023.06.28 |
[Terraform] 테라폼 변수와 출력 (0) | 2023.06.20 |
[Terraform] Terraform으로 AWS EC2 서버 배포하기 (2) (0) | 2023.06.12 |
[Terraform] Terraform으로 AWS EC2 서버 배포하기 (1) (0) | 2023.06.06 |