728x90

terraform 4

terraform count vs for_each

terraform count vs for_each Terraform에서 count와 for_each는 모두 리소스 반복 생성을 위한 기능입니다. 하지만 둘은 다른 방식으로 동작합니다. count는 반복 횟수를 지정하는 숫자 형태의 값이며, 각 리소스에 인덱스가 자동으로 할당됩니다. 이 방식은 생성하려는 리소스 수가 고정되어 있을 때 유용합니다. for_each는 객체 형태의 값(맵)을 받으며, 각 맵 요소에 대해 리소스를 생성합니다. 이 방식은 동적으로 생성해야 하는 리소스 수가 있을 때 유용합니다. 리소스의 추가/삭제 없이 고정된 리소스를 사용하려면 count를 사용하고, 리소스 추가/삭제가 빈번하면 for_each를 사용하세요. 자세한 설명은 아래의 예제코드를 확인해보세요. count count를 사..

Terraform 2023.03.07

Terraform으로 AWS EKS 클러스터 만들기

Terraform으로 AWS EKS 클러스터 만들기 terraform을 사용하여 AWS EKS 클러스터를 만드는 예제입니다. EKS 클러스터 생성시 필요한 IAM role, CloudWatch Log Group, IAM OpenID Connect provider까지 생성하는 예시입니다. 아래의 코드사용시 subnet, security group을 생성해서 설정하거나, 사용할 subnet id, security group id로 치환해서 사용하셔야합니다. 참고로 아래의 코드에는 nodegroup을 생성하지 않습니다. # eks cluster 이름 정의 locals { cluster_name = "eks-cluster" } # eks cluster에 필요한 IAM ROLE 생성 data "aws_iam_po..

Terraform 2022.09.30

Terraform state mv 사용하기

Terraform state mv 사용하기 terraform을 사용하다 보면 terraform state mv 명령어를 사용할 일이 종종 발생합니다. 아래 같은 사례가 있을 때 terraform state mv 명령어를 사용하여, 기존에 생성된 리소스를 삭제 후 다시 생성하지 않고, terraform state를 유지할 수 있습니다. HCL 구조 리펙토링 리소스 이름 변경 리소스를 모듈로 변경 리소스 이름 변경 아래의 코드는 리소스 이름을 변경하는 예제입니다. # 리소스 이름을 vpc에서 dev로 변경합니다. -resource "aws_vpc" "vpc" { +resource "aws_vpc" "dev" { cidr_block = "10.10.0.0/24" } HCL코드는 리소스 이름을 변경하여 저장 후..

Terraform 2022.09.21

Terraform으로 helm chart 배포하기

Terraform으로 helm chart 배포하기 Terraform을 사용해서 helm chart를 배포하는 방법에 대해서 설명합니다. AWS EKS 클러스터에 metrics-server를 배포하는 예제입니다. 아래의 예제를 실행하려면 우선 terraform을 실행하는 user 또는 role에 EKS 클러스터의 권한설정을 해야합니다. # vi main.tf data "aws_eks_cluster" "test" { name = "eks-test" } data "aws_eks_cluster_auth" "test" { name = "eks-test" } provider "helm" { kubernetes { host = data.aws_eks_cluster.test.endpoint token = data.aw..

Terraform 2022.09.20
728x90