HashiCorp Terraform Associate 003 개념
일단 Terraform 이란?
인프라를 코드로 관리하는 툴
인프라를 코드로 관리하는 방식은 조직 내 협업에 큰 도움이 된다. 이 방식은 인프라를 개선하고, 빠르게 확장하며, 애플리케이션 개발 프로세스를 효율적으로 만드는 데 기여한다.
기존에는 각기 다른 도구에 로그인하여 수동으로 작업을 처리했지만, 이제는 Terraform을 통해 인프라를 코드로 정의하고 관리할 수 있다. 코드로 관리하면 인프라 변경 사항을 버전 관리하고, 저장소에 체크인하여 관리할 수 있다. 또한 코드로 정의된 인프라는 실시간으로 문서화되어 어떤 리소스가 어떻게 배포되었는지 쉽게 확인할 수 있다.
이점
수동 단계를 코드화하면 클라우드 기반 서비스의 자동화가 가능하다. 이를 통해 조직은 인프라를 빠르게 확장하고, 애플리케이션 배포를 자동화할 수 있다. 개발자나 운영팀은 수동 작업 없이 효율적으로 작업을 진행할 수 있다.
인프라 관리 도구
인프라를 코드로 관리하는 도구는 다양하다. Terraform은 멀티 클라우드 환경에서 인프라를 배포하고 관리할 수 있는 강력한 도구다. AWS, Azure, GCP 등 다양한 클라우드 플랫폼에서 Terraform을 사용해 인프라를 자동으로 배포하고 관리할 수 있다.
그 외에도 CloudFormation (AWS), Azure Resource Manager (ARM), Google Cloud Deployment Manager 등의 도구들이 있지만, Terraform은 다양한 클라우드 환경을 처리할 수 있어 범용성이 높다.
구성 관리 도구
인프라를 배포한 후, 구체적인 환경 설정을 자동화하는 도구에는 SaltStack, Ansible, Puppet 등이 있다. 이들 도구는 인프라 설정을 자동으로 처리하며, Terraform과는 다른 역할을 한다. Terraform은 인프라를 구축하는 데 중점을 두고, SaltStack, Ansible, Puppet은 구축된 인프라의 설정 및 관리를 자동화하는 데 사용된다.
Terraform은 AWS뿐만 아니라 Azure, GCP 같은 여러 클라우드 서비스도 쉽게 관리할 수 있게 도와주는 자동화 도구임.
보통 AWS에서 서버나 네트워크를 설정하려면 콘솔에서 클릭을 많이 해야 하는데, Terraform을 사용하면 코드 몇 줄만 작성하면 한 번에 배포할 수 있다.
또한, 코드로 관리되니까 똑같은 환경을 여러 번 만들거나, 변경 이력을 추적하는 것도 가능해.
쉽게 말해서, 클라우드를 더 편하게 쓰게 해주는 프로그래밍 도구라고 보면 된다.
실습방법
1. Terraform 과 VSCode 를 다운받아서 설치한다.
2. AWS에서 user 계정을 만든후 VPC( 가상 사설 클라우드, Virtual Private Cloud )정책을 부여한다.
** VPC는 네트워크 리소스 네트워크 공간을 의미하는데 그안에 EC2(서버), RDS(데이터베이스) 같은 리소스를 추가할 수 있다.
** VPC안에 구역을 나눌 수 있는데 퍼블릭(인터넷 사용가능)과 프라이빗 서브넷(인터넷 사용불가능)으로 나눌 수 있다.
퍼블릭 서브넷은 게이트웨이를 통해 인터넷을 사용할 수 있고 프라이빗 서브넷은 인터넷을 사용하고 싶으면 nat 게이트웨이를 통해 사용할 수 있다.
예를 들어, **EC2의 사설 IP (192.168.x.x)**를 **NAT의 공인 IP (203.x.x.x)**로 바꿔서 외부와 소통하게 된다.
그리고 EC2 서버가 인터넷에 접속할 때, NAT가 대신 나가서 인터넷에 요청을 보내고, 응답을 받아서 다시 EC2로 전달하는 역할을 한다.
IAM 사용자에게 VPC 관련 권한( VPC 생성, 서브넷 만들기, 라우팅 테이블 설정 등 )을 주면, 그 사용자는 VPC 설정을 자유롭게 할 수 있다.
3. 그 자격 증명을 터미널에 추가한다.




























