DevOps

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 terraform_remote_state 데이터소스 활용

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 terraform_remote_state 데이터소스 활용

    다음과 같이 다양한 workspace들이 있는데, workspace1은 workspace2를 참조해야 하는 상황이 생길 수도 있습니다. w2의 어트리뷰트를 활용하여 w1을 만들어야 하는 상황인것이죠. 이러한 니즈를 해결하기 위해 등장한 것이 remote_state입니다. 이는 워크스페이스가 state 관리의 단위라고 했습니다. 그리고 각 workspace는 상태파일을 가지고 관리합니다. 즉 remote_state 다른 워크스페이스의 상태파일을 참조하겠다는 말입니다. remote_state는 backend를 가지고 있어야 합니다. 그래서 각 remote_backend마다 코드가 조금씩 달라집니다. https://www.terraform.io/language/settings/backends/local Bac..

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 모듈 작성

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 모듈 작성

    일단 terraform에서 빈번히 사용되는 provider가 제공하는 module을 작성하는 법에 대해서 알아보도록 하겠습니다. https://github.com/LE123123/DevOps-terraform GitHub - LE123123/DevOps-terraform: terraform practice terraform practice. Contribute to LE123123/DevOps-terraform development by creating an account on GitHub. github.com 여기에서 기본적인 모듈 작성 폴더 구조를 보실 수 있습니다. /accounts/versions.tf terraform { required_version = ">= 0.15" required_pro..

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 워크스페이스 관리

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 워크스페이스 관리

    이제 테라폼 워크스페이스(Workspace)는 하나의 프로젝트라고 했습니다. 이를 통해서 workspace1, workspace2... 를 파생시킬 수 있습니다. 각각의 워크스페이스에 대한 tfvars파일을 만들어서 손쉽게 workspace를 관리할 수 있습니다. 간단히 실습해 보도록 하겠습니다. /main.tf provider "aws" { region = "ap-northeast-2" } variable "vpc_name" { description = "생성되는 VPC의 이름" type = string } locals { common_tags = { Project = "Network" Owner = "Hyunseo" } } output "vpc_name" { value = module.vpc.name..

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 리소스 강제 교체하기 (taint & untaint)

    [ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 리소스 강제 교체하기 (taint & untaint)

    이번시간에는 특정 리소스를 강제로 교체하는 방법에 대해 알아보도록 하겠습니다. 실제로 현업에서 리소스상에 문제는 없는데, 이것때문에 문제인거 같아서, 리소스를 하나 교체해서 디버깅해보고 싶은 경우가 있을 수 있습니다. 이럴 때는 Terraform에서 tain라는 명령어를 지원합니다. 이 상태에서 internet_gateway를 taint시켜주었습니다. 그럼 이와 같이 internet_gateway 뿐만 아니라 그 아래의 의존성들도 변경합니다. 그리고 untaint로 해당 리소스의 taint를 풀 수도 있습니다. 그리고 apply의 -replace옵션을 줘서 활용할 수도 있습니다.