클라우드 이미지로 쓸 OS를 미리 설치하고 준비가 완료된 상태라고 가정한다.
# dnf install -y cloud-utils-growpart cloud-init
/etc/cloud/cloud.cfg
파일 내의 내용 추가users: # 추가할 사용자 계정 선언부분 - default disable_root: 1 # root 계정 비활성화 ssh_pwauth: 0 # ssh 접속시 password 인증 활성화 여부 mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2'] ssh_deletekeys: 1 ssh_genkeytypes: ['rsa', 'ecdsa', 'ed25519'] syslog_fix_perms: ~ disable_vmware_customization: false cloud_init_modules: - resolv-conf # resolv-conf 설정 모듈 추가
/etc/sysconfig/network
내에 아래 내용 추가NOZEROCONF=yes
/etc/default/grub
파일 내용 추가
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
커널 재생성
# grub2-mkconfig -o /boot/grub2/grub.cfg
또는 RHEL8 이상에서 아래와 같은 방법을 사용해도 됨
$ grubby --update-kernel=ALL --args="console=tty0 console=ttyS0,115200n8" $ grub2-mkconfig -o /boot/grub2/grub.cfg $ grubby --info DEFAULT
/etc/sysconfig/network-scripts/
내의 모든 파일을 삭제한다.# sudo subscription-manager register # sudo subscription-manager attach --pool=Valid-Pool-Number-123456 # sudo subscription-manager repos --enable=rhel-7-server-rpms
[root@host]# virt-sysprep -d <대상가상머신이름>
[root@host]# virt-sparsify --compress <가상머신파일명> <내보낼이미지파일명>
1. 호스트명 초기화
truncate -s0 /etc/hostname hostnamectl set-hostname localhost
2. netplan
파일 제거
rm /etc/netplan/50-cloud-init.yaml
3. machine-id
제거
truncate -s0 /etc/machine-id rm /var/lib/dbus/machine-id ln -s /etc/machine-id /var/lib/dbus/machine-id
4. cloud-init clean
실행
표면적으로는 이 프로세스에서 가장 중요한 단계입니다. cloud-init clean
를 실행하지 않으면 클라우드 초기화가 최초 부팅 시 이미 실행되어 작업을 완료한 것으로 간주하므로 클라우드 초기화가 실행되지 않는 손상된 VM 템플릿이 남게 됩니다.
5. root
패스워드 비활성화
passwd -dl root
6. history 제거
truncate -s0 ~/.bash_history history -c
7. 콘솔 터미널 설정
/etc/default/grub
파일 내용 추가
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
$ sudo update-grub # 또는 $ sudo grub-mkconfig -o /boot/grub/grub.cfg
8. VM 종료
shutdown -h now