728x90
반응형
SMALL

IaC(Infrastructure as Code) 28

AWS + Terraform (Conditions)

HCL은 조건문도 사용할 수 있다. Variables와 Condition을 조합해서 한번 조건문을 다뤄보자. Basic 다음 main.tf 코드를 보자. provider "aws" { region = "ap-northeast-2" } variable "is_john" { type = bool default = true } locals { message = var.is_john ? "Hello John" : "Oh, Your are not John." } output "message" { value = local.message } 변수로 is_john이라는 녀석을 선언한다. 이 녀석은 boolean 타입의 변수고 기본값이 true이다. 이 때 로컬 변수 message는 is_john의 값에 따라 값이 달라..

AWS + Terraform (For-Each)

이번에는 HCL의 for-each문을 활용해서 여러개의 리소스를 만들어보자. count 우선, for-each를 사용하기 전 count를 먼저 사용해보자. 이 count는 HCL에서 예전부터 있던 기능인데 이 기능에 대한 문제점을 보완하고자 for-each가 나왔다고 생각하면 된다. 우선 코드를 바로 보자. # --------- # count provider "aws" { region = "ap-northeast-2" } resource "aws_iam_user" "count" { count = 5 name = "count-user-${count.index}" } output "count_user_arns" { value = aws_iam_user.count.*.arn } 이 코드에서 "count = 5..

AWS + Terraform (Module)

목표 이번에는 모듈을 사용해서 인프라를 구축해보자. VPC, Subnet, Route Tables 등등을 모듈로 정의하고 가져다가 사용해서 인프라를 구축한다. Module 모듈은 쉽게 말해서, 어떤 특정 컴포넌트(예: VPC)를 만들기 위해 필요한 정보들을 미리 구현해놓은 누군가(또는 나의)의 것을 가져다가 사용한다고 생각하면 된다. 개발할 때 패키지나 모듈을 다운받아서 가져다가 쓰는 원리랑 동일하다. 그래서 테라폼 레지스트리에서 올려놓은 여러 모듈 중 하나를 가져다가 사용해서 인프라를 구성해보자. 테라폼 레지스트리에 등록된 모듈 중 이 모듈을 사용할 것이다. Terraform Registry registry.terraform.io 여기 보면 AWS 네트워크 관련된 모듈들이 있다. Terraform Re..

AWS + Terraform

이번엔 AWS Provider를 사용해서 Terraform을 이용해보자. AWS Provider 다음 링크는 AWS Provider 관련 링크이다. Terraform Registry registry.terraform.io 이 링크에서 우측 상단 "Documentation" 버튼을 클릭하면 어떻게 provider를 적어 넣을지 보여준다. 한번 우리가 기존에 만들었던 main.tf 파일에 다음 코드를 추가해보자. provider "aws" { region = "ap-northeast-2" } 그리고 그 다음에 위 예제대로 다음 코드를 추가해보자. resource "aws_vpc" "vpc" { cidr_block = "10.0.0.0/16" } 이 작업을 수행하기 앞서 AWS CLI가 있어야 하고 AWS C..

Terraform 소개 및 간단하게 다루어보기

Terraform 소개 Terraform으로 본격적으로 인프라를 코드로 관리하기 앞서 알고 가야할 기본 내용들이 존재한다. 우선 핵심이 되는 흐름인 "Write" - "Plan" - "Apply"에 대해서 알아보자. Write Write는 리소스를 정의하는 단계이다. 테라폼이 읽을 수 있는 언어로 여러 클라우드 프로바이더 중 내가 원하는 클라우드 프로바이더에 이것 저것 인프라를 구축하기 위해 필요한 리소스를 작성하고 설계하는 단계 Plan Plan은 Write 단계에서 작성한 리소스에 대한 정의를 가지고 어떻게 만들어질 것인가를 알려주는 단계이다. "무언가가 생겨나거나 지워지거나 등 이렇게 구성될 것이다."에 대한 내용을 보여주는 단계 Apply Apply는 Plan에서 보여준 내용을 실제로 적용하는 단..

패커(Packer), Ansible 설치 및 설정

Packer란 Packer는 이미지 빌더 도구이다. 여기서 이미지란 Docker나 AWS EC2 Image와 같은 그 이미지를 말한다. AMI 같은 경우 AWS에서 사용할 수 있지만 이 Packer는 이미지를 여러 플랫폼에서 사용할 수 있게 만들어준다. Packer 설치하기 공식 문서를 참조하면 각자의 운영체제에 맞게 설치할 수 있다. Install | Packer | HashiCorp Developer Explore Packer product documentation, tutorials, and examples. developer.hashicorp.com 나는 macOS 사용중이므로 다음 명령어를 통해 설치한다. brew tap hashicorp/tap brew install hashicorp/tap/..

Terraform 설치 및 설정하기

Terraform 설치 Install | Terraform | HashiCorp Developer Explore Terraform product documentation, tutorials, and examples. developer.hashicorp.com 해당 문서에서 본인의 운영체제에 맞게 설치를 하면 된다. 설치가 끝나면 다음 명령어로 설치가 정상적으로 됐는지 확인한다. terraform -version 버전이 잘 나오면 설치가 성공적으로 된 것이다. Terraform 자동완성 설정 Install Terraform | Terraform | HashiCorp Developer Install Terraform on Mac, Linux, or Windows by downloading the binary..

IaC 개요

IaC (Instrastructure as Code) 네트워크, 로드밸런서, 저장소, 서버 등의 인프라 자원을 사람의 손으로 수동 설정이 아닌 코드를 이용하여 프로비저닝하고 관리하는 것을 IaC라고 한다. 대표적인 IaC 도구로 Terraform, CloudFormation, Pulumi, Azure ARM Template 등이 있다. 혼동을 주는 개념의 형상 관리라는 개념이 있다. 형상 관리 (Configuration Management) 서버 운영체제 상에 필요한 소프트웨어를 설치하고 원하는 설정으로 관리하는 것(예: 리눅스 기반 운영체제 위에 Nginx를 설치하고 프록시를 세워 웹 서버를 띄우고 웹 서버를 띄우기 위해 필요한 패키지들을 설치하고 관리하는 과정)을 말하는데 이를 코드로 작업하게 되면 ..

728x90
반응형
LIST