-
[T102 3주차] (2) 테라폼 프로바이더(Provider)카테고리 없음 2023. 7. 22. 14:37
cloudNet@ 팀의 가시다 님이 진행하는 테라폼 102 스터디 3주차 정리입니다.
테라폼 동작의 원리
출처:https://malwareanalysis.tistory.com/619
테라폼 동작 순서 테라폼은 코드를 읽어 코드가 실행가능한지 분석(terraform plan)=>
그 후, 대상에서 지원하는 API를 사용하여 코드를 대상에 반영(terraform apply)테라폼 동작 원리 테라폼 내부(아키텍처)는 테라폼 공식문서에서 설명합니다. 테라폼은 코어와 플러그인으로 구성되어 있습니다.
① 코어는 테라폼 코드를 읽어 코드 문법검사와 실행 순서를 결정합니다. 실행 순서 형태를 리소스 종속성 그래프(resource dependency graph)라고 부릅니다.
② 코어는 테라폼 코드 실행을 플러그인에게 요청합니다.
③ 플러그인은 provider 설정을 읽어 적절한 API를 호출합니다. API호출 로직은 client library에 구현합니다.
● 테라폼 프로바이더란?(Proveider)
출처:https://docmoa.github.io/04-HashiCorp/03-Terraform/01-Information/00-introduction.html
프로바이더는 테라폼 코어와 연동되는 플러그인으로, 각 플랫폼에서 제공하거나 누구나 개발해서 테라폼과 연결할 수 있습니다. 이런 플러그인들을 프로바이더라고 부릅니다.
- AWS/Azure/GCP 같은 퍼블릭 IaaS 클라우드 환경 프로바이더
- 오픈스텍, VMware 같은 프라이빗 IaaS나 VM환경 프로바이더
- Heroku, 쿠버네티스, 람다같은 PaaS 프로바이더
- Datadog, Fastly, Github 같은 SaaS 프로바이더
프로바이더는 필요에 따라 인프라, 플랫폼, 서비스를 연계해서 사용하게도 가능합니다. 예를들어 앞서 인프라를 수행했다고 보고, Day2 에 쿠버네티스 연결이 필요하면 기존 설정을 확장해서 추가 리소스와 자원을 구성합니다. 그리고 그 위에 서비스가 DNS를 요구하거나 CDN을 요구하면 이런 서비스를 추가로 애드온 하게 됩니다.
테라폼 문서 (opens new window)에보면 이미 100여개 이상의 프로바이더가 존재하고 커뮤니티의 프로바이더 까지 합치면 테라폼으로 관리가능한 코드기반 자원들은 무궁무진합니다.
● 실습
-main.tf 파일 생성
provider "aws" {
region = "ap-southeast-1"
}
provider "aws" {
alias = "seoul"
region = "ap-northeast-2"
}
resource "aws_instance" "app_server1" {
ami = "ami-06b79cf2aee0d5c92"
instance_type = "t2.micro"
}
resource "aws_instance" "app_server2" {
provider = aws.seoul
ami = "ami-0ea4d4b8dc1e46212"
instance_type = "t2.micro"
}-실행
$terraform init && terraform plan
# 실행 성공 후 AWS EC2 인스턴스가 생성됨
$terraform apply -auto-approve
#
$terraform state listAWS 인스턴스 2개가 생성됨
$echo "aws_instance.app_server1.public_ip" | terraform console첫번째 인스턴스의 IP
$echo "aws_instance.app_server2.public_ip" | terraform console두번째 인스턴스의 IP
$aws ec2 describe-instances --filters Name=instance-state-name,Values=running --output table인스턴스 1 싱가포르 리전에 생성됨을 확인할 수 있음
$aws ec2 describe-instances --filters Name=instance-state-name,Values=running --output table --region ap-southeast-1인스턴스 2 서울 리전에 생성됨을 확인할 수 있음
# 삭제
$terraform destroy -auto-approve