2016年1月3日日曜日

Oracle OpenStack R1 で All-in-one 構成時の注意点。

Oracle Linux 6 で、Oracle OpenStack R1 の All-in-one 構成を試してみました。
All-in-one 構成の時は、Oracle VM Server ではなく KVM 一択になります。
ただし今回は VirtualBox 環境なので、Oracle Linux での仮想化は KVM ではなく QEMU です。

「packstack --allinone ~」といった感じで Oracle OpenStack R1 を All-in-One 構成にしたのですが、
Nova インスタンス(QEMU の VM)を起動するときにエラーになってしまいました。
これは、Oracle OpenStack の Yum リポジトリに含まれる
libvirt まわりの RPM のバージョンが合わない問題のようです。
※OTN に投稿がありました。

ということで、対処した様子を残しておこうと思います。

今回の環境。

OS は、Oracle Linux 6.7 (64bit) です。
[root@osol01 ~]# cat /etc/oracle-release
Oracle Linux Server release 6.7

今回の Yum リポジトリ設定です。

Oracle OpenStack のリポジトリ
Oracle OpenStack for Oracle Linux は、R1 です。
リポジトリには public_ol6_openstack という名前がつけられています。
[root@osol01 ~]# cat /etc/yum.repos.d/public-yum-ol6-openstack.repo
[public_ol6_openstack]
name=Latest OpenStack 1.0 packages for Oracle Linux 6 ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/openstack10/x86_64
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

