Fork App Server From Template

Bookmark and Share

앞 선 문서 Install Ubuntu 9.04 JeOS에는 Ubuntu JeOS를 바탕으로 하여 VM 템플릿을 만드는 시험 과정을 기술하였다. 이 문서에는 이것을 바탕으로 하여 실 업무용 VM을 생성하고 설정하는 과정을 기록한다.

스크립트를 이용한 가상머신 가지치기

일단 다음 명령으로 가상머신의 가지를 만들어 낸다. (스크립트는 이전에 만들어놓은 것을 사용한 것이다.)

sio4@jangseung:/box/vms$ ./clonevm.sh 
base of clone: u904j64
name of vm: vios-dev
size of ram: 512
number of cpus: 2
create system disk based on u904j64.
Formatting '/box/vms/vios-dev/vios-dev-sys.snapshot-0000', fmt=qcow2, backing_file=/box/vms/u904j64/u904j64-sys.qcow2, size=4194304 kB
Formatting '/box/vms/vios-dev/vios-dev-sys.ovl', fmt=qcow2, backing_file=/box/vms/vios-dev/vios-dev-sys.snapshot-0000, size=4194304 kB
create temporary disk based on u904j64.
Formatting '/box/vms/vios-dev/vios-dev-tmp.snapshot-0000', fmt=qcow2, backing_file=/box/vms/u904j64/u904j64-tmp.qcow2, size=2097152 kB
Formatting '/box/vms/vios-dev/vios-dev-tmp.ovl', fmt=qcow2, backing_file=/box/vms/vios-dev/vios-dev-tmp.snapshot-0000, size=2097152 kB
disk size of opt: 8
Formatting '/box/vms/vios-dev/vios-dev-opt.qcow2', fmt=qcow2, size=8388608 kB
Formatting '/box/vms/vios-dev/vios-dev-opt.ovl', fmt=qcow2, backing_file=/box/vms/vios-dev/vios-dev-opt.qcow2, size=8388608 kB
sio4@jangseung:/box/vms$ ls -l vios-dev
total 192
-rwxr-xr-x 1 sio4 sio4    94 2009-06-19 10:22 backup.sh
-rw-r--r-- 1 sio4 sio4 45056 2009-06-19 10:22 vios-dev-opt.ovl
-rw-r--r-- 1 sio4 sio4 45056 2009-06-19 10:22 vios-dev-opt.qcow2
-rw-r--r-- 1 sio4 sio4 28672 2009-06-19 10:22 vios-dev-sys.ovl
-rw-r--r-- 1 sio4 sio4 28672 2009-06-19 10:22 vios-dev-sys.snapshot-0000
-rw-r--r-- 1 sio4 sio4 20480 2009-06-19 10:22 vios-dev-tmp.ovl
-rw-r--r-- 1 sio4 sio4 20480 2009-06-19 10:22 vios-dev-tmp.snapshot-0000
-rw-r--r-- 1 sio4 sio4     0 2009-06-19 10:22 vios-dev.based_on_u904j64
-rw-r--r-- 1 sio4 sio4  1263 2009-06-19 10:22 vios-dev.xml
sio4@jangseung:/box/vms$ du -sh u904j64 vios-dev
686M    u904j64
196K    vios-dev
sio4@jangseung:/box/vms$

위와 같이, 기반이 될 템플릿 이름과 새 VM의 이름, CPU와 Memory 크기, 추가 디스크의 크기 등을 지정하면 템플릿을 기반으로 한 VM을 자동으로 만들어낸다. 이 예에서는 바탕 이미지 기법을 사용하고 있어서 새로운 VM을 위하여 196KB의 공간 만이 추가 소요되었다. 만들어진 VM의 정보는 다음과 같다.

