전체 글

전체 글

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL 반복문 (For)

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL 반복문 (For)

    저번강의에서는 count랑 for_each에 대해 알아보았었습니다. 이 둘은 module, resource, data에서 사용 가능한 특수한 속성이였습니다. 하지만 이는 테라폼의 모든 곳에서 활용 가능합니다. https://www.terraform.io/language/expressions/for For Expressions - Configuration Language | Terraform by HashiCorp For expressions transform complex input values into complex output values. Learn how to filter inputs and how to group results. www.terraform.io 위 공식문서를 기준으로 실습을 진행해..

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL 조건문 (Conditional)

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL 조건문 (Conditional)

    우선 간단히 terraform에서 조건문을 쓰는 방법에 대해 알아보겠습니다. /main.tf provider "aws" { region = "ap-northeast-2" } /** * Conditional Expression * Conditional ? If_True : If_False */ variable "is_john" { type = bool default = true } locals { message = var.is_john ? "Hello John!" : "Hello!" } output "message" { value = local.message } 이 코드의 의미는 원래의 프로그래밍 언어와 같습니다. variable인 is_john이 true이면 "Hello John!"이 출력되고, fals..

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL count와 for_each

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL count와 for_each

    우선 먼저 aws의 iam유저를 많이 생성하는 코드를 count를 통해서 고치는 작업을 해보도록 하겠습니다. count /main.tf provider "aws" { region = "ap-northeast-2" } # resource "aws_iam_user" "user_1" { # name = "user-1" # } # resource "aws_iam_user" "user_2" { # name = "user-2" # } # resource "aws_iam_user" "user_3" { # name = "user-3" # } # output "user_arns" { # value = [ # aws_iam_user.user_1.arn, # aws_iam_user.user_2.arn, # aws_iam_u..

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL variable & local & output

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL variable & local & output

    HCL variable /main.tf provider "aws" { region = "ap-northeast-2" } variable "vpc_name" {} module "vpc" { source = "tedilabs/network/aws//modules/vpc" version = "0.24.0" name = var.vpc_name cidr_block = "10.0.0.0/16" internet_gateway_enabled = true dns_hostnames_enabled = true dns_support_enabled = true tags = {} } module "subnet_group__public" { source = "tedilabs/network/aws//modules/subnet-gro..

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL module

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL module

    이제 하나의 블록에서 다른 사람이 작성한 인프라 코드를 사용해보는 작업을 하겠습니다. https://github.com/tedilabs/terraform-aws-network GitHub - tedilabs/terraform-aws-network: 🌳 A sustainable Terraform Package which creates Network resources on AWS 🌳 A sustainable Terraform Package which creates Network resources on AWS - GitHub - tedilabs/terraform-aws-network: 🌳 A sustainable Terraform Package which creates Network resources on A..

    [ DevOps ] - (VPC) VPC를 구성하는 기본 원리 ( 복습 )

    [ DevOps ] - (VPC) VPC를 구성하는 기본 원리 ( 복습 )

    선수 지식 VPC를 이해하기 위해서는 선수 지식이 좀 필요한데 아주 간단하게만 보고 가겠습니다. IP주소는 32자리 2진수인데 총 개수는 약 40억개정도 됩니다. 그리고 (네트워크 주소 + 호스트 주소)로 구성이 됩니다. 네트워크 주소는 아파트 주소, 호스트 주소는 호수로 이해하면 알기 쉽습니다. 정확한 주소로 찾아가려면 일단 아파트 주소로 가서 구체적인 호수를 찾아야 합니다. Amazon VPC의 작동방식 VPC는 사용자 AWS계정 전용 가상 네트워크 입니다. VPC의 IP범위 주소는 서브넷입니다. 이 둘은 CIDR표기법을 따릅니다. 기본 VPC 구성 요소 단계 IPv4 CIDR /16블록에 해당하는 VPC를 만듭니다 (172.31.0.16)요런식으로 만들면 65536개의 프라이빗 IPv4 주소를 제공..

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL resource와 data

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL resource와 data

    https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance Terraform Registry registry.terraform.io 우선 위 공식문서를 기반으로 aws ec2인스턴스를 테라폼으로 생성하고 이미지를 Data Resource으로 받아와서 생성해 보는 작업까지 해보겠습니다. /main.tf provider "aws" { region = "ap-northeast-2" } data "aws_ami" "ubuntu" { most_recent = true filter { name = "name" values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server..

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL 기초 문법

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL 기초 문법

    우선 기본적인 HCL문법의 형태에 대해 알아보겠습니다. https://www.terraform.io/language Overview - Configuration Language | Terraform by HashiCorp You can use the Terraform language to write configuration files that tell Terraform how to manage a collection of infrastructure. www.terraform.io 다음과 같은 형태를 뜨게 됩니다. Block Type에 따라서 Label이 몇개 올지 결정됩니다. 그리고 그 안에는 Identifier와 expression이 key-value쌍으로 들어갈 수 있게 됩니다. 여기서 테라폼 코드를..

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 다루어보기

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 다루어보기

    테라폼에서 Worksspace란 한 프로젝트 단위를 말합니다. 기본적으로 조직의 규모에 따라 서비스가 소규모이다 보니까, 인프라의 규모도 작습니다. 그래서 하나의 워크스페이스에서 모든 인프라를 관리할 수 있습니다. 하지만 조직의 규모가 커지게 되면 infra라는 워크스페이스가 (network, account, domain, service-a ...)와 같이 나누어 질 수 있게 됩니다. 그리고 테라폼은 변경사항을 추적할 수 있게 됩니다. 이를 위해 상태 관리를 하게 됩니다. 상태관리를 하게되면 .terraform.tfstate라는 파일로 관리하게 됩니다. 이는 워크스페이스 단위로 관리합니다. 이제 본격적으로 실습을 위한 워크 스페이스를 만들어보도록 하겠습니다. 실습 https://registry.terra..

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 소개

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 소개

    우선 테라폼의 가장 기본적인 3가지 절차입니다 Write -> Plan -> Apply입니다. Write과정에서는 해당 인프라 코드를 작성하고, Plan단계에서는 해당 인프라를 검증하고, Apply단계에서는 검증된 결과를 바탕으로 실제 인프라에 반영하게 됩니다. Write Write과정에서는 오른쪽과 같이 HCL코드를 통해 간결하게 인프라를 정의할 수 있습니다. 오른쪽 경우는 aws infra를 만든 예시입니다. Plan terraform plan을 통해서 검증을 하게되는데, 아래 결과를 보면 1개가 추가되고, 0개가 변하고 0개가 없어진다는 것입니다. 그리고 과정중에 +을 통해 추가되는 인프라의 상세정보도 확인할 수 있습니다. Apply Apply는 이제 검증된 결과를 바탕으로 실제 인프라에 적용하는..