KVM環境でOpenStack用のカスタムCentOS 7イメージを作成する手順

カスタムイメージの作成環境と前提条件

OpenStack向けのカスタム仮想マシンイメージを作成するため、KVM (Kernel-based Virtual Machine) 環境をホストマシンに構築しておく必要があります。本手順ではCentOS 7 Minimal 2003 ISOをベースに、OpenStackインスタンスの起動に適した軽量なイメージを構築します。環境の準備として、次のパッケージをインストールしてください。

# KVM関連のパッケージをインストール
yum groupinstall -y "Virtualization Host"
yum install -y virt-install libvirt-client qemu-kvm

仮想マシン作成とOSインストール

virt-installコマンドを使用して仮想マシンを作成し、ベースOSをインストールします。この例では、メモリ1GB、ディスク形式qcow2の仮想マシンを作成します。

virt-install \
  --virt-type kvm \
  --name centos7-template \
  --memory 1024 \
  --disk path=/var/lib/libvirt/images/centos7-template.qcow2,format=qcow2,size=10 \
  --cdrom /path/to/CentOS-7-x86_64-Minimal-2003.iso \
  --network network=default \
  --graphics vnc,listen=0.0.0.0 \
  --os-type linux \
  --os-variant centos7.0 \
  --noautoconsole

仮想マシンが起動するとVNCポートが開設されます。netstatコマンドで5900番ポートがLISTEN状態であることを確認し、VNCクライアントで接続してOSインストールを進めます。

netstat -tulpn | grep :5900

OSインストール時の設定ポイント

VNC接続後、以下の設定を適用しながらインストールを進めます。

  • 起動オプション: インストールメニューでTabキーを押し、カーネルパラメータにnet.ifnames=0 biosdevname=0を追加して従来のethX形式のネットワークインターフェース名を使用
  • パーティション設定: 全容量をルートパーティション(/)に割り当て、シンプルな構成で作成
  • タイムゾーン: Asia/Shanghaiを選択
  • 管理者パスワード: rootアカウントのパスワードを設定

インストール後の基本設定

OSインストール完了後、仮想マシン内で以下の基本設定を実施します。

ネットワーク設定とYUMリポジトリの構成

# ネットワークインターフェースの設定
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF
TYPE=Ethernet
BOOTPROTO=dhcp
DEVICE=eth0
ONBOOT=yes
EOF

# リポジトリのバックアップと設定
cd /etc/yum.repos.d/
mkdir backup
mv *.repo backup/

# 基本リポジトリの設定
curl -o CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# EPELリポジトリの追加
yum install -y epel-release
sed -i 's|^#baseurl|baseurl|' /etc/yum.repos.d/epel.repo
sed -i 's|^mirrorlist|#mirrorlist|' /etc/yum.repos.d/epel.repo

システムの基本設定とツールのインストール

# SELinuxとファイアウォールの無効化
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
systemctl disable firewalld --now

# SSHサービス設定の最適化
echo "UseDNS no" >> /etc/ssh/sshd_config
echo "GSSAPIAuthentication no" >> /etc/ssh/sshd_config
systemctl restart sshd

# 必須パッケージのインストール
yum install -y vim-enhanced net-tools wget curl bind-utils \
  mlocate lsof htop iotop sysstat bash-completion \
  ntpdate unzip tar gzip

OpenStackインスタンス向けの最適化

クラウド環境で使用するための追加設定を実施します。

Cloud-Initの設定

Cloud-Initをインストールして設定することで、OpenStackから渡されるメタデータを処理できるようにします。

# Cloud-Initのインストール
yum install -y cloud-init cloud-utils-growpart

# Cloud-Initの基本設定
cat > /etc/cloud/cloud.cfg.d/99_openstack.cfg << EOF
# OpenStack用設定
disable_root: 0
ssh_pwauth: yes
manage_etc_hosts: localhost
datasource:
  OpenStack:
    timeout: 10
    max_wait: 30

一時ファイルのクリーンアップ

# パッケージキャッシュのクリーンアップ
yum clean all

# 一時ファイルの削除
rm -rf /tmp/*

# システムログのクリア
echo "" > /var/log/messages
echo "" > /var/log/secure
echo "" > /var/log/audit/audit.log

# コマンド履歴の削除
history -c

イメージのエクスポートとOpenStackへの登録

仮想マシンを停止し、ディスクイメージをOpenStackで使用できる形式でエクスポートします。

# 仮想マシンの停止
shutdown -h now

# イメージ形式の変換(必要に応じて)
qemu-img convert -f qcow2 -O raw \
  /var/lib/libvirt/images/centos7-template.qcow2 \
  /tmp/centos7-cloud.raw

# イメージのプロパティ確認
qemu-img info /tmp/centos7-cloud.raw

# Glanceへのイメージ登録
openstack image create "CentOS-7-Cloud" \
  --file /tmp/centos7-cloud.raw \
  --disk-format raw \
  --container-format bare \
  --public \
  --property os_distro="centos" \
  --property os_version="7"

検証ポイント

作成したイメージを使用してOpenStackでインスタンスを作成する際、以下の点を確認します。

  • インスタンス起動時に正しくIPアドレスをDHCPで取得すること
  • Cloud-Initがメタデータを正常に処理し、ユーザー設定が適用されること
  • SSH接続が可能で、rootログインが適切に設定されていること
  • システムログに異常がないこと

タグ: OpenStack KVM CentOS 仮想化 イメージ作成

7月31日 01:47 投稿