sio4@jangseung:/box/vms$ cat vios-dev/vios-dev.xml 
<domain type='kvm'>
  <name>vios-dev</name>
  <uuid>49843d3b-aeda-46d3-9e8e-0f7031021c96</uuid>
  <memory>524288</memory>
  <currentMemory>524288</currentMemory>
  <vcpu>2</vcpu>
  <os>
    <type>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <source file='//box/vms/vios-dev/vios-dev-sys.ovl'/>
      <target dev='hda' bus='ide'/>
    </disk>
    <disk type='file' device='disk'>
      <source file='//box/vms/vios-dev/vios-dev-tmp.ovl'/>
      <target dev='hdb' bus='ide'/>
    </disk>
    <disk type='file' device='disk'>
      <source file='//box/vms/vios-dev/vios-dev-opt.ovl'/>
      <target dev='hdd' bus='ide'/>
    </disk>
    <!--disk type='file' device='cdrom'>
      <source file='/'/>
      <target dev='hdc' bus='ide'/>
    </disk-->
    <interface type='network'>
      <mac address='52:54:00:d4:6a:f9'/>
      <source network='nat-1'/>
      <model type='virtio'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' listen='127.0.0.1'/>
  </devices>
</domain>
sio4@jangseung:/box/vms$

아쉬운 점: clone을 뜨면서 IP, hostname 등의 설정도 가져갔으면… 물론, MAC을 제어하기 때문에 DHCP를 통하여 제거 가능한 부분도 있지만 어떤 경우에는 DHCP를 쓸 수 없는 상황도 있지 않나? 그렇다면, 기간망 DHCP와 충돌하지 않도록 DHCP 서버를 설정할 수 있는 방법은 없나?

새로운 VM을 실행하고 설정하기

새로 만들어진 VM을 실행하여 다음의 설정을 해줘야 한다.

sio4@jangseung:/box/vms$ virsh define vios-dev/vios-dev.xml 
Connecting to uri: qemu:///system
Domain vios-dev defined from vios-dev/vios-dev.xml

sio4@jangseung:/box/vms$ virsh start vios-dev
Connecting to uri: qemu:///system
Domain vios-dev started

sio4@jangseung:/box/vms$

현재의 환경이 사용하고 있는 dnsmasq는 DNS 중계, DHCP, DHCP 결과에 대한 DNS 서비스 등의 기능을 한다. 이것을 이용하여 쉽게 DHCP로 할당된 IP를 얻을 수 있다. 확인된 IP로 ssh 접속을 하고 다음의 작업을 진행한다. (물론 콘솔 작업도 상관없다.)

sio4@jangseung:/box/vms$ dig jeos-template @192.168.172.1 +short
192.168.172.200
sio4@jangseung:/box/vms$ ssh 192.168.172.200
The authenticity of host '192.168.172.200 (192.168.172.200)' can't be established.
RSA key fingerprint is 08:41:7d:6d:98:2f:32:44:0c:5c:5e:d6:e3:4e:0a:0e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.172.200' (RSA) to the list of known hosts.
sio4@192.168.172.200's password: 
Linux jeos-template 2.6.28-11-server #42-Ubuntu SMP Fri Apr 17 02:45:36 UTC 2009 x86_64

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
Last login: Thu Jun 18 16:27:59 2009
sio4@jeos-template:~$

"난 나야~" 새로운 이름 부여하기

새로운 이름 부여하기

우분투 또는 데비안 리눅스에서 호스트이름의 설정은 /etc/hostname 파일에 담겨있다.

sio4@jeos-template:~$ sudo sed -i "s/jeos-template/vios-dev/" /etc/hostname
[sudo] password for sio4: 
sio4@jeos-template:~$ cat /etc/hostname
vios-dev
sio4@jeos-template:~$ sudo sed -i "s/jeos-template/vios-dev/" /etc/hosts
sio4@jeos-template:~$ cat /etc/hosts
127.0.0.1    localhost
127.0.1.1    vios-dev

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
sio4@jeos-template:~$

(선택적) sshd key 재 설정

이렇게 만들어진 VM이 서로 다른 사람들에 의하여 사용되어지거나 서로간의 보안 유지가 필요한 경우, ssh 접속을 위한 key가 같다는 점이 문제가 될 수도 있다. 따라서 키를 새로 만들어 줌으로써 기계간의 연관성을 깨야 할 수 있다.

필요한 응용소프트웨어 설치

Bookmark and Share


따로 명시하지 않는 한에서 이 사이트의 모든 콘텐츠는 다음의 라이선스를 따릅니다: Creative Commons Attribution-NonCommercial 3.0 License