Ssoon
[T101] 02 왜 Terraform 인가? - (4) 단일 웹 서버 배포 본문
CloudNet@ 팀의 가시다님이 진행하는 Terraform 101 Study 1주차 정리입니다. |
1. 웹서버 Bash script
yum install -y httpd
systemctl enable --now httpd
echo "<h1>Welcome to Hell! - Ssoon</h1>" > /var/www/html/index.html
2. Resource - aws_instance - user_data
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_instance" "example" {
ami = "ami-0c76973fbe0ee100c"
instance_type = "t2.micro"
user_data = <<-EOF
#!/bin/bash
yum install -y httpd
systemctl enable --now httpd
echo "<h1>Welcome to Hell! - Ssoon</h1>" > /var/www/html/index.html
EOF
tags = {
"Name" = "ssoon-webserver"
}
}
3. Resource - aws_security_group
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_instance" "example" {
ami = "ami-0c76973fbe0ee100c"
instance_type = "t2.micro"
user_data = <<-EOF
#!/bin/bash
yum install -y httpd
systemctl enable --now httpd
echo "<h1>Welcome to Hell! - Ssoon</h1>" > /var/www/html/index.html
EOF
tags = {
"Name" = "ssoon-webserver"
}
}
resource "aws_security_group" "instance" {
name = "ssoon-webserver-SG"
ingress {
cidr_blocks = ["0.0.0.0/0"]
from_port = 80
to_port = 80
protocol = "tcp"
}
ingress {
cidr_blocks = ["0.0.0.0/0"]
from_port = 22
to_port = 22
protocol = "tcp"
}
egress {
cidr_blocks = ["0.0.0.0/0"]
from_port = 0
to_port = 0
protocol = "-1"
}
}
4. Resource - aws_instance - vpc_security_group_id
참조(reference)
- 코드의 다른 부분에서 값을 액세스할 수 있게 해주는 표현식
<PROVIDER>_<TYPE>.<NAME>.<ATTRIBUTE>
- PROVIDER : 'AWS' ... 공급자
- TYPE : resource 의 유형
- NAME : resource 의 이름
- ATTRIBUTE : resource 의 인수 중 하나이거나 resource 가 내보낸 속성 중 하나
※ Terraform Registry 사이트에서 Resource 들의 Arguments 와 Attributes 을 확인 할 수 있습니다.
name 이 'example' 인 'aws_instance' resource 의 'vpc_security_group_ids' argument 에서
name 이 'instance' 인 'aws_security_group' 의 attributes 'id' 값을 참조합니다.
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_instance" "example" {
ami = "ami-0c76973fbe0ee100c"
instance_type = "t2.micro"
# (선택 사항, VPC만 해당) 연결할 보안 그룹 ID 목록입니다.
vpc_security_group_ids = [aws_security_group.instance.id]
user_data = <<-EOF
#!/bin/bash
yum install -y httpd
systemctl enable --now httpd
echo "<h1>Welcome to Hell! - Ssoon</h1>" > /var/www/html/index.html
EOF
tags = {
"Name" = "ssoon-webserver"
}
}
resource "aws_security_group" "instance" {
name = "ssoon-webserver-SG"
ingress {
cidr_blocks = ["0.0.0.0/0"]
from_port = 80
to_port = 80
protocol = "tcp"
}
ingress {
cidr_blocks = ["0.0.0.0/0"]
from_port = 22
to_port = 22
protocol = "tcp"
}
egress {
cidr_blocks = ["0.0.0.0/0"]
from_port = 0
to_port = 0
protocol = "-1"
}
}
5. terraform plan
- plan 이 이상 없이 완료되어도 apply 시 error가 발생하거나 Resource 가 생성되지 않을 수 있습니다.
6. terraform apply
- terraform apply 중 error가 나거나 설정한 Resource 가 생성이 되지 않았다면 코드를 보고 수정한 후 다시 apply 를 실행합니다.
7. 접속 확인
8. Console 결과 확인
'Terraform 101 Study' 카테고리의 다른 글
[T101-2주차] 02 왜 Terraform 인가? - (6) 웹 서버 클러스터 배포 (0) | 2022.10.18 |
---|---|
[T101] 02 왜 Terraform 인가? - (5) 구성 가능한 웹 서버 배포 (0) | 2022.10.18 |
[T101] 02 왜 Terraform 인가? - (3) 버전 관리 (0) | 2022.10.18 |
[T101] 02 왜 Terraform 인가? - (2) 단일 서버 배포 (0) | 2022.10.17 |
[T101] 02 왜 Terraform 인가? - (1) Terraform 실습 환경설정 (0) | 2022.10.17 |
Comments