如果我需要从模板部署 Red Hat 7,我想采取建议的步骤来清洁我的“黄金映像”。它应该启动到首次启动提示并指导用户完成典型步骤。
在 Red Hat 5/6 中,我按照提供的文档由供应商提供。但是,我找不到 Red Hat 7 的等效版本。具体来说,touch /.unconfigured
不会触发首次启动设置。
9.3.1. 封装 Linux 虚拟机以将其部署为模板
概括
在将 Linux 虚拟机制作成模板之前,先将其通用化(封装)。这可以防止从模板部署的虚拟机之间发生冲突。过程 9.6. 封装 Linux 虚拟机
登录虚拟机。以 root 身份运行以下命令标记系统以进行重新配置:
# touch /.unconfigured
- 删除 ssh 主机密钥。运行:
# rm -rf /etc/ssh/ssh_host_*
- 放
HOSTNAME=localhost.localdomain
在/etc/sysconfig/network
- 删除 /etc/udev/rules.d/70-*。运行:
# rm -rf /etc/udev/rules.d/70-*
- 去除硬件地址=和UUID=行自
/etc/sysconfig/network-scripts/ifcfg-eth*
。- 可选择删除所有日志
/var/log
并从中构建日志/root
。- 关闭虚拟机。运行:
# poweroff
编辑:可以通过最后运行将步骤 1 和 7 合并sys-unconfig
。或者,查看virt-sysprep
。libguestfs-工具-c其功能远不止于此。
[user@hostname ~]$ virt-sysprep --list-operations
abrt-data * Remove the crash data generated by ABRT
bash-history * Remove the bash history in the guest
blkid-tab * Remove blkid tab in the guest
ca-certificates Remove CA certificates in the guest
crash-data * Remove the crash data generated by kexec-tools
cron-spool * Remove user at-jobs and cron-jobs
delete * Delete specified files or directories
dhcp-client-state * Remove DHCP client leases
dhcp-server-state * Remove DHCP server leases
dovecot-data * Remove Dovecot (mail server) data
firewall-rules Remove the firewall rules
firstboot * Add scripts to run once at next boot
flag-reconfiguration Flag the system for reconfiguration
hostname * Change the hostname of the guest
kerberos-data Remove Kerberos data in the guest
logfiles * Remove many log files from the guest
lvm-uuids * Change LVM2 PV and VG UUIDs
machine-id * Remove the local machine ID
mail-spool * Remove email from the local mail spool directory
net-hostname * Remove HOSTNAME in network interface configuration
net-hwaddr * Remove HWADDR (hard-coded MAC address) configuration
pacct-log * Remove the process accounting log files
package-manager-cache * Remove package manager cache
pam-data * Remove the PAM data in the guest
password * Set root or user password
puppet-data-log * Remove the data and log files of puppet
random-seed * Generate random seed for guest
rhn-systemid * Remove the RHN system ID
rpm-db * Remove host-specific RPM database files
samba-db-log * Remove the database and log files of Samba
script * Run arbitrary scripts against the guest
smolt-uuid * Remove the Smolt hardware UUID
ssh-hostkeys * Remove the SSH host keys in the guest
ssh-userdir * Remove ".ssh" directories in the guest
sssd-db-log * Remove the database and log files of sssd
tmp-files * Remove temporary files
udev-persistent-net * Remove udev persistent net rules
user-account Remove the user accounts in the guest
utmp * Remove the utmp file
yum-uuid * Remove the yum UUID
答案1
我们认为的初始设置实际上分为三个部分。前两个是:
- 初始设置,要求您接受许可并创建用户
- Firstboot,要求您配置 kdump 并(在 RHEL 上)设置您的订阅
现在这两者均通过 systemd 启用;一旦完成,它们就会自行禁用。
因此,您要做的就是删除在第一次初始设置过程中创建的所有本地用户,然后重新启用这些服务:
systemctl enable initial-setup-graphical.service
systemctl enable firstboot-graphical.service
> /etc/sysconfig/firstboot
然后重新启动。
我不是完全请务必注意第三部分,它会询问您的语言并创建用户帐户或将计算机加入域。至少,这会一直出现,直到您真正完成向导。(所以不要这样做。)
清理主机密钥和任何硬件特定配置可能仍然是一个好主意。(udev 规则和接口配置文件中的 Mac 地址。)