1. Terraform Docs 예시
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance
예시:
인수:
2. Terraform 코드 작성
# 11_ec2.tf
resource "aws_instance" "pmh_ma" {
ami = "ami-0ea4d4b8dc1e46212"
instance_type = "t2.micro"
key_name = "pmh-key"
vpc_security_group_ids = [aws_security_group.pmh_sg.id]
availability_zone = "ap-northeast-2a"
private_ip = "10.0.0.10"
user_data = <<eof
#! /bin/bash
yum install -y httpd
echo "Hello Terraform" > /var/www/html/index.html
systemctl start httpd
eof
subnet_id = aws_subnet.pmh_pub[0].id
associate_public_ip_address = true
tags = {
Name = "pmh-pub"
}
}
resource "aws_instance" "pmh_ma"
pmh_ma 라는 이름의 aws_instance 리소스를 정의
ami = "ami-ami-0ea4d4b8dc1e46212"
인스턴스를 생성할 AMI(Amazon Machine Image)의 ID를 지정
instance_type = "t2.micro"
인스턴스 유형 설정
key_name = "pmh-key"
SSH 키 페어 이름 지정합니다.
(앞서 만들었던 SSH 키 페어)
vpc_security_group_ids = [aws_security_group.pmh_sg.id]
인스턴스에 할당할 보안 그룹 ID
(앞서 만들었던 보안 그룹)
availability_zone = "ap-northeast-2a"
인스턴스를 생성할 가용 영역 지정
private_ip = "10.0.0.10"
인스턴스에 할당할 사설 IP 주소 설정
user_data
인스턴스가 시작될 때 실행될 사용자 데이터
- Bash 스크립트로 구성
- Aache HTTP 서버를 설치하고 "Hello Terraform"이라는 내용의 인덱스 파일을 생성
subnet_id = aws_subnet.pmh_puba.id
인스턴스가 속할 서브넷 ID 지정
(앞서 만들었던 서브넷 중 puba 서브넷을 지정)
associate_public_ip_address = true
인스턴스에 공개 IP 주소를 자동으로 연결할지 여부를 설정
tags = { Name = "pmh-pub" }
리소스에 태그 지정
(인스턴스에 식별 가능한 이름 지정)
3. Terraform 분석 및 적용
terraform 파일이 있는 위치에서 아래 명령어 실행
# 변경 사항 검토 및 확인
terraform plan
# (대화형 승인 없이)변경 사용항 적용
terraform apply -auto-approve
4. 결과
+ 변수처리하는 방법
region, tag 변수 파일 생성
# var.tf
variable "region" {
type = string
description = "region name"
default = "ap-northeast-2"
}
variable "tag" {
type = string
default = "pmh"
}
# 11_ec2.tf
resource "aws_instance" "pmh_ma" {
ami = "ami-0ea4d4b8dc1e46212"
instance_type = "t2.micro"
key_name = "${var.tag}-key"
vpc_security_group_ids = [aws_security_group.pmh_sg.id]
availability_zone = "${var.region}a"
private_ip = "10.0.0.10"
user_data = <<eof
#! /bin/bash
yum install -y httpd
echo "Hello Terraform" > /var/www/html/index.html
systemctl start httpd
eof
subnet_id = aws_subnet.pmh_pub[0].id
associate_public_ip_address = true
tags = {
Name = "${var.tag}-pub"
}
}
'AWS > Terraform' 카테고리의 다른 글
[AWS Terraform 기초]14. ALB Target Group 생성 (0) | 2023.07.12 |
---|---|
[AWS Terraform 기초]13. Application Load Balancer(ALB) 생성 (0) | 2023.07.12 |
[AWS Terraform 기초]11. Security Group 생성 (0) | 2023.07.12 |
[AWS Terraform 기초]10. 라우팅 테이블과 서브넷 연결(private) (0) | 2023.07.11 |
[AWS Terraform 기초]9. NAT Gateway Route Table 생성 (0) | 2023.07.11 |