ex) aws_security_group, aws_lb, aws_instance
테라폼을 잘 활용하기 위해서는 테라폼이 작동하는 원리를 이해하는 것이 중요합니다. 테라폼에는 3가지의 형상이 존재합니다.
Local 코드 : 현재 개발자가 작성/수정하고 있는 코드
AWS 실제 인프라 : 실제로 AWS에 배포되어 있는 인프라
Backend에 저장된 상태 : 가장 최근에 배포한 테라폼 코드 형상
테라폼의 기본 사용 명령어
지정한 backend에 상태 저장을 위한 .tfstate 파일을 생성합니다. 여기에는 가장 마지막에 적용한 테라폼 내역이 저장됩니다.
init 작업을 완료하면, local에는 .tfstate에 정의된 내용을 담은 .terraform 파일이 생성됩니다.
기존에 다른 개발자가 이미 .tfstate에 인프라를 정의해 놓은 것이 있다면, 다른 개발자는 init작업을 통해서 local에 sync를 맞출 수 있습니다.
정의한 코드가 어떤 인프라를 만들게 되는지 미리 예측 결과를 보여줍니다. 단, plan을 한 내용에 에러가 없다고 하더라도, 실제 적용되었을 때는 에러가 발생할 수 있습니다.
Plan 명령어는 어떠한 형상에도 변화를 주지 않습니다.
실제로 인프라를 배포하기 위한 명령어입니다. apply를 완료하면, AWS 상에 실제로 해당 인프라가 생성되고 작업 결과가 backend의 .tfstate 파일에 저장됩니다.
해당 결과는 local의 .terraform 파일에도 저장됩니다.
AWS 인프라에 배포된 리소스를 terraform state로 옮겨주는 작업입니다.
이는 local의 .terraform에 해당 리소스의 상태 정보를 저장해주는 역할을 합니다. (절대 코드를 생성해주지 않습니다.)
Apply 전까지는 backend에 저장되지 않습니다.
Import 이후에 plan을 하면 로컬에 해당 코드가 없기 때문에 리소스가 삭제 또는 변경된다는 결과를 보여줍니다. 이 결과를 바탕으로 코드를 작성하실 수 있습니다.
[DevOps] AWS and 테라폼: Infrastructure as Code: 초급, 입문편을 참고한 내용입니다.