例: CentOS イメージ¶
この例は、CentOS イメージのインストール方法を説明します。おもに CentOS 7 を対象にしています。CentOS のインストールプロセスはバージョンにより異なる可能性があるため、違うバージョンの CentOS を使用している場合、インストール手順が異なる可能性があります。
CentOS インストール ISO のダウンロード¶
CentOS ミラー ページに移動します。
ミラーの右側にある
HTTP
リンクをクリックします。使用したい CentOS のバージョンのリンクをクリックします。例えば、
7/
です。isos/
フォルダーへのリンクをクリックします。64 ビットイメージ用の
x86_64/
フォルダーへのリンクをクリックします。ダウンロードしたい netinstall ISO イメージをクリックします。例えば、
CentOS-7-x86_64-NetInstall-1611.iso
は小さいイメージなので良いでしょう。不足しているパッケージは、インストール中にインターネットからダウンロードされます。
インストールプロセスの開始¶
すでに説明したように、コマンド virt-manager や virt-install を使用して、インストールプロセスを開始します。 virt-install コマンドを使用する場合、必ず VNC クライアントを仮想マシンに接続してください。
以下を前提としています。
仮想マシンイメージの名前は
centos
です。 virsh コマンドを使用してイメージの状態を操作する際に、この名前が必要になります。ネットワークインストール ISO イメージは
/data/isos
ディレクトリーに保存されています。
virt-install をコマンド使用する場合、このコマンドは以下のようになるでしょう。
# qemu-img create -f qcow2 /tmp/centos.qcow2 10G
# virt-install --virt-type kvm --name centos --ram 1024 \
--disk /tmp/centos.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=centos7.0 \
--location=/data/isos/CentOS-7-x86_64-NetInstall-1611.iso
インストールのステップ実行¶
At the initial Installer boot menu, choose the Install CentOS 7 option. After the installation program starts, choose your preferred language and click Continue to get to the installation summary. Accept the defaults.

Ethernet 状態の変更¶
デフォルトの Ethernet 設定は OFF
です。 Ethernet 設定を OFF
から ON
に変更します。特に、 IPv4 設定方法
(IPv4 Settings Method
) は必ず 自動 (DHCP)
(Automatic (DHCP)
) に設定してください。なお、デフォルト値は 自動 (DHCP)
です。

ホスト名¶
インストーラーでは、ホスト名を入力できます。デフォルトの localhost.localdomain
が良いでしょう。後ほど cloud-init
パッケージをインストールします。これにより、このイメージを使用して展開された新規インスタンスの起動時に、ホスト名が設定されます。
CentOS Web サーバーの指定¶
CentOS のバージョンによっては、ユーザーが CentOS のミラーに応じた、URL や Web サイト、および CentOS のディレクトリをネットワークインストーラーに指定する必要があります。インストーラーが URL だけを要求する場合、http://mirror.umd.edu/centos/7/os/x86_64
は有効な URL の 1 つです。
注釈
mirror.umd.edu
の代わりに、他のミラーを使用することを考えてください。

インストーラーが Web サイト名と CentOS ディレクトリをそれぞれ確認する場合、次のとおり入力します。
Web サイト名:
mirror.umd.edu
CentOS ディレクトリー:
centos/7/os/x86_64
ミラーの一覧は CentOS ミラーページ を参照してください。取得したいミラー Web サイト名の HTTP
リンクをクリックしてください。
ストレージデバイス¶
インストールに使用するデバイスの種類の確認が表示された場合、virtio ブロックデバイス (Virtio Storage Devices) を選択します。
ディスクのパーティション作成¶
ディスクのパーティションは、さまざまな選択肢があります。デフォルトでは、LVM パーティションが使用され、3 つのパーティション (/boot
、/
、swap
) が作成されます。これでうまく動作します。この代わりに、単一の ext4 パーティション を作成し、 /
にマウントしたい場合もあるでしょう。これもうまく動作します。
よくわからない場合、インストーラーのデフォルトのパーティション設定を使用します。基本的には、他のスキーマより良くありませんが、最終パーティションに動的リサイズできるパーティションを作成することにより、他のパーティションの境界をまたがることなくリサイズできます。
インストールオプションの指定¶
デフォルトのオプションを使用して、インストールをステップ実行します。最も簡単な方法は、「最小インストール (Minimal Install
)」インストールを選択することです。SSH サーバーがインストールされます。
Set the root password¶
During the installation, remember to set the root password when prompted.
CD-ROM の取り出しと再起動¶
Wait until the installation is complete.

