처음 만나는 클라우드 보안

[AWS] 빈스톡으로 인프라 구축하기 (feat.테라폼) 본문

클라우드 기초/Amazon AWS

[AWS] 빈스톡으로 인프라 구축하기 (feat.테라폼)

영민하게 2022. 6. 22. 17:13
반응형

빈스톡(BeanStalk)이란?

애플리케이션의 배포, 운영 그리고 관리 등 개발자를 위한 AWS의 간편 서비스를 말한다. 인스턴스 및 OS설치부터 오토 스케일링, 로드 밸런스, 모니터링 관리 설정까지 쉽고 빠르게 구성해주는 PaaaS 서비스이다.

- 서비스 특징

  • 코드를 작성해 zip파일 형태로 업로드 한면 AWS리소스에서 프로비전(Provision) 업무를 대신 처리한다.
  • 다양한 언어가 지원된다. ex) Java-톰캣, PHP-아파치, 파이썬-아파치, Node.js-Ngin/Apache, 루비-passenger/puma, .Net-IIS JavaSE, Docker, Go

- 빈스톡 실습

메인검색 > Elastic Beanstalk > Create Application

환경: Node.js (버전 최신)

코드: 로컬에서 업로드

 

구성 완료


테라폼(Terraform)이란?

하시코프(Hashicorp)에서 개발된 클라우드 인프라스트럭처링 (Infrastrucre as Code, IaC) 도구로, Go언어로 작성된 코드로 클라우드 리소스 선언 및 관리 할 수 있다. AWS뿐 아니라 구글의 GCP, 마이크로소프트의 애저와 같은 주요 클라우드 서비스에서의 활용이 가능하다.

- 테라폼 실습

VMware Ubuntu20.04 CLI환경에서 구성

# 테라폼 설치

$ sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
$ curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
$ sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
$ sudo apt-get update && sudo apt-get install terraform
$ terraform -install-autocomplete
$ mkdir terraform-docker-demo && cd $_

 

# 메인 스크립트 작성
$ vi main.tf                                                            
$ export AWS_ACCESS_KEY_ID='Acess키ID 입력'
$ export AWS_SECRET_ACCESS_KEY='Acess키PW 입력'
$ terraform init
$ terraform fmt
$ terraform validate
$ terraform apply

Enter a Value: yes   // 서버생성 시작

# 메인 스크립트 내용

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.27"
    }
  }

  required_version = ">= 0.14.9"
}

provider "aws" {
  profile = "default"
  region  = "us-west-2"                                         // 리전 설정
}

resource "aws_instance" "app_server" {
  ami           = "ami-098e42ae54c764c35"                          // AMI이미지 ID (Amazon Linux2)
  instance_type = "t2.micro"

  key_name = "yngmin_us_or"

   vpc_id = "VPC ID"
  subnt_id = "서브넷 ID"
  tags = {
    Name = "이니셜_인스턴스"
  }
}

data "aws_security_group" "보안그룹이름" {              
  name = "보안그룹이름"                                         //기존의 보안그룹 사용
}

원격 연결확인


참고자료

https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/Welcome.html

https://yonguri.tistory.com/35

https://www.44bits.io/ko/keyword/terraform

반응형
Comments