Oracle Linux 6.x のリポジトリ
無効になっているもの(enabled=0)は省略しています。
[root@osol01 ~]# cat /etc/yum.repos.d/public-yum-ol6.repo
[public_ol6_latest]
name=Oracle Linux $releasever Latest ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
(省略)
[public_ol6_UEKR3_latest]
name=Unbreakable Enterprise Kernel Release 3 for Oracle Linux $releasever ($basear
ch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEKR3/latest/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=$uekr3
(省略)

※$uekr3 という変数についてはこちらをどうぞ。


普通に packstack した場合の様子。

Oracle OpenStack R1 は、packstack で環境構築ができますが、
All-in-one の場合は、ただ packstack を実行してしまうと
Nova インスタンスを起動(nova boot ~)するときにエラーになります。

/var/log/nova/nova-compute.log ファイルにあったエラーメッセージです。
2015-11-27 22:49:51.851 3159 ERROR nova.compute.manager [req-09eb0f66-a873-471a-8952-a7d525db6e1d ead4bfefdc6244f19d1d8eb159e27342 ff620abae02c48e3873ddf39b8f6451a] [instance: b1e296fa-7663-4ab9-9aa1-488cf9dbc558] Error: internal error: unable to execute QEMU command 'qom-list': The command qom-list has not been found

そして virt-manager で VM を起動しようとしても、同様のエラーになります。
インストールを完了できません: 'internal error: unable to execute QEMU command 'qom-list': The command qom-list has not been found'

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 44, in cb_wrapper
    callback(asyncjob, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/create.py", line 1928, in do_install
    guest.start_install(False, meter=meter)
  File "/usr/lib/python2.6/site-packages/virtinst/Guest.py", line 1229, in start_install
    noboot)
  File "/usr/lib/python2.6/site-packages/virtinst/Guest.py", line 1297, in _create_guest
    dom = self.conn.createLinux(start_xml or final_xml, 0)
  File "/usr/lib64/python2.6/site-packages/libvirt.py", line 2897, in createLinux
    if ret is None:raise libvirtError('virDomainCreateLinux() failed', conn=self)
libvirtError: internal error: unable to execute QEMU command 'qom-list': The command qom-list has not been found



対処方法。

Oracle OpenStack の Yum リポジトリ(今回の設定では「public_ol6_openstack」という名前) にある
RPM だと、libvirt~ のバージョンが合わないようなので、packstack 実行前に
OpenStack 用ではないリポジトリから手動で RPM をインストールしておきます。

まず、OpenStack リポジトリに含まれる、関連 RPM のバージョンです。
これらの RPM は packstack の実行でもインストールされるはずです。
[root@osol01 ~]# yum repolist
読み込んだプラグイン:ulninfo
リポジトリー ID         リポジトリー名                                      状態
public_ol6_UEKR3_latest Unbreakable Enterprise Kernel Release 3 for Oracle     514
public_ol6_latest       Oracle Linux 6Server Latest (x86_64)                32,643
public_ol6_openstack    Latest OpenStack 1.0 packages for Oracle Linux 6 (x    640
repolist: 33,797
[root@osol01 ~]# yum list libvirt libvirt-client.x86_64 python-libguestfs libguestfs libguestfs-mount libvirt-python
読み込んだプラグイン:ulninfo
利用可能なパッケージ
libguestfs.x86_64                 1:1.20.11-14.el6            public_ol6_latest
libguestfs-mount.x86_64           1:1.7.17-26.el6             public_ol6_latest
libvirt.x86_64                    1.1.3-1.100.3.el6           public_ol6_openstack
libvirt-client.x86_64             1.1.3-1.100.3.el6           public_ol6_openstack
libvirt-python.x86_64             1.1.3-1.100.3.el6           public_ol6_openstack
python-libguestfs.x86_64          1:1.20.11-14.el6            public_ol6_latest

そして、OpenStack リポジトリなしの、関連 RPM のバージョンです。
OTN で指摘されていたいくつかの livbirt~ の RPM のバージョンが
Oracle Linux 6 のリポジトリからダウンロードされ、バージョンも異なります。
[root@osol01 ~]# yum --disablerepo=public_ol6_openstack repolist
読み込んだプラグイン:ulninfo
リポジトリー ID         リポジトリー名                                      状態
public_ol6_UEKR3_latest Unbreakable Enterprise Kernel Release 3 for Oracle     514
public_ol6_latest       Oracle Linux 6Server Latest (x86_64)                32,643
repolist: 33,157
[root@osol01 ~]# yum --disablerepo=public_ol6_openstack list libvirt libvirt-clien
t.x86_64 python-libguestfs libguestfs libguestfs-mount libvirt-python
読み込んだプラグイン:ulninfo
利用可能なパッケージ
libguestfs.x86_64                 1:1.20.11-14.el6               public_ol6_latest
libguestfs-mount.x86_64           1:1.7.17-26.el6                public_ol6_latest
libvirt.x86_64                    0.10.2-54.0.1.el6_7.2          public_ol6_latest
libvirt-client.x86_64             0.10.2-54.0.1.el6_7.2          public_ol6_latest
libvirt-python.x86_64             0.10.2-54.0.1.el6_7.2          public_ol6_latest
python-libguestfs.x86_64          1:1.20.11-14.el6               public_ol6_latest

Oracle OpenStack ではないリポジトリから、事前にインストールしておきます。
※今回は、packstack の RPM インストールや、Oracle Linux での事前準備は省略しています。
[root@osol01 ~]# yum --disablerepo=public_ol6_openstack install -y libvirt libvirt-client.x86_64 python-libguestfs libguestfs libguestfs-mount libvirt-python

上記の RPM をインストールしたうえで、packstack を実行します。
[root@osol01 ~]# packstack --allinone
Welcome to Installer setup utility
Packstack changed given value  to required value /root/.ssh/id_rsa.pub

Installing:
Clean Up                                             [ DONE ]
root@10.0.2.15's password: ★パスワード入力
Setting up ssh keys                                  [ DONE ]
Discovering hosts' details                           [ DONE ]
Adding pre install manifest entries                  [ DONE ]
Adding MySQL manifest entries                        [ DONE ]
Adding AMQP manifest entries                         [ DONE ]
Adding Keystone manifest entries                     [ DONE ]
Adding Glance Keystone manifest entries              [ DONE ]
Adding Glance manifest entries                       [ DONE ]
Installing dependencies for Cinder                   [ DONE ]
Adding Cinder Keystone manifest entries              [ DONE ]
Adding Cinder manifest entries                       [ DONE ]
Checking if the Cinder server has a cinder-volumes vg[ DONE ]
Adding Nova API manifest entries                     [ DONE ]
Adding Nova Keystone manifest entries                [ DONE ]
Adding Nova Cert manifest entries                    [ DONE ]
Adding Nova Conductor manifest entries               [ DONE ]
Creating ssh keys for Nova migration                 [ DONE ]
Gathering ssh host keys for Nova migration           [ DONE ]
Adding Nova Compute manifest entries                 [ DONE ]
Adding Nova Scheduler manifest entries               [ DONE ]
Adding Nova VNC Proxy manifest entries               [ DONE ]
Adding Nova Common manifest entries                  [ DONE ]
Adding Openstack Network-related Nova manifest entries[ DONE ]
Adding Neutron API manifest entries                  [ DONE ]
Adding Neutron Keystone manifest entries             [ DONE ]
Adding Neutron L3 manifest entries                   [ DONE ]
Adding Neutron L2 Agent manifest entries             [ DONE ]
Adding Neutron DHCP Agent manifest entries           [ DONE ]
Adding Neutron LBaaS Agent manifest entries          [ DONE ]
Adding Neutron Metadata Agent manifest entries       [ DONE ]
Adding OpenStack Client manifest entries             [ DONE ]
Adding Horizon manifest entries                      [ DONE ]
Adding post install manifest entries                 [ DONE ]
Preparing servers                                    [ DONE ]
Installing Dependencies                              [ DONE ]
Copying Puppet modules and manifests                 [ DONE ]
Applying 10.0.2.15_prescript.pp
10.0.2.15_prescript.pp:                              [ DONE ]
Applying 10.0.2.15_mysql.pp
Applying 10.0.2.15_amqp.pp
10.0.2.15_mysql.pp:                                  [ DONE ]
10.0.2.15_amqp.pp:                                   [ DONE ]
Applying 10.0.2.15_keystone.pp
Applying 10.0.2.15_glance.pp
Applying 10.0.2.15_cinder.pp
10.0.2.15_keystone.pp:                               [ DONE ]
10.0.2.15_glance.pp:                                 [ DONE ]
10.0.2.15_cinder.pp:                                 [ DONE ]
Applying 10.0.2.15_api_nova.pp
10.0.2.15_api_nova.pp:                               [ DONE ]
Applying 10.0.2.15_nova.pp
10.0.2.15_nova.pp:                                   [ DONE ]
Applying 10.0.2.15_neutron.pp
10.0.2.15_neutron.pp:                                [ DONE ]
Applying 10.0.2.15_osclient.pp
Applying 10.0.2.15_horizon.pp
10.0.2.15_osclient.pp:                               [ DONE ]
10.0.2.15_horizon.pp:                                [ DONE ]
Applying 10.0.2.15_postscript.pp
10.0.2.15_postscript.pp:                             [ DONE ]
Applying Puppet manifests                            [ DONE ]
Finalizing                                           [ DONE ]

 **** Installation completed successfully ******


Additional information:
 * A new answerfile was created in: /root/packstack-answers-20160103-194421.txt
 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
 * File /root/keystonerc_admin has been created on OpenStack client host 10.0.2.15. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://10.0.2.15/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * Because of the kernel update the host 10.0.2.15 requires reboot.
 * The installation log file is available at: /var/tmp/packstack/20160103-194421-ZHbjHu/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20160103-194421-ZHbjHu/manifests

OS を再起動しておきます。
[root@osol01 ~]# reboot

Nova インスタンスが、起動できるようになっているはずです。
Glance イメージ作成 → Nova フレーバー の追加 ~ Nova インスタンスの起動をします。
※表示結果は省略しています。
[root@osol01 ~]# source keystonerc_admin
[root@osol01 ~(keystone_admin)]# glance image-create --name=cirros --disk-format=qcow2 --container-format=bare --copy-from="http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img"
[root@osol01 ~(keystone_admin)]# nova flavor-create custom01 6 64 0 1
[root@osol01 ~(keystone_admin)]# nova boot --image=cirros --flavor=6 vm01

Nova インスタンスの起動が確認できるはずです。
[root@osol01 ~(keystone_admin)]# nova list
+--------------------------------------+------+--------+------------+-------------+----------+
| ID                                   | Name | Status | Task State | Power State | Networks |
+--------------------------------------+------+--------+------------+-------------+----------+
| c559c115-f52f-4b3c-b399-f0a5799d3043 | vm01 | ACTIVE | -          | Running     |          |
+--------------------------------------+------+--------+------------+-------------+----------+

virsh コマンドでも、インスタンスが実行中(running)になります。
※ただし QEMU/KVM での VM 名は、Nova インスタンスにつけた名前とは異なります。
[root@osol01 ~(keystone_admin)]# virsh list
 Id    名前                         状態
----------------------------------------------------
 1     instance-00000001              実行中

とりあえず、VM が起動できるようになります。
実は今回はマルチホーム構成にしていて、実際に使用できるようにするには packstack や
OpenStack 関連の設定ファイルでのアドレス指定などが必要なのですが、
それは別の機会に・・・

以上、Oracle OpenStack R1 の All-in-one 構成での注意点でした。

0 件のコメント:

コメントを投稿