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)
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 |
---|