virsh コマンドを使用して、ディスクを取り出すために、CD-ROM が前に接続されていた場所と同じ場所に、libvirt が空のディスクを接続する必要があります。この場所は、 hda
でしょう。 virsh dumpxml vm-image コマンドを使用して、適切な接続先を確認できます。
# virsh dumpxml centos
<domain type='kvm' id='19'>
<name>centos</name>
...
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hda' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
...
</domain>
virsh
を使用して、ディスクを取り出し、再起動するために、ホストから root として以下のコマンドを実行します。 virt-manager
を使用している場合、以下のコマンドを使用することもできますが、GUI を使用して、ディスクを切断し、手動で停止および起動を実行することもできます。
# virsh attach-disk --type cdrom --mode readonly centos "" hda
# virsh reboot centos
ACPI サービスのインストール¶
ハイパーバイザーがインスタンスを再起動やシャットダウンできるようにするために、ゲストシステムに acpid
サービスをインストールし実行しておく必要があります。
Log in as root to the CentOS guest and run the following commands to install the ACPI service and configure it to start when the system boots:
# yum install acpid
# systemctl enable acpid
メタデータ取得の設定¶
インスタンスは、起動時にいくつかの処理を実行するために、メタデータサービスと通信する必要があります。例えば、インスタンスが SSH 公開鍵を取得し、ユーザーデータエージェントを実行する必要があります。インスタンスが確実にこれらの処理を実行するために、以下の方法のどれかを使用します。
cloud-init
RPM をインストールします。これは、Ubuntu cloud-init パッケージを移植したものです。これが推奨の方法です。メタデータサービスから必要な情報を取得するために、次のセクションに記載されているとおり、
/etc/rc.local
ファイルを編集します。
cloud-init を使用した公開鍵の取得¶
The cloud-init
package automatically fetches the public key
from the metadata server and places the key in an account.
Install cloud-init
inside the CentOS guest by
running:
# yum install cloud-init
The account varies by distribution. On CentOS-based virtual machines,
the account is called centos
.
You can change the name of the account used by cloud-init
by editing the /etc/cloud/cloud.cfg
file and adding a line
with a different user. For example, to configure cloud-init
to put the key in an account named admin
, use the following
syntax in the configuration file:
users:
- name: admin
(...)
パーティションのリサイズをサポートするための cloud-utils-growpart のインストール¶
In order for the root partition to properly resize, install the
cloud-utils-growpart
package, which contains the proper tools
to allow the disk to resize using cloud-init.
# yum install cloud-utils-growpart
公開鍵取得のスクリプトの書き込み (cloud-init なしの場合)¶
cloud-init
パッケージをインストールできない場合、SSH 公開鍵を取得し、それを root アカウントに追加するために、 /etc/rc.d/rc.local
ファイルを編集し、 touch /var/lock/subsys/local
行の前に以下の行を追加します。
if [ ! -d /root/.ssh ]; then
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Fetch public key using HTTP
ATTEMPTS=30
FAILED=0
while [ ! -f /root/.ssh/authorized_keys ]; do
curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key \
> /tmp/metadata-key 2>/dev/null
if [ \$? -eq 0 ]; then
cat /tmp/metadata-key >> /root/.ssh/authorized_keys
chmod 0600 /root/.ssh/authorized_keys
restorecon /root/.ssh/authorized_keys
rm -f /tmp/metadata-key
echo "Successfully retrieved public key from instance metadata"
echo "*****************"
echo "AUTHORIZED KEYS"
echo "*****************"
cat /root/.ssh/authorized_keys
echo "*****************"
fi
done
注釈
いくつかの VNC クライアントは、コロン (:
) を セミコロン (;
) に、アンダースコア (_
) をハイフン (-
) に置き換えます。http;
ではなく、http:
であること、authorized-keys
ではなく authorized_keys
であることを確認してください。
注釈
上記のスクリプトは、メタデータサーバーから SSH 公開鍵のみを取得します。新しいインスタンスの要求時に、ユーザーが指定できるオプションデータである「ユーザーデータ」の取得を行いません。ユーザーデータは、インスタンスの起動時に、カスタムスクリプトを実行するためにしばしば使用されます。
OpenStack メタデータサービスは、Amazon EC2 メタデータサービスの 2009-04-04 版と互換性があります。ユーザーデータの取得方法に関する詳細は Using Instance Metadata にある Amazon EC2 のドキュメントを参照してください。
zeroconf ルートの無効化¶
インスタンスがメタデータサービスにアクセスできるようにするために、デフォルトの zeroconf ルートを無効化する必要があります。
# echo "NOZEROCONF=yes" >> /etc/sysconfig/network
コンソールの設定¶
nova console-log コマンドを CentOS 7 で正しく動作させるためには、以下の作業が必要な場合があります。
/etc/default/grub
ファイルを編集し、GRUB_CMDLINE_LINUX
オプションを設定します。rhgb quiet
を削除し、オプションにconsole=tty0 console=ttyS0,115200n8
を追加します。For example:
... GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap console=tty0 console=ttyS0,115200n8"
以下のコマンドを実行し、設定を反映します。
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-229.14.1.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.14.1.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.4.2.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-229.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-605f01abef434fb98dd1309e774b72ba Found initrd image: /boot/initramfs-0-rescue-605f01abef434fb98dd1309e774b72ba.img done
インスタンスのシャットダウン¶
インスタンス内で root として以下を実行します。
# poweroff
クリーンアップ (MAC アドレスの詳細の削除)¶
オペレーティングシステムは、インストール中に仮想 Ethernet カードの MAC アドレスを /etc/sysconfig/network-scripts/ifcfg-eth0
などの場所に記録します。しかしながら、イメージが起動するたびに、仮想 Ethernet カードの MAC アドレスは別の値になります。そのため、この情報は設定ファイルから削除する必要があります。
virt-sysprep というユーティリティーがあります。これは、MAC アドレス参照の削除など、さまざまなクリーンアップ作業を実行します。決まった場所にある仮想マシンイメージをクリーンアップします。
# virt-sysprep -d centos
libvirt ドメインの定義削除¶
これで、イメージを Image service にアップロードできます。今後は、この仮想マシンイメージは libvirt により管理する必要がありません。virsh undefine vm-image コマンドを使用して libvirt に通知します。
# virsh undefine centos
イメージの完成¶
The underlying image file that you created with the
qemu-img create command is ready to be uploaded.
For example, you can upload the /tmp/centos.qcow2
image to the Image service by using the openstack image create
command. For more information, see the
python-openstackclient command list.