DevOps/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/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
'DevOps/Terraform' 카테고리의 글 목록