* AWS Cloud Quest: Cloud Practitioner 과정 Terraform으로 해보기 중입니다.
오늘 할 퀘스트~!
https://juyeonee826.tistory.com/167
[AWS Cloud Quest] Cloud First Steps
퀘스트 제목 Cloud First Steps 퀘스트 내용 섬의 안정화 시스템이 고장났다. computational modules의 신뢰성과 가용성을 향상해달라. 퀘스트 목표 AWS 리전 및 가용 영역에 대해 익히고, 여러 가용 영역에 A
juyeonee826.tistory.com
EC2 생성에 앞서 할 것이 많다.
- Choose Amazon Linux 2 AMI (HVM)
- Instance type, choose t2.micro
- Key pair name, choose Proceed without a key pair.
- Add Security group, Type, choose HTTP.
- Root volume gp2 is selected.
- User data, paste the content that you just copied.
VPC, Subnet, AMI Data 추가
main.tf
data "aws_vpc" "default" {
default = true
}
data "aws_subnets" "default" {
filter {
name = "vpc-id"
values = [data.aws_vpc.default.id]
}
}
data "aws_ami" "amazon-linux-2-kernel-5" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["amzn2-ami-kernel-5*"]
}
}
output "ami-id" {
value = data.aws_ami.amazon-linux-2-kernel-5.id
}
Instance type, root volume Variable 추가
linux-variables.tf
variable "linux_instance_type" {
type = string
description = "EC2 instance type for Linux Server"
default = "t2.micro"
}
variable "linux_root_volume_type" {
type = string
description = "Volumen type of root volumen of Linux Server."
default = "gp2"
}
보안그룹 생성
main.tf
resource "aws_security_group" "aws_linux_sg" {
name = "linux-sg"
vpc_id = data.aws_vpc.default.id
ingress {
from_port = 80
to_port = 80
protocol = "http"
cidr_blocks = ["0.0.0.0/0"]
description = "Allow incoming HTTP connections"
}
}
user_data 넣기
quest에서 준 user-data는 안 되길래 다른 비슷한 걸로 대체
aws-user-data.sh
#!/bin/bash -xe
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 168.126.63.1" >> /etc/resolv.conf
echo "nameserver 210.220.163.82" >> /etc/resolv.conf
echo "nameserver 164.124.101.2" >> /etc/resolv.conf
sudo yum update -y
sudo yum install -y httpd.x86_64
sudo systemctl start httpd.service
sudo systemctl enable httpd.service
availability_zone=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)
echo "Availability Zone : <span style='color:blue;'>$(echo $availability_zone)</span>" > /var/www/html/index.html
위에 것들 조합해서 EC2 생성
resource "aws_instance" "linux_server" {
ami = data.aws_ami.amazon_linux_2_kernel_5.id
instance_type = var.linux_instance_type
subnet_id = data.aws_subnets.default.ids[0]
vpc_security_group_ids = [aws_security_group.aws_linux_sg.id]
user_data = file("aws-user-data.sh")
root_block_device {
volume_size = 8
volume_type = var.linux_root_volume_type
delete_on_termination = true
encrypted = true
}
}
Public IPv4 DNS Output 작성
output "linux_server_public_dns" {
value = aws_instance.linux_server.public_dns
}
가용 영역 다른 EC2 추가
resource "aws_instance" "linux_server_v2" {
ami = data.aws_ami.amazon_linux_2_kernel_5.id
instance_type = var.linux_instance_type
subnet_id = data.aws_subnets.default.ids[3]
vpc_security_group_ids = [aws_security_group.aws_linux_sg.id]
user_data = file("aws-user-data.sh")
root_block_device {
volume_size = 8
volume_type = var.linux_root_volume_type
delete_on_termination = true
encrypted = true
}
}
# data.aws_subnets.default.ids[3] 다른 서브넷을 선택하도록 했다.
결과 페이지
참고
How to Deploy an Amazon Linux EC2 Instance in AWS using Terraform
In this story, we will learn how to deploy an Amazon Linux EC2 Instance (VM) in AWS using Terraform.
gmusumeci.medium.com
https://www.middlewareinventory.com/blog/terraform-aws-example-ec2/
Terraform AWS Example - Create EC2 instance with Terraform | DevOps Junction
Terraform AWS Example. Create EC2 instance with Terraform. Terraform AWS example on how to create AWS resources with Terraform. Create a Security Group using Terraform. Infrastructure as Code Example. Terraform aws Configuration file example and terraform
www.middlewareinventory.com
https://ltlkodae.tistory.com/48
AWS EC2 User Data 사용하기 (feat 로그, 내용확인)
EC2 User Data 사용방법에 대해서 간단히 정리해보자 EC2 User Data란? EC2가 생성되면서 실행되는 일종의 script 이다. 예를들어 5대의 EC2를 생성해서 패키지를 설치해야 한다고 가정해보자. 5대를 생성 ->
ltlkodae.tistory.com
https://dev.classmethod.jp/articles/check-the-ec2-instance-metadata/
메타데이터란? EC2 인스턴스 메타데이터 확인해 보기 | DevelopersIO
메타데이터가 무엇인지에 대해서 알아보고, EC2 인스턴스 메타데이터 정보를 확인해 봤습니다.
dev.classmethod.jp
'DevOps > Terraform' 카테고리의 다른 글
[Terraform] AWS 웹 서버 생성, 라우팅 테이블 수정 (0) | 2023.07.16 |
---|---|
[Terraform] AWS EC2 인스턴스 유형 변경(user data 재실행) (0) | 2023.07.15 |
[Terraform] 테라폼 약간 심화 (0) | 2023.06.16 |
[Terraform] AWS S3 정적 웹 호스팅 (0) | 2023.05.29 |
[Terraform] 테라폼 완전 기초 (0) | 2023.05.29 |