로컬 및 원격 실행 프로비저너
Terraform을 실행하는 컴퓨터 또는 생성된 리소스에서 각각 명령을 실행하도록 `local-exec` 및 `remote-exec` 프로비저너를 구현합니다.
로컬 및 원격 실행 프로비저너은(는) CoddyKit의 무료 Terraform Infrastructure as Code 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Terraform Infrastructure as Code 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Terraform Infrastructure as Code 강의에는 총 4개의 강의가 포함되어 있습니다.
Terraform 프로비저너 살펴보기
Terraform이 리소스를 생성한 후에 스크립트나 명령어를 실행해야 한다면 어떻게 해야 할까요? 이때 프로비저너를 사용합니다!
프로비저너를 사용하면 리소스 수명 주기의 일부로 로컬 컴퓨터나 원격 리소스에서 작업을 실행할 수 있습니다. 프로비저너는 인프라 생성과 초기 소프트웨어 설정 사이의 간극을 메워 줍니다.
프로비저너를 리소스가 생성된 직후 리소스를 사용자 지정할 수 있게 해 주는 연결 고리라고 생각해 보세요.
`local-exec`: 로컬에서 실행
local-exec 프로비저너는 Terraform이 실행되는 컴퓨터에서 명령어를 실행합니다.
다음과 같은 작업에 유용합니다.
- 로컬에서 구성 파일 생성
- 로컬 스크립트나 도구 실행
- 리소스 삭제 후 정리 작업 수행
클라우드 리소스 자체에서 실행할 필요가 없는 작업에 적합합니다.
`local-exec` 기본 예시
local-exec를 사용하여 null 리소스가 생성된 후 로컬 컴퓨터에 간단한 파일을 만드는 방법을 살펴보겠습니다.
null_resource는 클라우드에 아무것도 생성하지 않는 자리 표시자이지만 프로비저너를 트리거할 때 유용합니다.
resource "null_resource" "local_file_creator" {
provisioner "local-exec" {
command = "echo 'Local file created by Terraform!' > local_output.txt"
}
triggers = {
always_run = timestamp()
}
}`local-exec` 사용 시점
local-exec는 다음과 같은 작업에 적합합니다.
- 배포 후 알림: 이메일이나 Slack 메시지를 보냅니다.
- 로컬 파일 생성: Ansible이나 다른 도구용 인벤토리 파일을 만듭니다.
- 배포 전 검사: 로컬 유효성 검사 스크립트를 실행합니다.
- CI/CD 트리거: 인프라가 변경된 후 파이프라인을 시작합니다.
terraform apply를 실행한 위치에서 작업한다는 점을 기억하세요.
`remote-exec`: 리소스에서 실행
local-exec와 달리 remote-exec 프로비저너는 원격 리소스 자체에서 명령어를 실행합니다.
새로 생성한 서버의 초기 설정 작업에 매우 유용하며, 다음과 같은 작업에 사용할 수 있습니다.
- 소프트웨어 패키지 설치(예: 웹 서버, 데이터베이스)
- 운영 체제 설정 구성
- 애플리케이션 코드 배포
대상 리소스에 연결하려면 네트워크 연결(Linux의 SSH 또는 Windows의 WinRM 등)이 필요합니다.
`remote-exec` 연결하기
remote-exec가 작동하려면 Terraform이 리소스에 연결해야 합니다.
일반적인 연결 유형은 다음과 같습니다.
- SSH: Linux 인스턴스에 사용하며 개인 키가 필요합니다.
- WinRM: Windows 인스턴스에 사용하며 자격 증명이 필요합니다.
일반적으로 provisioner 블록 내에서 연결 세부 정보를 구성하거나 리소스에서 상속합니다.
EC2에서 `remote-exec` 사용하기
새 AWS EC2 인스턴스에 Apache를 설치하기 위해 remote-exec를 사용하는 방법은 다음과 같습니다.
참고: EC2 인스턴스가 프로비저닝되어 있고 SSH를 통해 접근 가능해야 합니다. 간단하게 설명하기 위해 기존 키 페어와 보안 그룹이 있다고 가정합니다.
resource "aws_instance" "web_server" {
ami = "ami-0abcdef1234567890" # Replace with valid AMI ID
instance_type = "t2.micro"
key_name = "my-ssh-key" # Replace with your SSH key name
vpc_security_group_ids = ["sg-0123456789abcdef0"] # Replace with your SG ID
provisioner "remote-exec" {
inline = [
"sudo yum update -y",
"sudo yum install -y httpd",
"sudo systemctl start httpd",
"sudo systemctl enable httpd"
]
connection {
type = "ssh"
user = "ec2-user"
private_key = file("~/.ssh/my-ssh-key.pem")
host = self.public_ip
}
}
}`remote-exec` 사용 시점
remote-exec는 다음과 같은 작업에 적합합니다.
- 서버 부트스트랩: 웹 서버, 데이터베이스 또는 Docker를 설치합니다.
- 애플리케이션 배포: 애플리케이션 코드를 복사하고 구성합니다.
- 구성 관리: Ansible 플레이북이나 Chef 레시피를 직접 실행합니다.
- 생성 후 유효성 검사: 새 인스턴스에서 서비스가 실행 중인지 확인합니다.
서버의 초기 상태를 설정할 때 가장 먼저 고려할 수 있는 방법입니다.
삭제 시 프로비저너
프로비저너는 리소스가 삭제될 때도 실행할 수 있습니다. 이는 정리 작업에 유용합니다.
프로비저너 블록 안에 when = destroy를 지정할 수 있습니다. 예를 들어 인스턴스가 종료되기 전에 로드 밸런서에서 등록을 해제할 수 있습니다.
on_failure 동작도 구성할 수 있으며, 프로비저너 명령이 실패했을 때 발생할 일을 결정합니다. 기본적으로는 오류가 발생합니다.
프로비저너 퀴즈
새로 생성된 가상 머신 인스턴스에 웹 서버(예: Nginx)를 설치하려면 어떤 프로비저너를 사용하시겠습니까?
프로비저너: 로컬과 원격
리소스 수명 주기 동안 명령을 실행하는 강력한 도구인 Terraform 프로비저너를 살펴보았습니다.
local-exec는 Terraform이 실행되는 컴퓨터에서 명령을 실행하므로 로컬 스크립트나 알림에 유용합니다.remote-exec는 프로비저닝된 리소스에서 직접 명령을 실행하므로 서버에 소프트웨어나 구성을 초기 설정할 때 적합합니다.
프로비저너는 인프라 배포와 애플리케이션 초기 설정 사이의 간극을 메워 줍니다. 다음으로 고급 상태 관리 기법을 살펴보겠습니다!
자주 묻는 질문
“로컬 및 원격 실행 프로비저너” 강의는 무료인가요?
네 — “로컬 및 원격 실행 프로비저너” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Terraform Infrastructure as Code 강의 전체를 잠금 해제할 수 있습니다. Terraform Infrastructure as Code 강의에는 총 4개의 강의가 포함되어 있습니다.
“로컬 및 원격 실행 프로비저너”에서 뭘 배우나요?
Terraform을 실행하는 컴퓨터 또는 생성된 리소스에서 각각 명령을 실행하도록 `local-exec` 및 `remote-exec` 프로비저너를 구현합니다. 브라우저에서 직접 실행하는 실습 코드로 Terraform Infrastructure as Code을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Terraform Infrastructure as Code을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Terraform Infrastructure as Code은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“로컬 및 원격 실행 프로비저너” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Terraform Infrastructure as Code 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Terraform Infrastructure as Code 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 데이터 원본으로 데이터 조회
- 로컬 및 원격 실행 프로비저너
- 널 리소스와 트리거
- 외부 데이터 및 템플릿 사용