AWS Cloud School 13기 52일차

Forever 김·2026년 3월 16일

AWS Cloud School

목록 보기
48/97

TIL

배운 내용

VM의 커스텀이미지 제작

내가 원하는 정보를 넣은 커스텀이미지를 생성한다.
예를 들면 내가 웹페이지를 배포하고 싶다면, 미리 해당 서버에 웹서버를 설치하고, enable도 해주고, 웹페이지도 넣어놓으면 내가 그 이미지를 부팅하기만 해도 웹페이지가 배포될 것이다.

Virt-builder

  • 이미지 커스터마이징을 위해 필요한 명령이다.
[root@kvm-host ~]# yum install -y libguestfs-tools libguestfs libguestfs-xfs
# virt-builder 명령 설치 패키지.

지원하는 목록을 보기위해

[root@kvm-host ~]# virt-builder --list
# 지원하는 이미지 목록.

지원하는 목록은 https://libguestfs.org/virt-builder.1.html 여기 사이트에서 확인 할 수 있다.

 virt-builder os-version
    [-o|--output DISKIMAGE] [--size SIZE] [--format raw|qcow2]
    [--arch ARCHITECTURE] [--attach ISOFILE]
    [--append-line FILE:LINE] [--chmod PERMISSIONS:FILE]
    [--chown UID:GID:PATH] [--commands-from-file FILENAME]
    [--copy SOURCE:DEST] [--copy-in LOCALPATH:REMOTEDIR]
    [--delete PATH] [--edit FILE:EXPR] [--firstboot SCRIPT]
    [--firstboot-command 'CMD+ARGS'] [--firstboot-install PKG,PKG..]
    [--hostname HOSTNAME] [--inject-blnsvr METHOD]
    [--inject-qemu-ga METHOD] [--inject-virtio-win METHOD]
    [--install PKG,PKG..] [--link TARGET:LINK[:LINK..]] [--mkdir DIR]
    [--move SOURCE:DEST] [--password USER:SELECTOR]
    [--root-password SELECTOR] [--run SCRIPT]
    [--run-command 'CMD+ARGS'] [--scrub FILE]
    [--ssh-inject USER[:SELECTOR]] [--tar-in TARFILE:REMOTEDIR]
    [--timezone TIMEZONE] [--touch FILE] [--truncate FILE]
    [--truncate-recursive PATH] [--uninstall PKG,PKG..] [--update]
    [--upload FILE:DEST] [--write FILE:CONTENT] [--no-logfile]
    [--password-crypto md5|sha256|sha512] [--no-selinux-relabel]
    [--selinux-relabel]

 virt-builder -l|--list [--long] [--list-format short|long|json] [os-version]

 virt-builder --notes os-version

 virt-builder --print-cache

 virt-builder --cache-all-templates

 virt-builder --delete-cache

 virt-builder --get-kernel DISKIMAGE
    [--format raw|qcow2] [--output OUTPUTDIR]

우리가 사용할 이미지는 centos-7.8이다

[root@kvm-host ~]# virt-builder centos-7.8 --size=5G --format=qcow2 -o /remote/vm/cent7-pass.img --root-password password:test123
# root  패스워드를 test123으로 설정한 이미지. 앞으로 이 이미지를 복사해서 쓸 예정.
# 볼륨 사이즈를 20GB 로 지정하고, 포맷을 qcow2 로 하며, output 은 remote 디렉터리의 cent7-pass.img 로 저장한다.

[root@kvm-host ~]# virt-install --name cen1 --vcpus=2 --ram=2048 --network bridge=br0 --import --disk=/remote/vm/cen1.img --noautoconsole --graphic=vnc
# cen1.img를 베이스로 cen1이라는 vm을 생성
[root@kvm-host ~]# virsh console cen1
# 콘솔 접속

virt-customize

: virt-builder로 생성된 순수한 이미지에 내가 원하는 설정을 추가해야한다.

[root@kvm-host ~]# virt-customize --help
# 호스트로 나와서 사용법 확인.
  1. 방화벽을 커준다.
[root@kvm-host ~]# virt-customize -a /remote/vm/cen2.img --firstboot-command 'systemctl disable --now firewalld'

방화벽 off 명령은 처음 부팅할때 한번만 실행주면 된다. 그래서 --first-command 옵션으로 수행.

--firstboot-command : 게스트 운영체제가 처음 부팅될 때(루트 권한으로, 부팅 과정 후반에) 게스트 내부에서 명령(및 인수)을 실행합니다.

virt-install --name cen2 --vcpus=2 --ram=2048 --network bridge=br0 --import --disk=/remote/vm/cen2.img --noautoconsole --graphic=vnc
# cen2.img를 베이스로 cen2이라는 vm을 생성
  1. 추가로 암호를 수정한다.
[root@kvm-host vm]# virt-customize -a /remote/vm/cen3.img --firstboot-command 'systemctl disable --now firewalld' --root-password password:test1234 --selinux-relabel

# --selinux-relabel : 보안관련 옵션. 셀리눅스 정책에 위반이 되는 옵션들을 허용. 앞으로도 항상 붙여주세요!

virt-install --name cen3 --vcpus=2 --ram=2048 --network bridge=br0 --import --disk=/remote/vm/cen3.img --noautoconsole --graphic=vnc
# 커스터마이징한 이미지로 VM생성

virsh console cen3
# 콘솔 접속

ssh 인증 : 공개키방식

[root@kvm-host vm]# ssh-keygen
# 키페어 만드는 명령.

키페어를 만들어준다. 경로는 /root/.ssh/id_rsa에 만들어주고 기본값으로 해서 만든다.
그럼 ls ~/.ssh/를 통해 보면
id_rsa, id_rsa.pub, known_hosts가 있다.

  • id_rsa : private 키
  • id_rsa.pun : public 키
  • known_hosts : 한번 접속한 서버들이다.
    host에서 cat ~/.ssh/id_rsa.pub 공개키를 복사한다.

다시 console cen3으로

[root@localhost ~]# mkdir ~/.ssh
[root@localhost ~]# vi ~/.ssh/authorized_keys
# 복사한 공개키를 붙여준다.

ssh root@[IP주소] -i ~/.ssh/id_rsa를 통해 접속한다.

접속할땐 프라이빗키로 식별(-i)하겠다는 옵션을 적어주면 된다.

내 계정 user1

~ : /home/user1

내 계정 root

~ : /root


오늘은 KVM에서 이미지를 커스텀하는것을 주제로 공부를 했다. 실습은 4개 정도가있지만 이제는 개념을 위주로 블로그를 작성하는 방향으로 해야겠다. 월요일 잘 버틴듯 하다.

profile
나를 한줄로

0개의 댓글