본문 바로가기

Technical Docs/etc

IaC(Infrastructure as Code) 란?

IaC(Infrastructure as Code) 란 말 그대로 코드로 인프라를 관리한다고 생각하면 된다.

기존에 온프레미스에서 또는 클라우드에서 인프라를 설치하는 방식은 대충 간추리면 아래와 같다.

 

1) 자신이 원하는 서버의 사양을 고르고 구매한다.

2) 그 위에 올라가는 OS를 결정하고 설치한다.

3) OS레벨에서 각 회사에 맞게 세팅이 필요한 설정들을 변경한다.

4) 솔루션 또는 서비스를 올려서 실행한다.

 

그런데 IaC 에서는 이 작업을 Code로 진행한다고 생각하면 된다. 그래서 내가 생각하는 제일 큰 장점은 재사용성이다 ㅋㅋ

한번 만들어두면 여러 번 고생할 필요가 없다......

 

IaC 를 위한 툴에는 여러가지가 있다.

가장 유명한건 Harshcorp의 https://www.terraform.io/ 이다.

그 외에도 클라우드에서는  AWS 의 Cloudformation / Azure의 Resource Manager / Google의 Cloud depolyment manager 가 있고, 우리나라에서 많이보이는 Ansible, Puppet, Chef 도 있다. 

 

예시는 가장 유명하고 널리 쓰이는 Terraform을 AWS 에서 사용하는 법을 예시로 보자.

 

Terraform use in AWS

해당 자료는 Terraform 공식 홈페이지에서 Tutorial 로 제공된다. (https://learn.hashicorp.com/tutorials/terraform/infrastructure-as-code?in=terraform/aws-get-started)

 

plan to launch terraform

Terraform을 사용해 인프라를 구성하는데 필요한 단계라고 보면된다.

1) 범위 : 프로젝트에서 사용할 인프라의 종류 및 구성에 대해 확인

2) 작성 : 위에서 확인한 인프라에 대한 설정을 코드로 작성

3) 초기화 : 테라폼을 사용해 인프라를 구성할곳에 테라폼을 설치한다.

4) 계획 : 내가 계획한대로 테라폼이 설치할 수 있도록 확인한다

5) 적용 : 테라폼 실행을 통해 인프라를 변화시킨다.

 

아래서 Terraform을 활용해 인프라에 적용시키는 코드를 보자

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

  required_version = ">= 1.2.0"
}

provider "aws" {
  region  = "us-west-2"
}

resource "aws_instance" "app_server" {
  ami           = "ami-830c94e3"
  instance_type = "t2.micro"

  tags = {
    Name = "ExampleAppServerInstance"
  }
}

Required_providers : 테라폼이 실행할 provider 의 Requirement 에 대한 명시를 적은 곳이라고 보면 된다.

Provider : 테라폼 코드를 실행시킬 provider 여기서는 AWS 로 작성했다.

Resource : 코드로 변화시킬 Infra에 대한 정보를 작성한다.

 

실제 어떻게 설치하는지는 튜토리얼에 자세하게 나와있다. 나는 간단하게 소개만한다....

 

'Technical Docs > etc' 카테고리의 다른 글

Sublime text3 에서 python3 입력 편하게 하기  (2) 2022.01.05