ChatGPT + Azure + Terraform 쳇gpt를 사용한 Azure 테라폼 해보기

Azure
작성자
Roronoa
작성일
2023-02-16 16:01
조회
969
chatgpt +terraform +azure 사용기

Chatgpt 에게 Azure 에서 테라폼을 사용하는 예시를한번 물어봤습니다. 얼마나 잘되는지 어디까지 되는지 한번 알아보려합니다. 나온지 얼마 안되서 어떤 오류가 있고 어떻게 오류를 해결하고 잘 실행 되는지 보고 문제를 해결해보겠습니다.

한글로 물어보면 잘 원하는 대답이 잘 나오지 않아서 영어로 물어보는게 좋습니다. 물어보는 질문의 단어가 조금씩 다르면 다른 답변을 줍니다. 코드를 물어보는 것이므로 다른 코드를 줍니다.

please write a terraform code to create vm in azure 라고 입력했습니다.

Azure에서 vm을 생성하는 terraform 코드를 작성하십시오.라고 입력했습니다.

azure

그림001

azure

그림002

코드 링크 https://github.com/thanoslee369/chatgpt-terraform-azure/blob/main/gptoriginal001.tf

상단의 코드 링크에 코드는 chatgpt가 준 코드입니다.이 코드는 만약 테라폼을 아신다면 매우 낯익을수 있습니다. https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/virtual_machine 링크에 있는 코드와 유사합니다. 조각조각을 붙여서 만들어온 느낌의 답변입니다.

잘 실행 될까요? 실행이 안됩니다. 그래서 왼쪽 코드는 에러가 나지 않게 고친 코드입니다.

 

azure

그림003

어떻게 고쳤는지 과정을 알아볼까요?

그림003에서 1번 빨간 박스를 보면 버전 부분이 이 너무 예전 버전입니다. 최신버전이 3.43인데 이버전은 너무 낮은 버전입니다. 버전을 삭제 하면 자동으로 디폴트 버전을 사용할수 있습니다. 

2번 빨간박스를 보면 address_prefix 는 주소값을 한개만 받는 예전 코드입니다. address_prefixes로 바꾸고 배열 [] 로 바꿔줍니다. 이건 예전에만 사용되던 코드입니다.

3번 빨간빡스는 dynamic 을 Dynamic으로 변경해줍니다. 

4번 빨간박스는 스토리지 어카운트 이름이므로 URL이 되므로 이미 선점된 이름은 사용할 수 없습니다.그러므로 뒤에 숫자를 붙여서 유니크한 URL을 만들어 줍니다.

azure

그림004

그림004에 1번 빨간 박스는 현재는 사용되지 않는 예전 코드에서만 존재하는 코드입니다. 그래서 주석 처리 했습니다.

2번 빨간 박스는 어떤 부분이  잘못되었을까요? 이름이 다른 이미지라 실행되지 않습니다. 우분투 16.04로 변경해봤습니다.

azure

그림005

다고치면 이렇게 그림005처럼 잘 실행되고 리소스가 만들어 집니다.

다고쳐진 코드 링크 https://github.com/thanoslee369/chatgpt-terraform-azure/blob/main/fixedmain001.tf

 

azure

그림006

Azure portal에서도 잘 만들어집니다. 

지금 실험은 단순히 예제를 실험한 한것입니다. Chatgpt 가 이렇게 허술한 예제만 준다면 사람들이 열광할까요? 예전코드라 실행이 안되며 여러가지 오류도 있습니다. 

자 좀더 심화된 테스트를 해보겠습니다. 

Chatgpt에게 좀더 여러가지 질문을 한번에 해보고 코드를 짜달라고 해보겠습니다.

Can you write a terraform code to create followings

A Virtual network with a cidr block of 18.2.0.0/16 

Regions in korea central

A subnet with cidr block 18.2.0.0/24 with vnet, and no public IP

A nsg that allows incoming traffic on 22(SSH), 80(http), from 18.2.0.0/16

Virtual machine type = Standard DS1 v2 (1 vcpu, 3.5 GiB memory)

Operating system is ubuntu 20.04 LTS 

가상네트워크의 주소는 18.2.0.0/16이고 한국 중부에 서브넷은 18.2.0.0/16 주소이고 퍼브릭 아이피는 없이 만들어 주고 이서브넷의  22번과 80번 포트 열어주고 Standard DS1 v2 로 만들고 우분투 20.04 LTS 를 만드는 코드를 써줘 라고 질문했습니다.

azure

그림007

azure

그림008

azure

그림009

그림007 008 009가 chatgpt의 답변입니다.

답변 코드 링크

https://github.com/thanoslee369/chatgpt-terraform-azure/blob/main/gptoriginal002.tf

이렇게 자세하게 원하는것을 넣었는데도 답변이 나오다니 chatgpt는 놀랍습니다.

잘 실행 될까요? 실행이 안됩니다.

azure

그림010

첫번째 빨간박스에 버전은 2.0이므로 오래된 버전이므로 해당 부분은 삭제 했습니다. 삭제하면 디폴트 버전이 실행됩니다

2번 빨간박스를 보면 address_prefix 는 주소값을 한개만 받는 예전 코드입니다. address_prefixes로 바꾸고 배열 [] 로 바꿔줍니다. 이건 예전에만 사용되던 코드입니다.

azure

그림011

그림011에서 이미지 이름이 다르기 때문에 이를 16.04 버전 이름으로 변경했습니다.

azure

그림012

그림012에서 비밀번호는 다른 비밀번호로 변경했습니다.

Chatgpt가 준 코드에서 오류를 고친 코드 링크

https://github.com/thanoslee369/chatgpt-terraform-azure/blob/main/fixedmain002.tf

azure

그림013

고친 코드를 실행했습니다. 매우 잘 실행이 됩니다

azure

그림014

Azure 포털에서도 리소스가 잘 생성되었습니다.

결론

매우 간단한 테스트이지만 내가 원하는 변수를 코드에 넣어서 코드를 주는 부분이 매우 인상적입니다. 오래된 코드와 현재 코드를 섞어서 만들어 주는 부분도 인상적이며 결과 값이 무조건 실행이 되지는 않는 부분이 약간 아쉽습니다. 그러나 활용도는 매우 높을 수 있습니다. 질문에 따라서 매우 좋은 코드의 결과도 가져올 수 있으며 안되는 코드를 고쳐 주는 부분도 존재합니다. 아직 초기 품질은 약간 오류도 있고 문제도 있으며 단어 하나하나에 따라 결과 값이 좀 다른 부분도 있습니다. 그러나 확실한 건 기존에 없던 파격적 기술이라는 것은 의심이 필요 없습니다. Chatgpt로 인해 직업을 잃거나 일자리가 줄어들 수 있다는 말은 거짓이며 개발자가 코딩에서 많은 부분을 도움을 받을 수 있다 라고 표현하면 정확합니다.구글 서칭도 처음부터 완벽하진 않았습니다. 점점 발전해 나가는 부분은 기대할 만 합니다. 테라폼 모듈을 만드는 부분을 해볼 예정이며 결과가 궁금합니다. 쓰는 사람이 아주 코딩을 할 줄 모르면 디버깅이 안되기 때문에 어려울 수 있지만 테라폼을 중급만 되어도 쉽게 chatgpt를 응용 할 수 있을 듯 합니다.