provider은 upstream API의 논리적 추상화이다. Providers는 API의 상호작용을 이해하고, resources를 노출시킨다. 즉, Providers는 resources를 다른 플랫폼이나 클라우드 provider에 만드는 작업을 도와주는 역할이다.

AWS, Azure, Kubernetes 등 약 3000개의 다양한 플랫폼들이 있다.

AWS를 Provider로 사용해서 ec2 인스턴스를 만들어보자
설정한 경로에 테라폼 파일을 만들것이다.
파일을 만들기전에 테라폼 configuration은 어떤 provider를 사용할 것인지 결정하고 사용하기 위해 설치한다음에 resource를 만들어야한다.
먼저 aws configure은 기본적으로 설정되어 있어야한다.
aws provider로 들어가서 코드를 이용해, Provider을 사용할수있게 configuration해준다.

최신 버전을 사용할 것이기 때문에 2개의 블록중에 밑에 있는 블록만 사용해도 상관없다.
terraform init: 작업 디렉토리를 초기화 하고 필요한 provider의 플러그인과 모듈들을 다운받음. 그리고 나의 인프라 구조를 저장할 백앤드를 세팅해줌
terraform plan: 테라폼 configuration 파일에 정의된 원하는 상태를 만들기 위해서 필요한 행동들을 정해주면서 모의테스트를 해줌.
terraform apply: configuration에 원하는 상태를 만들기위해 필요한 변화들을 적용해줌. 이를통해 인프라 자원을 필요한만큼 creating, modifying, or deleting 할 수 있음. “-auto-approve” 옵션을 사용하여 사용자 진행 여부 확인 부분을 스킵 할 수 있다.
terraform init

이제 프로바이더에서 만들고 싶은 resource를 작성

resource "aws_instance" "web" {
ami = "내 aws의 ec2 AMI ID"
instance_type = "t2.micro"
tags = {
Name = "HelloWorld"
}
}
terraform plan

tarraform apply


정상적으로 instance가 생성되었다. 이번에는 github를 provider로 사용해서 resources를 생성해보자.
github -> setting -> developer settings-> generate new token



토큰 복사하기.
main.tf
provider "github" {
token = "새로 만든 토큰"
}
terraform init

이제 github계정에서 만들고 싶은 repository를 코드에 추가해보자.
resource "github_repository" "example" {
name = "luckyPrice_github_repository"
description = "This repository is created using Terraform"
visibility = "public"
}
terraform plan -> terraform apply


내 깃허브 계정에 반금 내가 코드에 적은 resoureces가 생겼다
이처럼 Provider와 Provider안에 있는 resources를 통해 Terraform은 코드로 수많은 인프라 구조들을 통제할 수 있다는것을 알게되었다.