cloudNet@ 팀의 가시다 님이 진행하는 테라폼 102 스터디 3주차 정리입니다.
3주차 내용:
테라폼 프로바이더
- 프로바이더란?
- vsphere 프로바이더 사용법
- vsphere 자격증명 설정
- os golden image 생성 *매우 중요*
- vmware template 사용하여 vm 배포
1. 프로바이더?
- 테라폼은 terraform 바이너리 파일을 시작으로 로컬 환경에나 배포 서버와 같은 원격 환경에서 원하는 대상을 호출하는 방식으로 실행된다.
- 이때 ‘원하는 대상’은 호출하는 방식이 서로 다르지만 대상의 공급자, 즉 프로바이더가 제공하는 API를 호출해 상호작용을 한다. 여기서 테라폼이 대상과의 상호작용을 할 수 있도록 하는 것이 ‘프로바이더’다.
- 즉, AWS에 원하는 리소스를 생성 하려 할때 상호작용 하는 프로바이더는 AWS 이고
- VMware에 원하는 리소스를 생성 하려 할때 상호작용 하는 프로바이더는 Vsphere 이다.
- 각 프로바이더의 API구현은 서로 다르지만 테라폼의 고유 문법으로 동일한 동작을 수행하도록 구현되어 있다.
- 프로바이더는 플러그인 형태로 테라폼에 결합되어 대상이 되는 클라우드, SaaS, 기타 서비스의 자체 API를 사용해 동작을 수행한다.
- 각 프로바이더는 테라폼이 관리하는 리소스 유형과 데이터 소스를 사용할 수 있도록 연결한다.
- 즉, 테라폼은 프로바이더 없이는 어떤 종류의 인프라와 서비스도 관리할 수 없다는 의미다. 대부분의 프로바이더는 대상 인프라 환경이나 서비스 환경에 대한 리소스를 관리하므로, 프로바이더를 구성할 때는 대상과의 연결과 인증에 필요한 정보가 제공되어야 한다.
- 테라폼 레지스트리 사이트에서 주요 프로바이더와 관련 문서를 확인 가능
2. vsphere 프로바이더 사용방법
- 테라폼 레지스트리를 확인해보면 Official 프로바이더로 하시코프가 직접 관리하고 있는 프로바이더를 사용할수 있다.
- 사용해보자. main.tf를 만든다.
terraform {
required_providers {
vsphere = {
source = "hashicorp/vsphere"
version = "2.4.1"
}
}
}
provider "vsphere" {
# Configuration options
}
- 테라폼 init을 하면 provider-vsphere가 생성이 된다.
- # terraform init 명령어로 테라폼을 시작하기 위한 준비를 진행합니다.
- # (backend 구성 초기화, 플러그인 설치 등)
- # backend로 지정된 구성 설정을 초기화합니다.
- # `.terraform` 폴더가 생성되며 관련한 플러그인을 가져옵니다.
- # Provider를 기록하기 위해 암호화된 `.terraform.lock.hcl` 파일을 생성합니다.
3. vsphere 자격증명 설정
- vCenter의 접속정보를 입력합니다.
- vCenter의 DNS를 입력합니다.
provider "vsphere" {
user = "administrator@vsphere.local"
password = "Matilda00!"
vsphere_server = "vcsa01.matilda-mzc.com"
allow_unverified_ssl = true
}
4. data 블록을 통한 resource 선언
- VMware는 물리적인 리소스 분류 기준이 아닌 논리적인 리소스 분류 기준을 가지고 있습니다.
- 데이터센터 > 클러스터 > 호스트 > 가상머신 형태로 리소스를 분류 합니다.
- 스토리지, 네트워크 , 컴퓨팅 역시 정의 해야합니다. ( data 블록으로 정의 하여 사용합니다. )
- 마지막으로 template을 정의하여 사용합니다.
템플릿은 표준 이미지(골든 이미지) 생성을 위해 사용자가 OS 설치 이후 접속하여 패키지, 파일, 설정 들을 수행 후
IP 또는 네트워크 어뎁터를 제거한 후 해당 VM을 템플릿으로 전환할수 있습니다.
- Packer와 같은 이미지 Metadata에 대한 Registry를 사용하셔도 됩니다.
data "vsphere_datacenter" "datacenter" {
name = "MATILDA DC"
}
data "vsphere_compute_cluster" "cluster" {
name = "MATILDA ZONE"
datacenter_id = data.vsphere_datacenter.datacenter.id
}
data "vsphere_datastore" "datastore" {
name = "Datastore-DATA"
datacenter_id = data.vsphere_datacenter.datacenter.id
}
data "vsphere_network" "network" {
name = "서비스 네트워크 #5"
datacenter_id = data.vsphere_datacenter.datacenter.id
}
data "vsphere_virtual_machine" "template" {
name = "vra-ubuntu20.04_02"
datacenter_id = data.vsphere_datacenter.datacenter.id
}
- 현재 제 vSphere 환경에서 사용 가능한 리소스들을 naming을 기반으로 입력하여 선언할수 있습니다.
5. OS 설치 및 Golden 이미지 만들기
https://themapisto.tistory.com/116
6. vm 배포
- resource_pool은 클러스터를 선언하면 자동으로 사용가능 합니다.
- 데이터 스토어와 네트워크는 선언된 스토리지와 네트워크를 사용 합니다. ( 참고로 아래에 ip 대역은 해당 네트워크의 대역에서 ping 쏴보고 확인 해보고 ip가 충돌되지 않게 잘 설정해주셔야 합니다 )
- firmware는 "bios로 설정하면" 에러가 발생 - UEFI 모드로 설정
- UEFI 모드는 최신 PC용의 표준 펌웨어 인터페이스로 PC 기술이 진보함에 따른 온도와 전력 모니터링, 원격 보안 관리, 가상화, 새로운 디스크 관리 형식, 2TB 이상의 디스크 지원 등 여러 기능이 추가되어 기존의 BIOS 및 EFI를 대체하는 새로운 유틸리티이다.
resource "vsphere_virtual_machine" "vm" {
name = "koo-terraform-vsphere"
resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
datastore_id = data.vsphere_datastore.datastore.id
num_cpus = 2
memory = 2048
guest_id = "ubuntu64Guest"
firmware = "efi"
network_interface {
network_id = data.vsphere_network.network.id
}
disk {
label = "disk"
size = 50
}
clone {
template_uuid = data.vsphere_virtual_machine.template.id
customize {
linux_options {
host_name = "hello-world"
domain = "example.com"
}
network_interface {
ipv4_address = "10.20.4.165"
ipv4_netmask = 24
}
ipv4_gateway = "10.20.4.1"
}
}
}
- 가상머신 배포!
- 확인
- IP 세팅이 잘되었는지 확인해보자
Clear!
'DevOps > Terraform' 카테고리의 다른 글
[T102 4주차] (13) 테라폼 모듈(1) (0) | 2023.07.24 |
---|---|
[T102 4주차] (12) 테라폼 워크스페이스 (0) | 2023.07.24 |
[T102 3주차] (9) 테라폼 도전과제 (0) | 2023.07.17 |
[T102 3주차] (8) 테라폼 기본사용법(3) (0) | 2023.07.17 |
[T102 4주차] (11) 테라폼 상태 관리 및 격리 방안 (0) | 2023.07.13 |