이 시나리오 예에서는 3.5절. “새 가상 머신 만들기”에서 만든 Oracle Linux 가상 머신을 봉인한 다음 해당 가상 머신을 기반으로 Oracle Linux 템플리트를 만듭니다. 그런 다음 해당 템플리트를 Cloud-Init 사용 템플리트에 대한 기준으로 사용하여 가상 머신의 초기 설정을 자동화할 수 있습니다.
템플리트는 나중에 유사한 가상 머신을 반복적으로 만드는 과정을 간소화하는 데 사용할 수 있는 가상 머신의 복사본입니다. 템플리트는 소프트웨어 구성, 하드웨어 구성 및 템플리트의 기반인 가상 머신(소스 가상 머신이라고 함)에 설치된 소프트웨어를 캡처합니다.
템플리트를 기반으로 만들어진 가상 머신은 원래 가상 머신과 동일한 NIC 유형과 드라이버를 사용하지만 별도의 고유 MAC 주소가 지정됩니다.
봉인은 특정 가상 머신을 기반으로 템플리트를 만들기 전에 해당 가상 머신에서 시스템 관련 세부정보를 모두 제거하는 프로세스입니다. 봉인은 동일한 템플리트를 기반으로 만들어진 여러 가상 머신에서 동일한 세부정보가 나타나지 않도록 방지하는 데 사용됩니다. 다른 기능(예: 예측 가능한 vNIC 순서)의 작동을 유지하는 데도 사용됩니다.
템플리트로 사용할 Oracle Linux 가상 머신을 봉인하려면 다음과 같이 하십시오.
root
사용자로 Oracle Linux 가상 머신에 로그인합니다.재구성을 위해 시스템에 플래그를 지정합니다.
#
touch /.unconfigured
SSH 호스트 키를 제거합니다.
#
rm -rf /etc/ssh/ssh_host_*
/etc/sysconfig/network
파일(Oracle Linux 6의 경우) 또는/etc/hostname
파일(Oracle Linux 7의 경우)에서HOSTNAME=localhost.localdomain
의 호스트 이름 값을 설정합니다./
etc/udev/rules.d/70-*
를 제거합니다.rm -rf /etc/udev/rules.d/70-*
/etc/sysconfig/network-scripts/ifcfg-eth*
파일에서HWADDR
및UUID
행을 제거합니다.(선택사항)
/var/log
에서 모든 로그를 삭제하고/root
에서 로그를 작성합니다.명령 내역을 정리합니다.
#
history -c
가상 머신을 종료합니다.
#
poweroff
그러면 Oracle Linux 가상 머신이 봉인되고 템플리트로 사용할 준비가 끝난 것입니다.
가상 머신을 기반으로 템플리트를 만드는 경우 가상 머신 디스크의 읽기 전용 복사본이 만들어집니다. 이 읽기 전용 디스크는 새 템플리트 및 템플리트를 기반으로 만들어진 가상 머신의 기본 디스크 이미지로 설정됩니다. 따라서 해당 템플리트를 기반으로 한 가상 머신이 가상화 환경에 남아 있는 상태에서는 템플리트를 삭제할 수 없습니다.
Oracle Linux 템플리트를 만들려면 다음과 같이 하십시오.
만들어진 가상 머신 목록이 표시된 Virtual Machines(가상 머신) 창이 열립니다.
Make Template(템플리트 만들기)를 선택합니다.
를 눌러 드롭다운 목록을 확장하고 드롭다운 목록에서다음 스크린샷에서는 Make Template(템플리트 만들기) 옵션을 표시하기 위해 확장된 More Actions(추가 작업) 드롭다운 목록을 보여줍니다. Make Template(템플리트 만들기) 옵션이 빨간색 직사각형으로 강조 표시되어 있습니다.
Name(이름) 필드에서 새 가상 머신 템플리트에 대한 이름을 입력합니다.
Alias(별칭) 열의 Disc Allocation(디스크 할당): 섹션에서 Name(이름) 필드에 대해 입력된 템플리트 이름과 동일하도록 디스크 별칭의 이름을 바꿉니다.
다음 스크린샷에서는 이 시나리오 예에서 만들려는
ol7-vm-template
라는 새 템플리트에 대해 완료된 New Template(새 템플리트) 대화 상자를 보여줍니다. 이 대화 상자에서 디스크 별칭의 이름이ol7-vm-template
로 바뀌었으며 확인란이 선택되어 있습니다.템플리트가 만들어지는 동안 가상 머신에서 이미지 상태가
Locked
로 표시됩니다. 템플리트를 만드는 데 걸리는 시간은 가상 디스크의 크기와 저장소 하드웨어의 용량에 따라 다릅니다. 템플리트 만들기 프로세스가 완료되면 Templates(템플리트) 창에 표시된 템플리트 목록에 해당 템플리트가 추가됩니다.그러면 이 템플리트를 기반으로 하는 새 Oracle Linux 가상 머신을 만들 수 있습니다.
Oracle Linux 7 이상 가상 머신의 경우 Cloud-Init 도구를 사용하여 가상 머신의 초기 설정을 자동화할 수 있습니다. 이 도구를 사용하여 일반적인 작업(호스트 이름, 네트워크 인터페이스 및 권한이 부여된 키 구성)도 자동화할 수 있습니다. 템플리트를 기반으로 배치된 가상 머신을 프로비전할 때는 Cloud-Init 도구를 사용하여 네트워크에서 충돌이 발생하지 않도록 할 수 있습니다.
Cloud-Init 사용 템플리트를 만들기 전에 다음 필요 조건이 충족되는지 확인하십시오.
Cloud-Init를 사용하려면 먼저 가상 머신에
cloud-init
패키지를 설치해야 합니다. 설치된 후 Cloud-Init 서비스는 부트 프로세스 중 시작되고 구성할 대상에 대한 지침을 검색합니다. Run Once(한 번 실행) 창의 옵션을 사용하여 일회성으로만 지침을 제공할 수도 있고, New Virtual Machine(새 가상 머신), Edit Virtual Machine(가상 머신 편집) 및 Edit Template(템플리트 편집) 대화 상자의 옵션을 사용하여 가상 머신이 시작될 때마다 해당 지침을 제공할 수도 있습니다.템플리트로 사용할 Oracle Linux를 봉인했어야 합니다. 자세한 내용은 3.6.1절. “템플리트로 사용할 Oracle Linux 가상 머신 봉인”을 참조하십시오.
템플리트를 만들어야 합니다. 자세한 내용은 3.6.2절. “Oracle Linux 템플리트 만들기”를 참조하십시오.
Oracle Linux 가상 머신에 로그인합니다.
cloud-init
패키지를 나열합니다.#
yum list cloud-init
cloud-init
패키지를 설치합니다.#
yum install cloud-init
다음 명령을 실행하여
cloud-init
서비스를 사용 안함으로 설정합니다.#
systemctl enable cloud-init
다음 명령을 실행하여
cloud-init
서비스를 시작합니다.#
systemctl start cloud-init
Cloud-Init를 사용하여 가상 머신의 초기 설정을 자동화하려면 다음과 같이 하십시오.
만들어진 템플리트 목록이 표시된 Templates(템플리트) 창이 열립니다.
템플리트를 선택하고
버튼을 누릅니다.Initial Run(초기 실행) 탭을 누르고 Use Cloud-Init/Sysprep(Cloud-Init/Sysprep 사용) 확인란을 선택합니다.
VM Hostname(VM 호스트 이름) 텍스트 필드에서 호스트 이름을 입력합니다.
Configure Time Zone(시간대 구성) 확인란을 선택하고 Time Zone(시간대) 드롭다운 목록에서 시간대를 선택합니다.
Authentication(인증) 섹션을 확장합니다.
Use already configured password(이미 구성된 암호 사용) 확인란을 선택하여 기존 자격 증명을 사용하거나 확인란을 지우고 Password(암호) 및 Verify Password(암호 확인) 텍스트 필드에
root
암호를 입력하여 새root
암호를 지정합니다.SSH Authorized Keys(SSH 권한이 부여된 키) 텍스트 영역에서 가상 머신의 권한이 부여된 호스트 파일에 추가할 SSH 키를 입력합니다.
Regenerate SSH Keys(SSH 키 재생성) 확인란을 선택하여 가상 머신에 대한 SSH 키를 재생성합니다.
Networks(네트워크) 섹션을 확장합니다.
DNS Servers(DNS 서버) 텍스트 필드에 DNS 서버를 입력합니다.
DNS Search Domains(DNS 검색 도메인) 텍스트 필드에 DNS 검색 도메인을 입력합니다.
In-guest Network Interface(인게스트 네트워크 인터페이스) 확인란을 선택하고 + Add new(새로 추가) 및 - Remove selected(선택 항목 제거) 버튼을 사용하여 네트워크 인터페이스를 가상 머신에 추가하거나 가상 머신에서 제거합니다.
중요올바른 네트워크 인터페이스 이름과 번호(예:
eth0
,eno3
,enp0s
)를 지정해야 합니다. 그렇지 않으면 가상 머신의 인터페이스 연결이 작동되기는 하지만 Cloud-Init 네트워크 구성이 사용되지 않습니다.
Custom Script(사용자정의 스크립트) 섹션을 확장하고 Custom Script(사용자정의 스크립트) 텍스트 영역에 사용자정의 스크립트를 입력합니다.