Virtual box Command line 방식으로 관리하기

command line은 강력하다

왜!! 완벽하고 아름다운 GUI를 두고 구닥스러워 보이는 command line을 사용하나요 ?라는 질문을 종종 받는다. 답은
력하기 때문이다
. 1995년 이후의 컴퓨터 세대는 컴퓨터를 창과 아이콘으로 제어하는 기계라는 생각을 가지고 있다.
그러나 실은 그렇지 않다는 얘기를 하고 싶다.

그 전에, 1995년으로 세대를 나눈 이유에 대해서 알아봐야 겠다. 1995년으로 나누는 이유는 윈도95가 발표된 시점이기
때문이다.
눅스
진영에서는 윈도95의 인터페이스와 비슷한 모습을 보여주는 FVWM95 윈도우 메니저가 발표되었다. 윈도
영체제
에서 뿐만 아니라 전통적으로 command line을 선호했던 리눅스도 (쓸만한)윈도 시스템이 제공이 되었으니,
command line은 역사의 뒤안길로 사라질 것으로 생각했다.

실제 윈도에서는 DOS command line을 거의 사용하지 않는다. 그러나 리눅스는 여전히 command line이 살아있다.
초기의 FVWM95와 비교할 수 없을 만큼 강력한 KDE
gnome
사용하고 있는 지금도 마찬가지다. 나의 경우에도 웹서핑을 제외한 작업의 대부분은 command line에서 이루어진다. 웹서핑도
문서작업이 필요한 경우에는 command line에서 w3m
직접 호출한다.

VirtualBox와 Command Line

컴퓨터 성능이 워낙 좋아지는 데다가 하드디스크 공간도 남아돌다 보니, 개인이 VirtualBox
가상화 환경을 구축하는 것도 어렵지 않게 볼 수 있다. 웹 2.0 비지니스 모델이 성숙해지면서, 생산자와 소비자의 역할을 동시에
하는 프로슈머 위주로 개발자가 아닌 유저도 심심찮게 가상환경을 구축하는 걸 볼 수 있다.

VirtualBox는 잘 구성된 GUI환경을 가지고 있다. 아이콘도 예쁘고, 메뉴구성도 잘되어 있어서 어렵지 않게 사용할 수
있다. 대부분의 설정을 GUI에서 지원하는 메뉴로 끝낼 수 있다. 그러나 진정한 파워는 command line으로 발휘 된다.
RPG 게임에서 주인공이 진정한 파워를 얻을 수 있는 곳은 잘 정돈된 세계가 아닌, 어두운 던전인 것과 비슷하다.

command line을 어두운 던전으로의 비유는 매우 적절한 것 같다. command line을 이용하기 위해서는 어두움으로
채워진 썰렁한 사각형 창, 터미널 애뮬레이터을 띄워야 하기 때문이다.

이제 터미널 애뮬레이터를 띄우도록 하자. gnome사용자라면 gnom-terminal, kde사용자라면 konsole을 이용하면
된다. command line은 강력한 자동화 환경을 제공한다. command line은 perl
shell
크립트로 제어하는 경우가 많은데, 이렇게 만들어진 스크립트들은 cron
같은 스케줄
에 의해서 원하는 시간에 실행 시킬 수 있기 때문이다.

간단하지만 아래와 같은 방식으로 12시 마다 점심식사를 알리는 간단한 스케쥴 프로그램을 만들 수도 있다.

# crontab e 
0 12 * * * /usr/bin/walll "점심 식사 시간 입니다"

이러한 일을 해주는 GUI 프로그램도 찾을 수 있을 것이다. 그러나 command line을 이용하면 몇 초만에 원하는 일을 할
수있다.

간편함, 강력함, 빠름, 효율성 덕분에 시스템 관리자에게 command line은 필수로 사용된다. 물론 command line의
장점을 제대로 누릴리면 약간의 공부가 필요하긴 하다.

virtualBox로 virtual disk 추가, network interface 관리, VM 생성을 할때도 command
line을 이용하면 훨씬 빠르게 원하는 작업을 할 수 있다. 만약 기업에서의 가상 인프라 환경을 관리해야 하는 경우라면, 이러한
과정을 자동화 시킬 수도 있다.

설치와 기본 환경

설치는 virtualbox
서를 참고하기 바란다. Command line으로 virtualbox를 제어하려면 설치환경을 알고 있어야 한다.

  • 바이너리 : /usr/lib/virtualbox
    -> /usr/bin
  • 라이브러리 : /usr/lib/virtualbox
  • 소스 : /usr/share/virtualbox
  • Guest 확장 파일 (ISO) : /usr/share/virtualbox

이 문서는 virtualbox 3.1.2를 기준으로 하고 있다.

VM 생성과 설정

아이콘과 메뉴로 제어할 수 있는 GUI와 달리 commandline는 기본적인 명령을 알고있어야 한다. 이게 초기 command
line의 사용을 어렵게 하는 요인이다.

이제 새로운 VM을 만들어 보자.

# /usr/bin/VBoxManage createvm --name Ubuntu9 register 

Ubuntu9이라는 이름을 가지는 새로운 VM을 생성하고 VirtualBox에 등록시켰다. 생성된 VM정보는 홈
렉토리
의 ~/.VirtualBox/Machines/Ubuntu9/Ubuntu9.xml에 xml
일로 저장된다.

가상 디스크 생성

# /usr/bin/VBoxManage createhd --filename Ubuntu9.vdi --size 4000 --variant Fixed 

Ubuntu9.vdi를 이름으로 하는 가상 디스크를 생성한다. 디스크의 크기는 4GB로 크기를 고정시켰다.

가상 디스크와 가상 CD/DVD드라이브를 추가하기 위해
Stroage Controller를 생성한다

# /usr/bin/VBoxManage storagectl Ubuntu9 --name "IDE Controller" --add ide --controller PIIX4 

“IDE Controller”이름을 가지는 PIIX4 형식의 IDE 컨트롤러를 생성했다.

만든 가상 디스크를 VM에 추가한다.

# /usr/bin/VBoxManage storageattach Ubuntu9 --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium Ubuntu9.vdi 

설치할 운영체제의 ISO 이미지를 추가한다.

# /usr/bin/VBoxManage storageattach Ubuntu0 --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /ISO/ubuntu-9.10-desktop-i386.iso 

네트워크 설정

# /usr/bin/VBoxManage modifyvm Ubuntu9 --nic1 bridged --cableconnected1 on --bridgeadapter1 eth0 

리눅스 시스템의 eth0 네트워크 어뎁터와의 bridget NIC를 생성한다.

VM 실행

# /usr/bin/VBoxManage startvm Ubuntu9  

자동화

자동화를 위해서는 배포/실행 시스템을 갖추어야 한다. 여러가지 방법이 있겠으나 개인적으로 ssh
공용키를 이용해서 인증환경을 만들고, 그 위에 Agent,Manager시스템을 구축하는 방식을 선호한다.

관리 대상 장비에 Manager를 설치하면, Agent로 배포하고, 이를 실행시키는 방식이다.

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.