반응형
개요
- 무료버전인 Esxi만을 사용하는 경우 라이선스에 의해 외부 API 사용이 금지 된다.
- 이때 ssh를 통해 직접 vmx 파일을 생성, 등록하고, vmdk format 등을 통해 VM을 생성할 수 있다.
라이선스에 의한 오류 확인
- ansible을 이용하여 ESXi에 직접 작업을 수행 할 경우
- 'Current license or ESXi version prohibits execution of the requested operation.' 문구로 fail이 발생한다.
> ansible-playbook -i ../hosts 08.vmware.yml
PLAY [all] **************************************************************************************************************************************************************
TASK [Run command inside a vm] ******************************************************************************************************************************************
...
msg = 'Current license or ESXi version prohibits execution of the requested operation.',\n faultCause = <unset>,\n faultMessage = (vmodl.LocalizableMessage) []\n}"}
PLAY RECAP **************************************************************************************************************************************************************
: ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
스크립트를 통한 VM 생성
- 다운로드
git clone https://github.com/josenk/esxi-vm-create.git
- 모듈설치
- paramiko : ssh 모듈
yum install python-paramiko
- VM 생성
- VMware ESXi 6.7 사용
- guest OS : vmware doc 참조
- Microsoft Windows Server 2012(64비트) : windows8srv-64
- Microsoft Windows Server 2016(64비트) : windows9srv-64
- CentOS 7(64비트) : centos7-64
esxi-vm-create -H <Esxi ip> -U <Esxi ssh user> -n <vm name> -c <cpu 개수> -m <memory, GB> -v <volume, GB> --iso <마운트 iso> -N <연결할 네트워크> -g <guest OS>
- VM 삭제
esxi-vm-destroy -H <ESXi ip> -U root -P <password> -n <VM name>
스크립트 수정
ESXi 버전 변경
- VM 생성 시 호환성에 표기되는 esxi 버전이 기본 "VM 버전 8" 이 적용되는데 ESXi 6.7의 경우 "VM 버전 14"
vim esxi-vm-create
...
VMX.append('virtualHW.version = "8"') -> VMX.append('virtualHW.version = "14"')
CPU Vaildate 수정
- 무료버전인 ESXi는 최대 CPU Core 8개를 지원하므로 수정
vim esxi-vm-create
...
# Check CPU
if CPU < 1 or CPU > 128:
print str(CPU) + " CPU out of range. [1-128]."
ErrorMessages += " " + str(CPU) + " CPU out of range. [1-128]."
CheckHasErrors = True
...
# 변경
# Check CPU
if CPU < 1 or CPU > 8:
print str(CPU) + " CPU out of range. [1-8]."
ErrorMessages += " " + str(CPU) + " CPU out of range. [1-8]."
CheckHasErrors = True
default 값 변경
- esxi_vm_functions.py 의 setup_config() 함수
- 최초 실행시만 적용
vim esxi_vm_functions.py
def setup_config():
#
# System wide defaults
#
ConfigData = dict(
# Your logfile
LOG= os.path.expanduser("~") + "/esxi-vm.log",
# Enable/Disable dryrun by default
isDryRun=False,
# Enable/Disable Verbose output by default
isVerbose=False,
# Enable/Disable exit summary by default
isSummary=False,
# ESXi host/IP, root login & password
HOST="esxi",
USER="root",
PASSWORD="",
# Default number of vCPU's, GB Mem, & GB boot disk
CPU=2,
MEM=4,
HDISK=20,
# Default Disk format thin, zeroedthick, eagerzeroedthick
DISKFORMAT="thin",
# Virtual Disk device type
VIRTDEV="pvscsi",
# Specify default Disk store to "LeastUsed"
STORE="LeastUsed",
# Default Network Interface (vswitch)
NET="None",
# Default ISO
ISO="None",
# Default GuestOS type. (See VMware documentation for all available options)
GUESTOS="centos-64",
# Extra VMX options
VMXOPTS=""
)
- "-u" 옵션을 지정하지 않으면 default 값은 계정 홈디렉토리에 히든파일로(.esxi-vm.yml)로 생성 됨
- 이 후 VM 생성 시에 히든 파일을 참조 하게 되므로 default 값 변경을 원할 경우 히든파일을 수정하면 됨
parser.add_argument("-u", "--updateDefaults", dest='UPDATE', action='store_true', help="Update Default VM settings stored in ~/.esxi-vm.yml")
Disk Provisioning
- default diskformat는 "thin" 프로비저닝 방식이며 "thick" 방식으로 변경할 경우 "zeroedthick", "eagerzeroedthick" 두가지 방식으로 변경 가능함.
- zeroedthick의 경우 Lazy zeroed disk 방식으로 느리게 비워지며, eagerzeroedthick의 경우 Eager zeroed disk 방식으로 빠르게 비워진다.
- 참조 : https://ploz.tistory.com/entry/VMware-ESXi-thin-thick-provisioning
- 문제 발생 : 스크립트를 통해 "eagerzeroedthick" 방식으로 생성한 경우 vmkfstool 진행이 느린 탓인지 온전히 formatting 이 되지 않는 문제가 발생함.
- 수동으로 vmx -> vmdk -> vm register 으로 VM을 생성한경우 이상없음.
vSCSI Controller
- 참조 : https://ploz.tistory.com/entry/VMware-ESXi-vSCSI-Controller
- 스크립트 상에 기본적으로 "pvscsi" 방식으로 vmx 파일을 생성하게 됨
- 윈도우(win 2k12)의 경우 pvscsi 방식인 경우 드라이버 로드가 안되어 설치가 진행되지 않음.
- 따라서 LSI Logic SAS 방식인 "lsisas1068" 으로 변경하여 진행하는 것이 좋음.
- 단 IOPS가 높은 서비스의 경우 pvscsi가 성능상의 우위가 있음.
> vim esxi-vm-create
...
# Create the VM
#
VMX = []
...
VMX.append('scsi0.virtualDev = "pvscsi"')
...
# 변경
VMX.append('scsi0.virtualDev = "lsisas1068"')
- 리눅스의 경우는 "pvscsi" 사용.
Ethernet Adapter
- 스크립트 상에 기본적으로 "vmxnet3" 드라이버가 올라감.
- 윈도우(win 2k12)의 경우 "vmxnet3" 드라이버가 없어 잡히지 않는 경우가 있음.
- 따라서 윈도우는 "e1000e" 드라이버를 사용하면 별도의 드라이버로드 없이 설치후 사용이 가능함
> vim esxi-vm-create
# Create the VM
#
VMX = []
...
if NET != "None":
VMX.append('ethernet0.virtualDev = "vmxnet3"')
...
# 변경
VMX.append('ethernet0.virtualDev = "e1000e"')
- vmxnet3 드라이버 사용을 위해서는 "VMware tools" 설치를 통해 사용 가능함.
- vmxnet3은 e1000e 보다 약 2배 가량의 성능상의 이점이 있음.
[VMware ESXi] ssh를 통한 VM 생성, 삭제 하기(2) 에서 VMware ESXi 6.7 버전에 맞게 스크립트를 수정.
반응형
'가상화 > VMware Esxi' 카테고리의 다른 글
[VMware ESXi] CLI 에서 작업 취소하기 (task cancel ) (0) | 2022.05.23 |
---|---|
[VMware ESXi] ovftool로 vm export 하기 (0) | 2022.05.23 |
[VMware ESXi] ssh public key 사용하기 (0) | 2022.05.20 |
[VMware ESXi] Invalid VM (상태 잘못됨) 삭제 (0) | 2022.05.20 |
[VMware ESXi] vim-cmd (0) | 2022.05.20 |