11.2. 가상 머신 템플릿 생성
올바르게 작동하는 여러 VM(가상 머신) 복제를 생성하려면 SSH 키 또는 영구 네트워크 MAC 구성과 같은 소스 VM에 고유한 정보 및 구성을 제거할 수 있습니다. 이렇게 하면 VM 복제를 쉽고 안전하게 생성하는 데 사용할 수 있는 VM 템플릿이 생성됩니다.
virt-sysprep
유틸리티를 사용하여 VM 템플릿을 생성하거나 요구 사항에 따라 수동으로 생성할 수 있습니다.
11.2.1. virt-sysprep을 사용하여 가상 머신 템플릿 생성
기존 VM(가상 머신)에서 복제 템플릿을 생성하려면 virt-sysprep
유틸리티를 사용할 수 있습니다. 이렇게 하면 특정 네트워크 설정 또는 시스템 등록 메타데이터와 같이 복제본이 잘못 작동할 수 있는 특정 구성이 제거됩니다. 결과적으로 virt-sysprep
을 사용하면 VM의 클론을 보다 효율적으로 생성하고 복제본이 더 안정적으로 작동합니다.
사전 요구 사항
virt-sysprep
유틸리티가 포함된guestfs-tools
패키지가 호스트에 설치되어 있습니다.# dnf install guestfs-tools
- 템플릿으로 설계된 소스 VM이 종료됩니다.
소스 VM의 디스크 이미지가 어디에 있는지 알고 VM의 디스크 이미지 파일의 소유자입니다.
libvirt의 시스템 연결에 생성된 VM의 디스크 이미지는
/var/lib/libvirt/images
디렉터리에 있으며 기본적으로 root 사용자가 소유합니다.# ls -la /var/lib/libvirt/images -rw-------. 1 root root 9665380352 Jul 23 14:50 a-really-important-vm.qcow2 -rw-------. 1 root root 8591507456 Jul 26 2017 an-actual-vm-that-i-use.qcow2 -rw-------. 1 root root 8591507456 Jul 26 2017 totally-not-a-fake-vm.qcow2 -rw-------. 1 root root 10739318784 Sep 20 17:57 another-vm-example.qcow2
- 선택 사항: 소스 VM 디스크의 중요한 데이터가 백업되었습니다. 소스 VM을 그대로 유지하려면 먼저 복제 한 후 복제본을 템플릿으로 전환합니다.
프로세스
VM의 디스크 이미지의 소유자로 로그인했는지 확인합니다.
# whoami root
선택 사항: VM의 디스크 이미지를 복사합니다.
# cp /var/lib/libvirt/images/a-really-important-vm.qcow2 /var/lib/libvirt/images/a-really-important-vm-original.qcow2
나중에 VM이 템플릿으로 변환되었는지 확인하는 데 사용됩니다.
다음 명령을 사용하고 /var/lib/libvirt/images/a-really-important-vm.qcow2 를 소스 VM의 디스크 이미지 경로로 바꿉니다.
# virt-sysprep -a /var/lib/libvirt/images/a-really-important-vm.qcow2 [ 0.0] Examining the guest ... [ 7.3] Performing "abrt-data" ... [ 7.3] Performing "backup-files" ... [ 9.6] Performing "bash-history" ... [ 9.6] Performing "blkid-tab" ... [...]
검증
프로세스가 성공했는지 확인하려면 수정된 디스크 이미지를 원본 이미지와 비교합니다. 다음 예제에서는 템플릿을 성공적으로 생성하는 방법을 보여줍니다.
# virt-diff -a /var/lib/libvirt/images/a-really-important-vm-orig.qcow2 -A /var/lib/libvirt/images/a-really-important-vm.qcow2 - - 0644 1001 /etc/group- - - 0000 797 /etc/gshadow- = - 0444 33 /etc/machine-id [...] - - 0600 409 /home/username/.bash_history - d 0700 6 /home/username/.ssh - - 0600 868 /root/.bash_history [...]
추가 리소스
-
virt-sysprep
도움말 페이지의 OPERATIONS 섹션 - 명령줄 인터페이스를 사용하여 가상 머신 복제
11.2.2. 수동으로 가상 머신 템플릿 생성
기존 VM(가상 머신)에서 템플릿을 생성하려면 게스트 VM을 수동으로 재설정하거나 구성 해제하여 복제를 준비할 수 있습니다.
사전 요구 사항
소스 VM의 디스크 이미지 위치를 알고 VM의 디스크 이미지 파일 소유자인지 확인합니다.
libvirt의 시스템 연결에 생성된 VM의 디스크 이미지는 기본적으로
/var/lib/libvirt/images
디렉터리에 있으며 root 사용자가 소유합니다.# ls -la /var/lib/libvirt/images -rw-------. 1 root root 9665380352 Jul 23 14:50 a-really-important-vm.qcow2 -rw-------. 1 root root 8591507456 Jul 26 2017 an-actual-vm-that-i-use.qcow2 -rw-------. 1 root root 8591507456 Jul 26 2017 totally-not-a-fake-vm.qcow2 -rw-------. 1 root root 10739318784 Sep 20 17:57 another-vm-example.qcow2
- VM이 종료되었는지 확인합니다.
- 선택 사항: VM 디스크의 중요한 데이터가 백업됩니다. 소스 VM을 그대로 유지하려면 먼저 복제 한 후 복제본을 편집하여 템플릿을 생성합니다.
프로세스
복제를 위해 VM을 구성합니다.
- 복제본에 필요한 소프트웨어를 설치합니다.
- 운영 체제에 대해 고유하지 않은 설정을 구성합니다.
- 고유하지 않은 애플리케이션 설정을 구성합니다.
네트워크 구성을 제거합니다.
다음 명령을 사용하여 영구 udev 규칙을 제거합니다.
# rm -f /etc/udev/rules.d/70-persistent-net.rules
참고udev 규칙이 제거되지 않으면 첫 번째 NIC의 이름이
eth0
대신eth1
일 수 있습니다./etc/NetworkManager/system-connections/
디렉터리의NMConnection
파일에서 고유한 정보를 제거합니다.MAC 주소, IP 주소, DNS, 게이트웨이 및 기타 고유 정보 또는 원하지 않는 설정을 제거합니다.
*ID=ExampleNetwork BOOTPROTO="dhcp" HWADDR="AA:BB:CC:DD:EE:FF" <- REMOVE NM_CONTROLLED="yes" ONBOOT="yes" TYPE="Ethernet" UUID="954bd22c-f96c-4b59-9445-b39dd86ac8ab" <- REMOVE
-
/etc/hosts
및/etc/resolv.conf
파일에서 유사한 고유 정보 및 원하지 않는 설정을 제거합니다.
등록 세부 정보 삭제:
RHN(Red Hat Network)에 등록된 VM의 경우:
# rm /etc/sysconfig/rhn/systemid
RHSM(Red Hat Subscription Manager)에 등록된 VM의 경우:
원래 VM을 사용하지 않으려면 다음을 수행합니다.
# subscription-manager unsubscribe --all # subscription-manager unregister # subscription-manager clean
원래 VM을 사용하려는 경우:
# subscription-manager clean
참고원래 RHSM 프로필은 ID 코드와 함께 포털에 남아 있습니다. 복제 후 VM에서 RHSM 등록을 다시 활성화하려면 다음 명령을 사용합니다.
# subscription-manager register --consumerid=71rd64fx-6216-4409-bf3a-e4b7c7bd8ac9
다른 고유한 세부 정보 제거:
SSH 공개 및 개인 키 쌍을 제거합니다.
# rm -rf /etc/ssh/ssh_host_example
LVM 장치의 구성을 제거합니다.
# rm /etc/lvm/devices/system.devices
- 여러 시스템에서 실행되는 경우 충돌이 발생할 수 있는 기타 애플리케이션별 식별자 또는 구성을 제거합니다.
gnome-initial-setup-done
파일을 제거하여 다음 부팅 시 구성 마법사를 실행하도록 VM을 구성합니다.# rm ~/.config/gnome-initial-setup-done
참고다음 부팅 시 실행되는 마법사는 VM에서 제거된 구성에 따라 다릅니다. 또한 복제본을 처음 부팅할 때는 호스트 이름을 변경하는 것이 좋습니다.