Programming/Terraform

Data sourceVariable, Output을 이용해 데이터를 입력하거나 출력 되는 과정의 데이터를 변수에 담는 방식을 이용할 수 있다. 그 과정에 선언한 VPC, Subnet 생성 코드에는 하드코딩 된 데이터가 일부 있는데 재활용을 높이기 위해서는 이 부분을 최소화 해야 한다. 이 때 하드코딩 된 부분을 모두 변수로 선언해서 재활용을 높일 수도 있으나 Data source를 이용할 수 있다. Data source는 Terraform 외부 환경에 정의된 리소스의 Attribute 정보를 읽어와 코드에 변수 값을 저장하듯이 사용할 수 있다. 1. 서브넷 정보 확인기존 구성된 vpc.tf 파일에서는 서브넷 정보를 아래와 같이 하드코딩 해두었다.# vpc.tfresource "aws_subnet" "pu..
Attributeprovider를 통해 만들어진 리소스는 Attribute을 가지게 되는데, 이 값들은 서로 연관된 다른 리소스를 생성할 때 참조해야 할 때가 있다. 예를 들어, VPC는 vpc.id라는 Attribute을 가지고 있는데, subnet을 만들 때 vpc.id를 필수 값으로 반영해야 하기 때문에 참조할 데이터의 대상이 된다. 1. Attribute 참조 형식# _..aws_vpc.main.id 2. Attribute 적용 예시resource "aws_vpc" "main" { cidr_block = var.vpc_cidr tags = merge( { "Name" = "Main" }, var.default_tags )}resource "aws_subnet" "pu..
Variable & Validation 선언 변수를 사용하면 코드를 더 쉽게 재사용할 수 있고, 다른 구성 간에 코드를 공유할 수 있다. 1. variable 파일 없이 직접 입력하는 방식# vpc.tfresource "aws_vpc" "main" { cidr_block = "10.0.0.0/16" tags = { Name = "main", Environment = "development", CostCenter = "23213" }}2. variable.tf 파일을 이용해 데이터를 입력하는 방식variable은 "vpc_cidr", "default_tags" 두 가지로 구분된다.variable 내부는 type, description, default, validation로 구성되어 있다.# v..
팀 단위로 여러 사람이 동시에 코드를 작업하고 공유하는 경우 Local 백엔드 구성은 적합하지 않다. 오래된 변경 사항이 적용되는 것을 방지하지 위해서 누구나 최신 상태 파일에 액세스해야 한다.상태 파일은 내구성이 뛰어나고 모두가 다같이 사용 가능한 위치에 저장해야 한다.경합 상태를 방지하기 위해 동시 terraform 적용 작업이 발생하지 않도록 방지하는 매커니즘이 필요하다. AWS CLI 이용 S3 Bucket & DynamoDB 생성S3 Bucket 생성$ aws s3 mb s3://terraform-starter-bucket --region ap-northeast-2DynomoDB 생성$ aws dynamodb create-table \ --table-name tf_state_table \ --a..
plan, apply, destroyCommandDescriptionterraform plan • 이미 존재하는 원격 객체(Cloud resoure)의 현재 상태를 읽어 최신 상태인지 확인한다. • 적용하기 위해 구성한 코드를 읽어 현재 원격 객체의 상태과 비교해 차이점을 확인한다. • 차이가 발생한 부분을 출력하고, 변경 조치할 내용을 제안한다.terraform apply• terraform plan 명령으로 제안된 작업을 실행하여 실제로 원격 객체에 상태를 업데이트 한다.terraform destroy • 원격 객체를 삭제하는 명령이다. plan, apply 사용법1. 리소스 생성을 위한 .tf 파일 생성# vpc.tfresource "aws_vpc" "main" { cidr_block = "10...
Terraform은 AWS, Azure, GCP 등 Cloud Service Provider들의 서비스 리소스들을 선언적인 코드로 작성해 관리할 수 있도록 지원한다. 기본 용어 1. ProviderTerraform 외부에 존재하는 서비스와 연결해주는 모듈이다. AWS의 서비스를 이용하고 싶은 경우 AWS Provider를 선언해야 한다.2. Resource Provider가 제공하는 서비스 자원이다. 클라우드 내부의 Instance, Gateway, Securoty Group 등이 있다.3. HCL (Hashicorp Congifureation Language) Terraform에서 사용하는 프로그래밍 언어다. (Java, C, Python과 같은 프로그래밍 언어 같은..?)4. Plan Terrafor..
EndiYou
'Programming/Terraform' 카테고리의 글 목록