목차

클라우드용 이미지 생성

이강우 2023/05/28 13:24

오픈스택용 이미지 생성에 대한 내용은 아래 문서를 기본적으로 확인하도록 한다.

RHEL / CentOS

클라우드 이미지로 쓸 OS를 미리 설치하고 준비가 완료된 상태라고 가정한다.

# dnf install -y cloud-utils-growpart cloud-init
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 설정 모듈 추가
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
# 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 <가상머신파일명> <내보낼이미지파일명>

참조링크

Debian / Ubuntu

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

참조링크