첫번째로 진행한 Terraform을 이용해 AWS 환경 구성 프로젝트의 구현방식에 대해 설명드리겠습니다.
프로젝트 진행환경
인스턴스 환경은 다음과 같습니다.
VM ware에 CentOS 8.4와 Ubuntu 22.04.3 환경을 구축하였으며, AWS는 Linux 2023 AMI 환경을 2대 구축하였습니다.
Service Architecture 는 다음과 같이 구성하였습니다.
이제 구현 방법에 대해 설명드리겠습니다.
Terraform을 이용해 AWS 환경 구성 구현
1. CentOS 8에서 Terraform 설치하기
CentOS Stream 8 은 Terraform 설치를 기본적으로 지원하지 않으므로 그 레파지토리를 먼저 아래처럼 설치한 후 그 패키지를 설치해야 합니다.
[root@master ~]# yum-config-manager --add-repo \ > https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
[root@master ~]# dnf repolist
[root@master ~]# dnf install terraform awscli -y
[root@master ~]# yum --showduplicate list terraform
[root@master ~]# rpm -qa | grep terraform
[root@master ~]# terraform version
2. aws provider 파일 생성하기
Terraform 을 사용하여 해당 리전에 aws 리소스를 생성하고 관리하는 기본 설정을 나타내는 코드 작성합니다.
[nana@master] $ mkdir auto-lb
[nana@master ]$ cd auto-lb
[nana@master auto-lb] $ vim main.tf
terraform {
required_version = "1.5.5"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.3"
}
}
}
provider "aws" {
region = "ap-northeast-3" #region 변경
}
3. 새로운 Key pair 사용하기
EC2 인스턴스를 생성하고 이를 접속하기 위해 새로운 “terraform-key”를 생성하여 인스턴스로의 접속을 시도합니다.
1) ssh-keygen 이용 terraform-key 생성
$ ssh-keygen -t rsa -b 4069 -C {nana@naver.com} -f "terraform-key" -N ""
$ ls
$ cat terraform-key.pub
2) terraform-key 생성 파일 정의하기
[nana@master auto-lb] $ vim key-pair.tf
resource "aws_key_pair" "terraform_key" {
key_name = "terraform-key"
public_key = file("./terraform-key.pub")
tags = {
Name = "terraform-key"
}
}
4. 새로운 SecurityGroup 생성하기
terraform-sg 라는 이름의 SecurityGroup 을 생성하고 이를 인스턴스에 적용
포트번호 80,22,443,3306,9200,5601
[nana@master auto-lb] $ vim security-group.tf
resource "aws_security_group" "instance" {
name = "terraform-instance-sg"
description = "Security Group for terraform instance"
vpc_id = aws_vpc.terraformVPC.id
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
from_port = 443
to_port = 443
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
from_port = 3306
to_port = 3306
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
# ICMP 규칙 추가
ingress {
from_port = -1 # 모든 ICMP 트래픽
to_port = -1
protocol = "icmp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "terraform-sg"
}
}
이번 포스팅에서는 아래와 같은 순서로 프로젝트 구현과정을 설명드렸습니다.
1. CentOS 8에서 Terraform 설치하기
2. aws provider 파일 생성하기
3. 새로운 Key pair 사용하기
4. 새로운 SecurityGroup 생성하기
다음 포스팅에서 VPC를 생성하는 부분부터 설명을 이어가보도록 하겠습니다.
'Project > Cloud Project' 카테고리의 다른 글
IaC를 이용한 클라우드 인프라 구축 프로젝트 5 (0) | 2023.12.05 |
---|---|
IaC를 이용한 클라우드 인프라 구축 프로젝트 4 (2) | 2023.12.05 |
IaC를 이용한 클라우드 인프라 구축 프로젝트 3 (0) | 2023.12.05 |
IaC를 이용한 클라우드 인프라 구축 프로젝트 1 (0) | 2023.12.05 |