1.2. イメージの管理
OpenStack Image サービス (glance) は、ディスクおよびサーバーイメージの検出、登録、および配信のサービスを提供します。サーバーイメージのコピーやスナップショットを作成して直ちに保管する機能を提供します。保管したイメージは、テンプレートとして使用し、新規サーバーを迅速に稼働させるのに使用することができます。これはサーバーのオペレーティングシステムをインストールしてサービスを個別に設定するよりも一貫性の高い方法です。
1.2.1. イメージの作成
本項では、Red Hat Enterprise Linux 7、Red Hat Enterprise Linux 6 または Windows の ISO ファイルを使用して、QCOW2 形式の OpenStack 互換イメージを手動で作成する手順について説明します。
1.2.1.1. Red Hat OpenStack Platform における KVM ゲストイメージの使用
すでに準備済みの RHEL KVM ゲスト QCOW2 イメージを使用することができます。
これらのイメージは、cloud-init
を使用して設定されます。適切に機能させるには、ec2 互換のメタデータサービスを利用して SSH キーをプロビジョニングする必要があります。
準備済みの Windows KVM ゲスト QCOW2 イメージはありません。
KVM ゲストイメージでは、以下の点に注意してください。
-
KVM ゲストイメージでは
root
アカウントが無効になっていますが、cloud-user
という名前の特別なユーザーにsudo
アクセスが許可されています。 -
このイメージには
root
パスワードは設定されていません。
root
パスワードは、/etc/shadow
で 2 番目のフィールドに !!
と記載することによりロックされます。
OpenStack インスタンスでは、OpenStack Dashboard またはコマンドラインから ssh キーペアを生成し、その鍵の組み合わせを使用して、インスタンスに対して root として SSH 公開認証を実行することを推奨します。
インスタンスの起動時には、この公開鍵がインスタンスに挿入されます。続いて、キーペア作成時にダウンロードされた秘密鍵を使用して認証を行うことができます。
キーペアを使用しない場合には、「インスタンスへの admin
パスワード挿入」の手順を使用して設定されている admin
パスワードを使用することができます。
Red Hat Enterprise Linux または Windows のカスタムイメージを作成する場合は、「Red Hat Enterprise Linux 7 イメージの作成」、「Red Hat Enterprise Linux 6 イメージの作成」、または「Windows イメージの作成」を参照してください。
1.2.1.2. Red Hat Enterprise Linux または Windows のカスタムイメージの作成
前提条件
- イメージを作成する Linux ホストマシン。これは、Linux パッケージをインストール/実行することのできる任意のマシンです。
-
libvirt、virt-manager (
dnf groupinstall -y @virtualization
のコマンドを実行)。ゲストオペレーティングシステムを作成するのに必要な全パッケージがインストールされます。 -
Libguestfs ツール (
dnf install -y libguestfs-tools-c
のコマンドを実行)。仮想マシンイメージにアクセスして変更を行うためのツールセットがインストールされます。 - Red Hat Enterprise Linux 7 もしくは 6 ISO ファイル (RHEL 7.2 Binary DVD もしくは RHEL 6.8 Binary DVD を参照)、または Windows ISO ファイル。Windows ISO ファイルがない場合には、Microsoft TechNet Evaluation Center に移動して評価版イメージをダウンロードしてください。
-
キックスタート
ファイルを編集する必要がある場合にはテキストエディター (RHEL のみ)
アンダークラウドに libguestfs-tools
パッケージをインストールする場合は、アンダークラウドの tripleo_iscsid
サービスとのポートの競合を避けるために iscsid.socket
を無効にします。
$ sudo systemctl disable --now iscsid.socket
以下の手順では、プロンプトに [root@host]#
と表示されているコマンドはすべて、お使いのホストマシンで実行する必要があります。
1.2.1.2.1. Red Hat Enterprise Linux 7 イメージの作成
本項では、Red Hat Enterprise Linux 7 の ISO ファイルを使用して、QCOW2 形式の OpenStack 互換イメージを手動で作成する手順について説明します。
以下に示したように
virt-install
でインストールを開始します。[root@host]# qemu-img create -f qcow2 rhel7.qcow2 8G [root@host]# virt-install --virt-type kvm --name rhel7 --ram 2048 \ --cdrom /tmp/rhel-server-7.2-x86_64-dvd.iso \ --disk rhel7.qcow2,format=qcow2 \ --network=bridge:virbr0 --graphics vnc,listen=0.0.0.0 \ --noautoconsole --os-type=linux --os-variant=rhel7
このコマンドによりインスタンスが起動し、インストールプロセスが開始されます。
注記インスタンスが自動的に起動しない場合には、
virt-viewer
のコマンドを実行して、コンソールを確認します。[root@host]# virt-viewer rhel7
以下の手順に従って、仮想マシンを設定します。
-
インストーラーの初期起動メニューで、
Install Red Hat Enterprise Linux 7
.X のオプションを選択します。 - 適切な 言語 および キーボード オプションを選択します。
- インストールに使用するデバイスタイプを尋ねるプロンプトが表示されたら、自動検出したインストールメディア を選択します。
- インストール先を尋ねるプロンプトが表示されたら、ローカルの標準ディスク を選択します。 その他のストレージタイプオプションには、自動構成のパーティション構成 を選択します。
- ソフトウェアのオプションには、最小限のインストール を選択します。
-
ネットワークとホスト名の設定では、イーサネットに
eth0
を選択し、デバイスのホスト名
を指定します。デフォルトのホスト名はlocalhost.localdomain
です。 -
root
パスワードを選択します。 インストールプロセスが完了すると、完了しました! の画面が表示されます。
-
インストーラーの初期起動メニューで、
- インストールが完了した後には、インスタンスを再起動して、root ユーザーとしてログインします。
/etc/sysconfig/network-scripts/ifcfg-eth0
ファイルを編集して、以下の値のみが記載されている状態にします。TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no
- マシンを再起動します。
コンテンツ配信ネットワークにマシンを登録します。
# sudo subscription-manager register # sudo subscription-manager attach --pool=Valid-Pool-Number-123456 # sudo subscription-manager repos --enable=rhel-7-server-rpms
システムを更新します。
# dnf -y update
cloud-init
パッケージをインストールします。# dnf install -y cloud-utils-growpart cloud-init
/etc/cloud/cloud.cfg
設定ファイルを編集して、cloud_init_modules
の下に以下を追加します。- resolv-conf
resolv-conf
オプションは、インスタンスの初回起動時にresolv.conf
を自動的に設定します。このファイルには、nameservers
、domain
、その他のオプションなどのインスタンスに関連した情報が記載されています。/etc/sysconfig/network
に以下の行を追加し、EC2 メタデータサービスへのアクセスで問題が発生するのを回避します。NOZEROCONF=yes
コンソールメッセージが Dashboard の
ログ
タブおよびnova console-log
の出力に表示されるようにするには、以下のブートオプションを/etc/default/grub
ファイルに追記します。GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
grub2-mkconfig
コマンドを実行します。# grub2-mkconfig -o /boot/grub2/grub.cfg
以下のような出力が表示されます。
Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-229.7.2.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.7.2.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-121.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-121.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-b82a3044fb384a3f9aeacf883474428b Found initrd image: /boot/initramfs-0-rescue-b82a3044fb384a3f9aeacf883474428b.img done
仮想マシンの登録を解除して、作成されるイメージをベースにクローン作成される全インスタンスに同じサブスクリプション情報が含まれないようにします。
# subscription-manager repos --disable=* # subscription-manager unregister # dnf clean all
インスタンスの電源をオフにします。
# poweroff
virt-sysprep
コマンドでイメージのリセットおよびクリーニングをして、問題なくインスタンスの作成に使用できるようにします。[root@host]# virt-sysprep -d rhel7
virt-sparsify
コマンドを使用してイメージのサイズを縮小します。このコマンドにより、ディスクイメージ内の空き容量は、ホスト内の空き容量に戻ります。[root@host]# virt-sparsify --compress /tmp/rhel7.qcow2 rhel7-cloud.qcow2
このコマンドを実行すると、その場所に
rhel7-cloud.qcow2
ファイルが作成されます。
rhel7-cloud.qcow2
イメージファイルを Image サービスにアップロードする準備が整いました。Dashboard を使用して OpenStack デプロイメントにこのイメージをアップロードする方法については、「イメージのアップロード」を参照してください。
1.2.1.2.2. Red Hat Enterprise Linux 6 イメージの作成
本項では、Red Hat Enterprise Linux 6 の ISO ファイルを使用して、QCOW2 形式の OpenStack 互換イメージを手動で作成する手順について説明します。
virt-install
でインストールを開始します。[root@host]# qemu-img create -f qcow2 rhel6.qcow2 4G [root@host]# virt-install --connect=qemu:///system --network=bridge:virbr0 \ --name=rhel6 --os-type linux --os-variant rhel6 \ --disk path=rhel6.qcow2,format=qcow2,size=10,cache=none \ --ram 4096 --vcpus=2 --check-cpu --accelerate \ --hvm --cdrom=rhel-server-6.8-x86_64-dvd.iso
このコマンドによりインスタンスが起動し、インストールプロセスが開始されます。
注記インスタンスが自動的に起動しない場合には、
virt-viewer
のコマンドを実行して、コンソールを確認します。[root@host]# virt-viewer rhel6
仮想マシンを以下のように設定します。
インストーラーの初期起動メニューで、Install or upgrade an existing system のオプションを選択します。 インストールのプロンプトに従って順に進みます。デフォルト値を受け入れます。
インストーラーは、ディスクの有無を確認して、インストール前にインストールメディアのテストを行うかどうかを決定するように促します。テストを実行するには OK を、テストを行わずに続行するには Skip を選択します。
- 適切な 言語 および キーボード オプションを選択します。
- インストールに使用するデバイスタイプを尋ねるプロンプトが表示されたら、基本ストレージデバイス を選択します。
-
デバイスの
ホスト名
を指定します。デフォルトのホスト名はlocalhost.localdomain
です。 -
タイムゾーン と
root
パスワードを指定します。 - ディスクの空き容量に応じて、インストールのタイプを選択します。
- SSH サーバーをインストールする 基本サーバー インストールを選択します。
- インストールプロセスが完了し、おめでとうございます。Red Hat Enterprise Linux のインストールが完了しました。の画面が表示されます。
-
インスタンスを再起動して、
root
ユーザーとしてログインします。 /etc/sysconfig/network-scripts/ifcfg-eth0
ファイルを編集して、以下の値のみが記載されている状態にします。TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no
- マシンを再起動します。
コンテンツ配信ネットワークにマシンを登録します。
# sudo subscription-manager register # sudo subscription-manager attach --pool=Valid-Pool-Number-123456 # sudo subscription-manager repos --enable=rhel-6-server-rpms
システムを更新します。
# dnf -y update
cloud-init
パッケージをインストールします。# dnf install -y cloud-utils-growpart cloud-init
/etc/cloud/cloud.cfg
設定ファイルを編集して、cloud_init_modules
の下に以下を追加します。- resolv-conf
resolv-conf
オプションは、インスタンスの初回起動時にresolv.conf
設定ファイルを自動的に設定します。このファイルには、nameservers
、domain
、その他のオプションなどのインスタンスに関連した情報が記載されています。ネットワークの問題が発生するのを防ぐために、以下のように
/etc/udev/rules.d/75-persistent-net-generator.rules
ファイルを作成します。# echo "#" > /etc/udev/rules.d/75-persistent-net-generator.rules
これにより、
/etc/udev/rules.d/70-persistent-net.rules
ファイルが作成されるのを防ぎます。/etc/udev/rules.d/70-persistent-net.rules
が作成されてしまうと、スナップショットからのブート時にネットワークが適切に機能しなくなる可能性があります (ネットワークインターフェースが「eth0」ではなく「eth1」として作成され、IP アドレスが割り当てられません)。/etc/sysconfig/network
に以下の行を追加し、EC2 メタデータサービスへのアクセスで問題が発生するのを回避します。NOZEROCONF=yes
コンソールメッセージが Dashboard の
ログ
タブおよびnova console-log
の出力に表示されるようにするには、以下のブートオプションを/etc/grub.conf
ファイルに追記します。console=tty0 console=ttyS0,115200n8
仮想マシンの登録を解除して、作成されるイメージをベースにクローン作成されるインスタンスすべてに同じサブスクリプション情報が含まれないようにします。
# subscription-manager repos --disable=* # subscription-manager unregister # dnf clean all
インスタンスの電源をオフにします。
# poweroff
virt-sysprep
コマンドでイメージのリセットおよびクリーニングをして、問題なくインスタンスの作成に使用できるようにします。[root@host]# virt-sysprep -d rhel6
virt-sparsify
コマンドを使用してイメージのサイズを縮小します。このコマンドにより、ディスクイメージ内の空き容量は、ホスト内の空き容量に戻ります。[root@host]# virt-sparsify --compress rhel6.qcow2 rhel6-cloud.qcow2
このコマンドを実行すると、その場所に新しい
rhel6-cloud.qcow2
ファイルが作成されます。注記インスタンスに適用されているフレーバーのディスクスペースに応じて、イメージをベースとするインスタンスのパーティションを手動でリサイズする必要があります。
rhel6-cloud.qcow2
イメージファイルを Image サービスにアップロードする準備が整いました。Dashboard を使用して OpenStack デプロイメントにこのイメージをアップロードする方法については、「イメージのアップロード」を参照してください。
1.2.1.2.3. Windows イメージの作成
本項では、Windows の ISO ファイルを使用して、QCOW2 形式の OpenStack 互換イメージを手動で作成する手順について説明します。
以下に示したように
virt-install
でインストールを開始します。[root@host]# virt-install --name=name \ --disk size=size \ --cdrom=path \ --os-type=windows \ --network=bridge:virbr0 \ --graphics spice \ --ram=RAM
以下のように
virt-install
パラメーターの値を置き換えます。- name: Windows ゲストに指定する必要のある名前
- size: ディスクのサイズ (GB)
- path: Windows のインストール ISO ファイルへのパス
RAM: 要求するメモリー容量 (MB)
注記--os-type=windows
パラメーターにより、Windows ゲストのクロックが正しく設定され、Hyper-V エンライトメント機能が有効化されるようになります。デフォルトでは、
virt-install
は/var/lib/libvirt/images/
name
.qcow2
としてゲストイメージを保存します。ゲストイメージを別の場所に保存するには、以下のように--disk
のオプションを変更してください。--disk path=filename,size=size
filename は、ゲストイメージを保存する必要のあるファイル名 (およびオプションでそのパス) に置き換えてください。たとえば、
path=win8.qcow2,size=8
は現在の作業ディレクトリーにwin8.qcow2
という名前の 8 GB のファイルを作成します。ヒントゲストが自動的に起動しない場合には、
virt-viewer
のコマンドを実行して、コンソールを確認します。[root@host]# virt-viewer name
- Windows システムのインストールは、本書の対象範囲外となります。Windows のインストール方法に関する説明は、適切な Microsoft のドキュメントを参照してください。
-
新規インストールした Windows システムで仮想化ハードウェアを使用できるようにするには、virtio ドライバー をインストールしなければならない場合があります。これには、まずホストシステムで
virtio-win
パッケージをインストールします。このパッケージには virtio ISO イメージが含まれており、そのイメージを CD-ROM ドライブとして Windows ゲストにアタッチします。virtio-win
パッケージをインストールするには、ゲストに virtio ISO イメージを追加して、virtio ドライバーをインストールする必要があります。『仮想化の設定および管理』の「Windows 仮想マシン用の KVM 準仮想化ドライバーのインストール」を参照してください。 Windows システムで Cloudbase-Init をダウンロード、実行して、設定を完了します。Cloudbase-Init のインストールの最後に、
Run Sysprep
とShutdown
チェックボックスを選択します。Sysprep
ツールは、特定の Microsoft サービスで使用する OS ID を生成して、ゲストを一意にします。重要Red Hat は Cloudbase-Init に関するテクニカルサポートは提供しません。問題が発生した場合には、contact Cloudbase Solutions からお問い合わせください。
Windows システムがシャットダウンしたら、name.qcow2
イメージファイルを Image サービスにアップロードすることができます。Dashboard またはコマンドラインを使用して OpenStack デプロイメントにこのイメージをアップロードする方法については、「イメージのアップロード」を参照してください。
1.2.1.3. libosinfo の使用
Image サービス (glance) はイメージ用に libosinfo のデータを処理して、インスタンスに最適な仮想ハードウェアをより簡単に設定できるようにすることができます。これは、libosinfo 形式のオペレーティングシステム名前を glance イメージに追加することによって行うことができます。
以下の例では、ID
654dbfd5-5c01-411f-8599-a27bd344d79b
のイメージがrhel7.2
という libosinfo の値を使用するように指定します。$ openstack image set 654dbfd5-5c01-411f-8599-a27bd344d79b --property os_name=rhel7.2
その結果、Compute は、
654dbfd5-5c01-411f-8599-a27bd344d79b
のイメージを使用してインスタンスがビルドされる際に必ず、rhel7.2
向けに最適化された仮想ハードウェアを提供するようになります。注記libosinfo
の値の完全な一覧は、libosinfo プロジェクトを参照してください (https://gitlab.com/libosinfo/osinfo-db/tree/master/data/os)。