클라우드 아카이브

01. Terraform으로 AWS에 RHEL 7 생성 본문

워크플레이스/IaC를 이용한 LVM 구성

01. Terraform으로 AWS에 RHEL 7 생성

Cloud Engineer 2021. 10. 13. 23:15
반응형

1. 개요

본 포스팅에서는 프로비저닝 도구인 테라폼을 사용하여 AWS에 RHEL 7 서버 1개를 생성하는 실습을 진행하겠습니다.

2. 사전 학습

- 테라폼의 개념과 특징 (테라폼을 사용하여 AWS에 EC2 생성)

3. 실습 : 테라폼으로 EC2 및 EBS 생성

《시스템 구성도》

EC2를 생성한 다음 해당 노드에 EBS를 구성/연결하겠습니다. 

1. 생성할 EC2 코드 작성

[요구사항]

- OS : RHEL 7

- Mem : 2GB

- CPU : 1 Core

테라폼의 개념과 특징 (테라폼을 사용하여 AWS에 EC2 생성)에 작성한 코드에서 amiinstance_type만 수정하겠습니다. 그리고 생성할 EC2에 외장 스토리지를 생성 및 연결하기 위해  해당 ami 및 인스턴스 타입을 확인할 수 있는 방법은 AWS 웹 콘솔에 있는 AWS Marketplace에 접속하면 됩니다. 접속 방법을 모르시는 분들은 링크를 클릭해주시면 됩니다.

resource "aws_instance" "my_ec2_node" {
	ami					= "ami-0708fd0ae9a663e02"	# RHEL 7
	instance_type		= "t2.small"				# Memory 2 GB
	key_name            	= aws_key_pair.ec2_admin_key.key_name

	associate_public_ip_address	= true				# give a Public IP

	# include VPC Security Group
	vpc_security_group_ids = [
		aws_security_group.allow_SSH.id
	]

	tags = {
		Name = "my-ec2-node"
	}
}

# 방화벽 22번 포트 오픈
resource "aws_security_group" "allow_SSH" {
  name = "allow_ssh_from_all"
  description = "Allow SSH port from all"

  ingress {
    from_port = 22
    to_port = 22
    protocol = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    cidr_blocks = [ "0.0.0.0/0"]
    from_port = -1
    protocol = "-1"
    to_port = -1
  }
}

2. EC2에 연결할 EBS 코드 작성

[요구사항]

- 기밀 급은 아니지만, 크리티컬한 데이터를 저장한다고 가정 : 한국 내에 해당 스토리지가 위치

- 스토리지의 용량은 200GB로 지정

- 데이터는 암호화되어 저장되어야 함

resource "aws_ebs_volume" "ec2-volume" {
    availability_zone = "ap-northeast-2a"
    size              = 200
    encrypted         = true
    tags = {
        Name = "oracle-volume"
      }
  }

resource "aws_volume_attachment" "attach-my-ebs-volume-with-ec2" {
    device_name = "/dev/sdb"
    volume_id   = "${aws_ebs_volume.ec2-volume.id}"
    instance_id = "${aws_instance.my_ec2_node.id}"
}

AWS에 EC2 및 200GB 용량의 스토리지를 생성했습니다. 이제 해당 노드에 접속하여 파티셔닝 및 LVM 구성 작업을 진행하겠습니다.

3. EC2에 등록할 SSH 키 지정

EC2에 비대칭키 알고리즘 방식을 통해 SSH 인증하기 위해서는 공개키를 등록해주어야 합니다. 새로 생성한 공개키를 EC2와 공유하기 위해 아래와 같이 리소스를 등록해줍니다.

resource "aws_key_pair" "ec2_admin_key" {
  key_name = "ec2_admin"
  public_key = file("~/.ssh/ec2_admin.pub")
}

4. 프로비저닝 이행

작성한 코드 디렉토리에서 아래 CLI 명령어를 수행하면 해당 실습이 완료됩니다.

$ terraform apply

마무리

테라폼을 사용하여 EC2 및 EBS를 구성하는 실습을 진행했습니다. 다음 포스팅에서는 해당 노드에 접속하여 LVM을 수동으로 구성하는 방법, 앤서블을 사용하여 코드 베이스로 구성하는 방법을 나누어 제작하겠습니다.

Comments