terraform

DevOps/Terraform

Terraform import 사용법

terraform state backend를 외부로 설정하고 외부에서 인프라를 수정했을 때 외부의 tfstate와 로컬의 tfstate를 state pull/push를 통해 일관성을 유지할 수 있다. 다만, 이와 달리 terraform에서 전혀 다루지 않고 Web GUI에서만 생성한 경우 terraform import를 통해 infra를 코드로 정의할 수 있다. 사용법 terraform [global options] import [options] ADDR ID ADDR - import하는 대상에게 부여하는 리소스 주소 ID - import 대상의 고유 값 import를 수행하기 위해서는 대상을 위한 provider를 구성하여 init까지 완료되어야한다. 이후 Security Group을 예시로 들자면, ..

DevOps/k8s

EKS VPC CNI

Amazon VPC CNI plugin for kubernetes EKS의 각 EC2에 배포되어 추가적인 ENI를 attach 함으로써각 Pod 및 서비스에 할당한다. 즉 EKS에서 실행시킨 pod의 내부 IP 주소(ex. 10.0.0.4)를 할당하기 위해 ENI를 추가한다는 것이다. 장점 기존에 사용하던 overlay network처럼 IP를 할당하는 데에 캡슐화하는 overhead가 발생하지 않는다. 단점 instance 유형에 따라 ENI를 attach 할 수 있는 상한선이 정해져있으므로 각 instance에 대해서 이를 극복하는 추가적인 할당이 불가능하다. Terraform에서 구성 방법 module "vpc_cni_irsa" { source = "terraform-aws-modules/iam/a..

DevOps/Terraform

The architecture 'x86_64' of the specified instance type does not match the architecture 'arm64' of the specified AMI

기존 terraform 스크립트에서 aws_ami를 검색한 다음 사용하도록 구성하였는데, 오랜만에 apply하니까 이러한 메시지가 떴다. The architecture 'x86_64' of the specified instance type does not match the architecture 'arm64' of the specified AMI원인은 위 에러 메시지가 무색하게도 단순히 검색되는 이미지가 없을 때 발생하는데, 이럴 때에는 그냥 terraform docs에서 제공하는 형식으로 aws_ami data 블록을 구성하자 data "aws_ami" "ubuntu" { most_recent = true filter { name = "name" values = ["ubun..

DevOps/Terraform

moved block

Moved 테라폼에서 기존 리소스의 이름이 변경되는 등의 상황이 발생하면 기존 리소스가 삭제되고 새로운 리소스가 생성된다. 다만 이때 삭제되고 생성되는 리소스가 정지되면 안되거나 내용이 삭제되면 안되는 경우가 대다수인데 이때 유용하게 쓸 수 있는 블록이 moved이다. None-moved resource "local_file" "a" { content = "hello!" filename = "hello.txt" } output "file_content" { value = local_file.a.content }위 tf파일에서 local_file.a의 이름을 b로 바꾸길 원할 때 resource "local_file" "b" { content = "hello!" filename = "hello.txt" }..

DevOps/Terraform

Terraform lifecycle

수명주기 terraform에서 resource를 선언할 때 블럭 내부에 배치하여 수명주기를 설정할 수 있다. 인수로는 다음 목록들을 입력할 수 있다. create_before_destroy (bool) 리소스 수정 시 수정된 리소스를 먼저 생성. 이후 기존 리소스 삭제 resource "local_file" "abc" { content = "lifecycle" lifecycle { create_before_destroy = true } } prevent_destroy (bool) 해당 리소스를 삭제하려할 때 거부 resource "local_file" "abc" { content = "lifecycle" lifecycle { prevent_destroy = true } } ignore_changes (l..

xlwdn98767
'terraform' 태그의 글 목록