Terraform을 이용해서 AWS Infra 구축 업무를 맡은지 3개월이나 되었다. 짧은(?) 기간동안 Terraform의 aws provider를 사용하여 코드로 AWS 인프라를 관리했다. terraform-aws-provider를 사용하며 느낀점은 아직 모든 기능이 테라폼으로 구축할 수 없다
는 것이었다.
콘솔에서는 가능하지만, 테라폼으로는 아직 기능이 구현되지 않아서 콘솔로만 해야하는 일들이 간혹 있었다. 그럴때마다 나는 사수님께 울며 여쭤봤다.
"사수님... Redis에서 Logging 활성화를 하고싶은데... 기능이 없어여😭" 라고 말하면 사수님은 딱 2가지를 물어보셨다.
"Stackoverflow에서 찾아봤어요? 없으면 Stackoverflow에 질문 올리세요."
"GitHub Issue, PR 올라온거 있는지 찾아봤어요? 없으면 직접 올리세요."
사수님의 특훈으로 터득한... 절대 테라폼으로 배포한 리소스를 콘솔로 건들지 않겠다는 집념으로 기능 추가를 얻어낸 방법을 적어보려한다🏋🏻♀️
테라폼으로 배포했지만 콘솔에서 조작하는 순간 우리는 되돌릴 수 없는 강을 건너는 것과 같기에... 테라폼에서 구현할 수 없는 기능을 마주할 때 내가 하는 방법을 정리해보려한다. (누구든 없는 기능을 찾으면 얼른 해시코프에 신고해서 모든 기능을 테라폼으로 촤라락 구현할 수 있는 그 날을 기대하며...🚀)
구글링을 해보니 Stackoverflow에도 이미 관련 질문이 올려져 있었다.
How to enable slow log of AWS ElastiCache with terraform
하지만 답변이 형편없었다.. 그래서 GitHub PR을 찾아봤다.
Terraform 버전 릴리즈가 생각보다 빠르다.
그에 못지 않게 Terraform AWS Provider 버전 릴리즈도 엄청 빠르다. aws provider의 경우 보통 7일에 한 번 릴리즈가 된다. 이번에 4.7.0 -> 4.8.0 의 경우엔 하루... 걸렸다.
없는 기능을 마주했을 때, 제일 먼저 릴리즈 페이지에서 없는 기능의 리소스 이름을 검색해서 어떤 것들이 들어왔는지 확인하고, 내가 현재 사용하는 aws-provider 의 버전을 비교해보자.
아래 링크를 누르면 Terraform / terraform-aws-provider Github 릴리즈 페이지로 이동한다.
✅ Terraform Release 보러가기
✅ Terraform AWS Provider Release 보러가기
aws 프로바이더를 사용하며 없는 기능을 발견했다면, terraform-provider-aws 깃허브 에 들어가서 PR(Pull Requests)를 확인한다.
Filter에 다가 내가 필요한 기능을 검색한다.
하지만 나의 경우 내가 생각했을 때, 내가 필요한 기능이 포함될 것같은 리소스 이름을 검색한다.
가장 최근 나는 ElastiCache Redis에서 logging을 활성화 하고, CloudWatch로 log를 보내는 기능이 필요했다.
그래서 내가 생각했을 때, ElastiCache Redis를 생성하는 리소스 이름인 aws_elasticache_cluster
에 그 기능이 포함 될 것으로 생각이 되어서 아래와 같이 검색했다.
위에 처럼 나와 같이 ElastiCache Redis Logging 을 필요로 하는 어떤 천사가 이미 기능을 개발해서 PR을 올린 것을 찾았다! (캡쳐일자로 Merged가 되어서 그렇지만,,원래는 PR Open 이었다)
오픈소스로 되어있는 aws provider는 많은 사람들이 없는 기능들을 직접 개발해서 PR을 올린다. 하지만 너무 많은 PR이 올라와서 많은 기능들이 바로바로 릴리즈되는 것이 아니라 묻히기 쉽상이다...
이 때 필요한건 근성인 것 같다!!!
나에게 필요한 기능도 2021년 12월 12일에 올라온 PR이었는데 몇 사람들이 PR에 이모지로 관심의 표현을 해줬지만 여태 묻혀있었다😭
그래서 코멘트를 남겼다.
새로운 PR에 대한 Merged 권한은 Hashicorp 직원들이 갖고 있는 것 같았다. 그래서 나는 늘 코멘트를 달 때, Hashicorp 직원들을 태그해서 남겼다. 그래야 PR을 확인해주고 내가 필요한 기능이 조금 더 빨리(?) 릴리즈 될 것 같아서... 제발 봐달라는 심정으로 태그를 건다 :-)
이전에 다른 PR 머지시키기위해 미리 확인해둔 해시코프 직원 분들 이름을... 매번 동일하게 써서 죄송합니다...
태그를 단 분 중에 한 분이 확인을 해주셨고, 코드 검증을 해주시고 LGTM
코멘트를 달아주셨다😭 (릴리즈가 곧이다..!!!)
그리고 이틀 뒤, 바로 Merged 가 되었고!!!!!
4.8.0 버전에 릴리즈 되었다!!!🚀
Terraform aws provider 공식 문서를 보면 아래와 같이 잘 업데이트 된 것을 확인할 수 있었다!!!
어떻게 보면 개발자로서 오픈소스에 참여하고 기여하는 것은 당연하다고 생각했다. 하지만 왜 한 번도 오픈소스 깃허브를 들여다 볼 생각을 못했을까? 작지만 소중한 경험을 하고있는 요즘이다. GitHub에서 Issue를 찾아보고, 올려보고 PR을 확인하고 누군가를 태그해서 코드 리뷰를 부탁하고 릴리즈 하는데까지 관심을 가져보기는 처음이다.
내가 기능을 구현하거나 코드를 짠 것은 아니지만, 누군가 열심히 기여해서 올려둔 PR이 세상에 빛을 바라는데 기여한 것같아서 뿌듯(?)한 마음에 장황하게 글을 끄적여본다.