terraform 으로 AWS 리소스 만들때 참고사항

terraform 으로 AWS 리소스 만들때 참고사항 적습니다.

향후 내용이 많아지면 리소스별로 문서를 분리할 수도 있습니다.

공통

lifecycle 활용

The lifecycle Meta-Argument - Configuration Language | Terraform | HashiCorp Developer

create_before_destroy = true : 리소스를 새로 만들 때 새로운 리소스를 만든 후 기존 리소스를 삭제하도록 함.

ignore_changes : 특정 속성의 변경을 무시하도록 함.

prevent_destroy (bool)

 

EC2

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance

user_data - (Optional) : Updates to this field will trigger a stop/start of the EC2 instance by default. If the user_data_replace_on_change is set then updates to this field will trigger a destroy and recreate. 기본은 user_data 변경시 EC2를 중지하고 시작함. user_data_replace_on_change 를 설정하면 리소스를 삭제하고 다시 생성하도록 할 수 있음. (이 부분은 terraform 버전 업데이트 되면서 바뀐 부분임. 예전에는 EC2 를 삭제하고 재생성했었음)

 

user_data 에서 cloud-init 자료 활용하기. timezone , hostname 은 OS가 모두 올라오기전 설정(cloud instance initialization)을 하는 것이 좋다. 그래야 관련되어 있는 다른 프로그램에서도 해당 설정이 반영이 된다. 예를 들어 syslog 의 경우도 명령어를 이용해 timezone을 변경해 주면 syslog를 재시작해야 timezone 바뀐 것이 반영이 된다.

→ cloud-init 에서 timezone 설정을 해도 syslog 는 UTC 임. syslog 를 재시작해야 함.

cloud-init 을 이용해 클라우드 인스턴스 초기화시 설정을 할 수 있다.