12.3. テンプレートの準備
イメージをテンプレートとして使用できるように、イメージをサニタイズする必要があります。このスクリプトを使用すると、仮想マシンイメージをサニタイズして、テンプレートとして使用できるようにします。Red Hat Enterprise Linux 6 イメージおよび Red Hat Enterprise Linux 7 イメージと互換性があります。
一部の環境では、スクリプトを変更する必要がある場合があります。使用前にこのスクリプトを慎重に確認し、イメージに加える変更が、使用環境と互換性があることを確認してください。
手順
次のスクリプトを実行します。
#!/bin/bash # RHEL 7 if ! [[ `runlevel | cut -d " " -f 2` =~ ^[1S]$ ]]; then echo "Please *boot* to runlevel 1" exit 3 fi # Kill udev killall -9 udevd # Clean out /root rm -rf /root/* rm -f /root/.bash_history rm -rf /root/.ssh # SSH host keys rm -f /etc/ssh/ssh_host_* # Remove all files in /var that are not owned by an RPM for FILE in `find /var -type f`; do rpm -qf --quiet "$FILE" || rm -f "$FILE" done # Remove empty directories in /var that are not owned by an RPM until [ "$REMOVED_DIR" = false ]; do REMOVED_DIR=false for DIR in `find /var -type d -empty`; do if ! rpm -qf --quiet "$DIR"; then REMOVED_DIR=true rmdir "$DIR" fi done done # Truncate any remaining files in /var/log for FILE in `find /var/log -type f`; do echo -n > "$FILE" done # Make sure the RPM GPG key has been imported rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 2> /dev/null # Remove MAC addresses from /etc/sysconfig/network-scripts/ifcfg-* for FILE in /etc/sysconfig/network-scripts/ifcfg-*; do sed -i /^HWADDR/d "$FILE" done # Remove auto-generated udev rules for CD-ROM and network devices rm -f /etc/udev/rules.d/70-persistent-{cd,net}.rules # Clean out /tmp find /tmp -mindepth 1 -delete
スクリプトをコピーして、システムを
/mktemplate.sh
し、再起動して、runlevel 1 に移動します。注記(たとえば、init 1 で) 再起動する代わりに runlevel 1 に変更しないでください。runlevel 1 に変更すると、システムの起動時に実行していないデーモンがシングルユーザーモード (特に
rsyslog
) で実行していたままになります。システムがシングルユーザーモードで再起動したら、次のコマンドを実行します。
# unset HISTFILE # chmod 0755 /mktemplate.sh # /mktemplate.sh # rm -f /mktemplate.sh # poweroff