favicon Jay Lee DevLog

📚 목차

먼저 어제 만들었던 인프라를 삭제해둔 상태이기 때문에,

이 상태에서 시작해서 다시 하나하나 추가해보면서 확인해보자.


지금 상태는

이렇게 테라폼 버전 정보만 남아있는 상태이다.

다 삭제했으니 당연한건 같다.

serial과 lineage 값은 자동 부여되는 값이 아닐까 싶다.

 

이제 어제했던 대로 하나씩 추가해보면서

값이 어떻게 바뀌는지 확인해보자.

 

  • 먼저 web_admin이라는 키 페어를 추가했을 때
resource "aws_key_pair" "web_admin" {
  key_name = "web_admin"
  public_key = file("~/.ssh/web_admin.pub")
}

  • resource를 추가하니, resource 부분에 내가 추가한 내용이 그대로 들어가 있는 모습을 볼 수 있다.
  • type에 aws_key_pair는 web_admin.tf에 추가한 resource인 aws_key_pair의 이름이 그대로 들어간 모습이다.
  • name도 역시 web_admin.tf에 추가한 내용 그대로 들어갔다.
  • 그 외 인스턴스에 들어간 내용은 terrafrom plan을 실행했을 때 나오는 값이 그대로 들어간 모습이다.

사실 여기까지만 해봐도 내가 추가한 내용이 .tfstate에 들어가는구나를 알 수 있지만,

조금 더 해보자. 어제 했던 내용을 다 추가한 후 다시 확인해본다.

  • aws_security_group, aws_instance, aws_db_instance 추가

aws_db_instance
aws_instance

 

aws_security_group

예상한대로 내가 추가한 resource들이 다 추가된 모습이다.

안에 내용이 길어서 전체 내용을 다 가져올 순 없었다.


보다보면

이런식으로 비어 있는 값들이 있는데,

값을 한번 넣어보고 싶어졌다.

해당 값은 aws_db_instance밑에 있으니 아래처럼 하면 되지 않을까?

resource "aws_db_instance" "web_db" {
  # DB 사이즈, 기가 단위
  allocated_storage = 8 
  # 어떤 sql 쓸건지
  engine = "mysql"
  engine_version = "8.0.33"
  instance_class = "db.t2.micro"
  ## db_name 추가
  db_name = "mysql" 
  username = "admin"
  # password는 임시 비밀번호로 쓸거라 대충 만들고 나중에 DB 접속해서 변경
  password = "11112222"
  # 인스턴스 삭제시 최종 스냅샷 스킵 여부, 디폴트는 false인데 이러면 삭제가 힘들어 true로 변경
  skip_final_snapshot = true
}

aws_db_instance 밑에 db_name 항목을 추가한 뒤

"mysql" DB를 물도록 한번 해봤다.

이후 plan을 실행하니,

이런식으로 db_name이 추가된 모습이다.

이제 apply후 .tfstate 파일을 확인해보자.

apply를 하자마자, DB 관련 내용을 삭제하는 모습이다.

관련 설정 사항이 바꼈으니 당연한 건 같다.

이후 다시 DB 잡으면서 에러가 발생했다.

뭐 당연한 에러가 발생한거다.

지금은 ec2 내에서 mysql 설치가 안돼서 다른 테스트용 DB를 만들어두지 못한 상황이기 때문에,

기본으로 생성되어 있는 DB에 접근하려 했으니 안되는게 당연한 것 같다.

 

어쨋든, 이런 식으로 속성 값을 추가할 수 있다는 걸 알게됐다.

이제 .tfstate를 확인해보자.

확인해보니, DB는 에러가 났기 때문에,

아예 내용이 빠져있었다..

 

여튼 이런식으로 대강 .tfstate 파일에 대해 알아봤다.

정리해보자면,

  1. .tfstate파일은 apply시에 만들어지고, 이 안에는 내가 추가한 인프라에 resource, terraform version등에 대한 정보가 들어있다.
  2. 내가 뭔가 resource에 대한 값을 수정하거나 변경하면 그에 대한 내용이 추가된다.
  3. 수정한 내용에 문제가 있어 error가 발생한 경우에는 resource 내용 자체가 삭제된다.

이정도인 것 같다.

 

사실 확인해보고 싶은 건 많긴한데,

또 비용 지불할까봐 함부로 하질 못하겠다..

일단 이정도만 알아보고 이번 글은 마친다.

 

 

+ Recent posts

/ /

Contact

📧 dlwjdwls60@naver.com


블로그에 내용이 있으면 해당 글을 보여주며, 없으면 내용이 복사된 채로 ChatGPT로 연결됩니다.