본문 바로가기
카테고리 없음

Terraform & Terraform으로 EC2 instance를 생성해보자~

by 머전제이팍 2023. 3. 5.

Terraform

terraform

Terraform이란?

인프라를 코드로 관리할 수 있는(Iac) Opensource tool

  • 클라우드 서비스를 비롯한 다양한 인프라를 코드로 정의하고, 배포 및 관리할 수 있는 Opensourcetool.
  • 테라폼은 인프라를 코드로 관리함으로써 인프라 환경의 복잡성을 줄이고, 인프라 변경에 대한 대응력을 높여준다.
  • 다양한 클라우드 서비스 제공업체(AWS, Azure, Google Cloud Platform 등)와 호환되며, 이러한 클라우드 서비스 제공업체를 통해 제공되는 다양한 서비스(가상 머신, 데이터베이스, 로드 밸런서 등)를 코드로 관리할 수 있다. 또한 테라폼은 인프라를 코드로 정의하고, 이를 버전 관리할 수 있으므로, 여러 사용자가 협업하여 인프라를 관리 가능한 tool 이다~~.

Terraform 설치

mac os에다가 terraform을 깔아보자~~

 

brew install terraform
$ export AWS_ACCESS_KEY_ID = "my-access-key-id"
$ export AWS_SECRET_ACCESS_KEY= "secret key"
  • AWS access key id와 secret access key 생성
  • Aws ec2를 다루기 위해..!

Terraform을 이용해 단일 server 배포

  1. 공급자(provider) 구성
vi main.tf
provider "aws" {
  region = "ap-northeast-2"
}. 

resource "aws_instance" "example" {
  ami        = "ami-0005a4a4a5239394b"
  instance_type = "t2.micro"
  • provider : aws를 공급자로 사용하여 ap-northeast-2(한국 region)에 만들겠따.
  • resource:example: Type ami: 사용할 amazon machine image instance_type: instance 유형
  • aws_instance: 공급자+ resource
terraform init
  • main.tf의 code를 scan
  • “멱등성”을 제공한다.

멱등성?

연산을 여러 번 실행시켜도(적용시켜도) 결과가 달라지지 않는 성질

 

  • 기존 Script 같은 경우, 조건물을 이용하여 결과가 같아지도록 만들 수 있지만, 일반적으로는 사용하지 않음
  • However! Terraform. anisble같은 IAC tool 들은(infra 관리임으로) 멱등성을 제공한다.
  • 즉 메서드가 여러 번 실행되어도, 결과는 같으므로 안전하게 사용 할 수 있는 성질
terraform plan
  • 실제 변경값 적용 전에 테라폼이 수행할 작업을 확인 가능하다
  • unix, linux, git에서 사용하는 “diff” 명령어와 비슷한 기능
terraform apply
  • 실제로 코드 명령어를 실행(이 경우에는 instance 생성이겠지?)

  • “생성 완료”

생성된 EC2에 여러가지 설정을 추가하여 보자~

vi main.tf
provider "aws" {
  region = "ap-northeast-2"
}

resource "aws_instance" "example" {
  ami        = "ami-0e735aba742568824"
  instance_type = "t2.micro"

  tags = {
  Name= "terraform-exmaple"
 }
}

  • tags: Name이라는 tag로 instance 이름 입력
terraform apply
  • 다시 적용시키면
  • instance에 이름이 생겨벌임
resource "aws_key_pair" "terraform-key-pair" {
  key_name   = "rsa-rapa-key.pub"
  public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLPP4Vf30a+p0DQs7K4SrZ9A3AWOyYiVAd+dUeYOzLbrzv6pVwv9bHWwSifMR6EvRMWA4Otnan/Gvoemnl9eODQNgDETR8qcS/2ZT2NIZxtmkMThytb55qr9g1oINl3xs/swOBJ9N5PcNc/Vc9CDPb55hLzez8zDTqsNrqHJaxAjIU9zqOTrLdS81SUQqR5ExF7z7I/eZ6LjIGl2w5ukn50nK4C00ESAdH89HjAokYJms8wWzw+hOrLWj/8/Zcm8Sjnn056519MWdWlTgYB2xPIsQ6mWI6rIdaYzI1Lysb7nHQj19iGPFNOIj0koZRY5LViZSQEKJgtGVe6bWqmO8RaV1t8obI+FFzTE5jiAfpPjeaaHmbw0nYUR6l4+Y3P81krNxIqswUeSDGQe9ND5Tz8xRWXbASVl1l4Mg47piVtqrm5KjbYZNF58ybNy8Hh/daQxsg4+ZI/+1levGC8ZEqxZ5e7j7LNn8kUW6zoZaGzyiI+JKFp0jlLrNOH1GdjK8= kyontoki@naver.com"
  tags = {
        description = "terraform key pair import"
 }
}

 

 

  • mac 터미널로 ec2에 접근하기 위해 ssh key 등록~