Ssoon
Chapter (04) 프로바이더 본문
CloudNet@ 가시다님이 진행하는 Terraform 101 Study 2기
"테라폼으로 시작하는 IaC" (한빛미디어) 도서로 진행!
✅ 프로바이더 구성
- 프로바이더
- 테라폼이 대상과의 상호작용을 할 수 있도록 하는 것
- 플러그인 형태로 테라폼이 결합되어 대상이 되는 클라우드, SaaS, 기타 서비스 API를 사용해 동작을 수행
- 각 프로바이더는 테라폼이 관리하는 리소스 유형과 데이터 소스를 사용할 수 있도록 연결
- 테라폼 실행 파일과는 별도로 자체 관리되고 게시
https://registry.terraform.io/
🧿 로컬 이름과 프로바이더 지정
- required_providers 블록 내에 <로컬 이름> = { } 으로 정의
- 동일한 http 접두사를 사용하는 다수의 프로바이더 사용 정의
terraform {
required_providers {
architect-http = {
source = "architect-team/http"
version = "~> 3.0"
}
http = {
source = "hashicorp/http"
}
aws-http = {
source = "terraform-aws-modules/http"
}
}
}
🧿 단일 프로바이더의 다중 정의
- 동일한 프로바이더를 사용하지만 다른 조건을 갖는 경우 ---> alias를 명시하고 사용하는 리소스와 데이터 소스에서는 provider 메타인수를 사용해 특정 프로바이더를 지정 -> provider 메타인수에 지정되지 않은 경우 alias가 없는 프로바이더가 기본 프로바이더로 동작
provider "aws" {
region = "us-west-1"
}
provider "aws" {
alias = "seoul"
redion = "ap-northeast-2"
resource "aws_instance" "app_server" {
provider = aws.seoul
ami = "subnet-03160a0de2f38a33e"
instance_type = "t2.micro"
}
🧿 프로바이더 요구사항 정의
- terraform 블록의 required_providers 블록에 여러 개를 정의할 수 있습니다.
- source : 프로바이더 다운로드 경로 지정
- version : 버전 제약을 명시
- 호스트 주소 : 프로바이더를 배포하는 주소
- 네임스페이스 : 지정된 레지스트리 내에서 구분하는 네임스페이스
- 유형 : 프로바이더에서 관리되는 플랫폼이나 서비스 이름
terraform {
required_providers {
<프로바이더 로컬 이름> = {
source = [<호스트 주소>/]<네임스페이스>/<유형>
version = <버전 제약>
}
🧿 프로바이더 설치
- terraform init
- 정의된 프로바이거를 다운로드, 복사, 캐시에서 읽어옵니다.
✅ 프로바이더 에코시스템
- Terraform 에코시스템을 통해 사용자는 다양한 사용 사례 및 환경에 Terraform을 적용할 수 있습니다
✅ 프로바이더 경험하기
- IAM > Users > Add users 에서 user를 생성합니다.
- 해당 user에 권한을 부여합니다.
- access_key 와 secret-access-key를 생성합니다
- main.tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
required_version = ">= 1.0"
}
provider "aws" {
region = "ap-northeast-2"
access_key = "AKIATU4765ECBYZ3ZET7"
secret_key = "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"
}
data "aws_ami" "amzn2" {
most_recent = true
owners = ["amazon"]
filter {
name = "owner-alias"
values = ["amazon"]
}
filter {
name = "name"
values = ["amzn2-ami-hvm*"]
}
}
resource "aws_instance" "app_server" {
ami = data.aws_ami.amzn2.id
instance_type = "t2.micro"
}
- terraform init / terraform apply 를 실행한 후 생성된 리소스를 확인합니다.
🧿 자격증명 정보를 환경 변수에 넣어 실행
access_key = "AKIAxxxxxxxxxxxx"
secret_key = "fzdmHfAjwflGxxxxxxxxxxxxxxxxxxxxxxxxxx"
를 제거합니다.
provider "aws" {
region = "ap-northeast-2"
}
'Terraform 101 Study 2기' 카테고리의 다른 글
Chapter (05) State - 워크스페이스 (0) | 2023.07.19 |
---|---|
Chapter (05) State - 목적/의미/동기화 (0) | 2023.07.19 |
Chapter (03) 기본 사용법 - HCL - 조건식 / 함수 / 프로비저너 (0) | 2023.07.10 |
Chapter (03) 기본 사용법 - HCL - 반복문 (0) | 2023.07.10 |
Chapter (03) 기본 사용법 - HCL - Local / Output (0) | 2023.07.10 |
Comments