12.3. テンプレートの準備

イメージをテンプレートとして使用できるように、イメージをサニタイズする必要があります。このスクリプトを使用すると、仮想マシンイメージをサニタイズして、テンプレートとして使用できるようにします。Red Hat Enterprise Linux 6 イメージおよび Red Hat Enterprise Linux 7 イメージと互換性があります。

注記

一部の環境では、スクリプトを変更する必要がある場合があります。使用前にこのスクリプトを慎重に確認し、イメージに加える変更が、使用環境と互換性があることを確認してください。

手順

  1. 次のスクリプトを実行します。

    #!/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
  2. スクリプトをコピーして、システムを /mktemplate.sh し、再起動して、runlevel 1 に移動します。

    注記

    (たとえば、init 1 で) 再起動する代わりに runlevel 1 に変更しないでください。runlevel 1 に変更すると、システムの起動時に実行していないデーモンがシングルユーザーモード (特に rsyslog) で実行していたままになります。

  3. システムがシングルユーザーモードで再起動したら、次のコマンドを実行します。

    # unset HISTFILE
    # chmod 0755  /mktemplate.sh
    # /mktemplate.sh
    # rm -f /mktemplate.sh
    # poweroff

バグの報告