• 엑셀(Excel)을 넣으면 자동으로 Terraform(.tf)파일로 변환-4

    2024. 3. 18.

    by. Daramu

    그렇게 코드를 치환하고, 이제는 마무리 작업만 남았다.

    다시 상기하지만 나의 퀘스트는 "자동으로 tf 파일 생성" 이다.

     

    여기서 고려해야할 사항이 있었다.

     

    1. 엑셀파일은 한개가 아니다.

     

    msp 사업자로써 하루에도 몇개의 고객사 문의가 들어온다. 만약 폴더 하나에 모든 파일을 넣는다면 실행시마다 모든 고객사의 tf파일이 돌아가는 참사가 생길게 분명했다.

     

    tf파일은 terraform apply 를 치는순간 하위의 모든 폴더를 탐색한다. 즉, 하나의 폴더서 분류를 하는 것은 위험해 보였다.

     

    그렇기에 파이썬의 코드를 둘로 나웠다.

     

    1. 엑셀을 json으로 변환하는 .py

    2. json을 tf로 변환하는 ,py

     

    사실 하나로도 상관없었는데...뭐 목적에 따라 다르면 보기에는 그럴싸하지 않겠는가.

     

    아무튼 1번의 문제 해결을 위해 사용자가 엑셀을 넣고, 쉘 스크립트 실행시 어떤 엑셀 파일을 변환할건지 물어보게 했다.

    사용자가 엑셀 파일을 입력하고 해당 엑셀 파일이 존재하면, 루트(/)밑에 해당하는 이름의 폴더를 만들고 해당하는 폴더로 json과 tf파일을 집어넣었다.

     

    이럼 모든 tf파일을 실행시키려면 루트(/)에서 실행시켜야하는데.... 세상에 그런 용자는 없을거라는 생각이 들었기에 이 생각대로 진행했다.

     

    2. 자동으로 terraform inti,plan,apply 실행.

     

    이 부분이 예상외로 난관에 부닥겼다.

    파이썬으로 변수를 받아 파일을 만들었다.

    문제는 쉘 스크립트에서 해당 변수를 받아서 폴더를 만들고 해당 폴더에 들어가야(cd)하는데 방법이 안떠올랐다.

     

    이번에 새롭게 사귄 도라에몽(AKA 챗지피티)에게 물어서 코드를 뜯어냈지만 동작이 여의치 않았다. 자꾸 변수를 못찾기에 고생하다가, 결국 팀장님에게 눈물의 SOS를 쳤다.

     

    나의 고민을 들은 팀장님이 심드렁하게 말하기를.

     

    "파이썬에서 쉘스크립트로 변수 받는게 어려우면, 쉘 스크립트로 변수받고 파이썬에서 쓰면 되는거 아니냐?"

     

    아! 왜 그 생각을 못했을까!

    사람은 가끔 반대로 걸어야 한다더니 이 단순한 생각을 못했다.

     

    파이썬에서 쉘 스크립트로 변수를 옮기는건 어려웠지만, 반대는 쉬웠다. 그냥 input으로 받고, 해당 변수로 py을 실행시키면 되었다. 단지 파이썬 코드에는 해당 변수를 받을

    excel_input = sys.argv[1]

     

    요 코드 한줄이 추가 됬을 뿐이었다.

     

    그렇게 대강의 코드를 만들고, 기대 만빵(여기까지가 1주 하고도 3일이 걸렸다. 하지만 나는 2주가 걸렸다. 왜?....후..)으로 코드를 실행했다....

    댓글