Ubuntu Weekly Recipe

第629回 数分でオールインワンなプライベートクラウドを構築できるminiONE

この記事を読むのに必要な時間:およそ 7 分

本連載ではこれまでにも第483回UbuntuとOpenNebulaでもういちどクラウド環境を構築してみようなどで,クラウド構築・管理ツールであるOpenNebulaを紹介してきました。今回はこのOpenNebulaをコマンド一発で導入できる「miniONE」を紹介しましょう。

OpenNebulaとminiONE

OpenNebulaはプライベートクラウドを構築・管理するためのソフトウェアです。プライベートクラウドの構築・管理ツールといえばOpenStackが有名ですが,OpenNebulaはそれよりも古くから存在し,Eucalyptusと同じぐらいの歴史を持っています。さらに,もともとはKVMベースのツールだったものの,最近ではLXDやFirecrackerをサポートしたり,Kubernetes,Docker Hubとの連携もできるようになるなど,日進月歩なクラウドインフラストラクチャーのテクノロジーに追随しています。先日には広く使われるようになったことをうけて,よりサポートを充実させたエンタープライズ版をアナウンスするなど,今ではもう単なる「OpenStackの代替」だけでは表せない存在になりました。

OpenNebulaについては大田さんが本連載でも何度か取り上げています。第484回で紹介した5.4に比べると,現在のバージョンは5.12※1まであがってはいるものの,インストール方法や使用感はそこまで大きく変わっていません。引き続きリストアップした記事のうち,5.0以降の話が参考になるはずです。

※1
OpenNebulaのリリース名は伝統的に星雲の名前が付けられているようです。OpenNebula 5.12ではペルセウス座GK星が1901年に起こした新星爆発の残がいである「The Firework Nebula」から「Firework」名付けられました。本リリースにおいてマイクロ仮想マシン技術であるFirecrackerに対応したことが「花火」の名前になった理由のようです。

今回紹介するのはOpenNebulaのインストーラーであるminiONEです。miniONEを実行することで,システムシステム上にバックエンドからフロントエンドに至るまでOpenNebulaに必要なパッケージ・ソフトウェアをコマンド一発で「まるっと一式」インストールしてくれます。身も蓋もない言い方をすると,OpenStackで言うところのDevStackMicroStackKubernetesで言うところのMinikubeMickroK8sみたいなものです。

miniONEを使うと,ほんの数分でOpenNebula環境が整います。しかもインストーラーそのものは単一ファイルのシェルスクリプトとして構築されているため,⁠インストーラーのインストール」も不要です。さらにKVMだけでなく,LXDやFirecrackerにも対応しています。ただしその仕組み上,プロダクション用途や大規模で柔軟な構築には向きません。あくまで「とりあえずOpenNebulaが動くマシンが欲しい」場合にのみ役に立つツールだと考えておきましょう。

今回はこのminiONEを使って,OpenNebulaをインストールしてみます。

miniONEの実行

最初にminiONEをダウンロードした上で,そのシェルスクリプトを管理者権限で実行します。

$ wget 'https://github.com/OpenNebula/minione/releases/latest/download/minione'
$ sudo bash minione --marketapp-name='Ubuntu 20.04'

少し待てばインストールを実行するかの確認メッセージが表示されるので「yes」と答えてください。

Install  augeas-tools apt-transport-https iptables-persistent netfilter-persistent

Do you agree? [yes/no]:
yes

(中略)

### Report
OpenNebula 5.12 was installed
Sunstone [the webui] is running on:
  http://192.0.2.1/
Use following to login:
  user: oneadmin
  password: BozivjTFKf

あとはしばらく放置すると,インストールが完了し,ウェブインターフェース用のURLとアカウント情報が表示されます。ウェブブラウザーからログインすれば,ウェブインターフェース(Sunstone)経由でOpenNebulaを管理できるようになります。

図1 ブラウザでアクセスするとログイン画面になるので表示されているユーザーとパスワードでログインする

画像

図2 左の「Settings」から「Language」を選択するとUIを日本語にすることも可能

画像

これだけです。これだけで,今回の記事で伝えたかった「OpenNebulaは簡単にインストールできる」の説明が完了しました。それでは皆さん,良いOpenNebulaライフを。

……と終わるわけにもいかないので,もう少し詳しく説明しましょう。まずはminioneスクリプトについて簡単に紹介したあと,遭遇しやすいトラブルとその回避方法を紹介します。まずはminiONEの実行環境についてです。仮想マシンの管理システムである以上,OpenNebulaを動かすためにはそれなりのスペックが必要です。

  • KVMを動かすなら仮想化支援機構が動くCPU
  • 4GiB以上のメモリー
  • 20GiB以上のストレージ
  • インストールするための管理者権限

上記は最低限必要なスペックとなります。KVMではなくLXDを使うならもう少し余裕はあるものの,十分なストレージ容量が必要であること自体は変わりありません。

さらにminiONEには各種コマンドラインオプションによって,インストール時の挙動を変更できます。

$ bash minione --help
-h --help                           List of supported arguments
-v --verbose                        Be verbose
-f --force                          Skip non-fatal validation errors
--yes                               Don't ask

--version [5.12]                    OpenNebula version to install
--lxd                               Setup host to run LXD containers
--firecracker                       Setup host to run Firecracker micro-VMs
--frontend                          Install only frontend, skip node setup,
                                    no networking configuration
--node                              Install only node, edge(Packet) only

--password [random generated]       Initial password for oneadmin
--ssh-pubkey /.ssh/id_rsa.pub]    User ssh public key
--vm-password [opennebula]          Root password for virtual machine
--sunstone-port [80]                Setup sunstone port
--marketapp-name [CentOS 7]         Name of Marketplace appliance to import
--fc-marketapp-name [alpine]        Dockerhub image for Firecracker
--fc-kernel-name [Kernel 5.4 x86_64 - Firecracker] Market app kernel name for Firecracker

--bridge-interface [minionebr]      Bridge interface for private networking
--nat-interface [first net device]  Interface to configure for NAT
--vnet-address [172.16.100.0]       Virtual Network address
--vnet-netmask [255.255.255.0]      Virtual Network netmask
--vnet-gateway [172.16.100.1]       Virtual Network gateway (i.e. bridge IP)
--vnet-ar-ip-start [172.16.100.2]   Virtual Network AR start IP
--vnet-ar-ip-count [100]            Virtual Network AR size

--edge [packet]                     Edge provider
--edge-packet-token [<token>]       Packet token (required with '--edge packet')
--edge-packet-project [<project>]   Packet project (required with '--edge packet')
--edge-host-num [1]                 Number of edge hosts
--edge-packet-facility [ams1]       Packet facility
--edge-packet-plan [t1.small]       Packet plan
--edge-packet-os [ubuntu_18_04]     Packet OS
--edge-marketapp-name [Service WordPress - KVM]
                                    Market app name for Packet

--purge                             Only uninstall and exit
--preserve-user                     Dont't delete oneadmin user when purge

ヘルプメッセージに初期設定値も含めて記述してあるので,どのような設定かはおおよそイメージできるでしょう。

前述の例だと--marketapp-name='Ubuntu 20.04'を指定していました。これは何かと言うと,構築時にダウンロードするMarketPlaceの仮想マシンイメージです。OpenNebulaでは構築済みのイメージをMarketPlaceとして公開しています。OpenNebulaでインスタンスを構築する際は,多種多様なアプリ(構築済みイメージ)から必要なものを選択し,それをベースにすることが一般的です。miniONEでは,構築時に必ずアプリをひとつダウンロードすることになっているようです。

初期設定値はCentOS 7です。ただしこれは8GiB強と若干サイズが大きいため,先ほどのコマンドでは2GiB程度で済むUbuntu 20.04を選択しています。

インストール中は特に何もすることはありません。ただひたすらホストにパッケージをインストールしたり,ネットワーク設定をしたりする様を眺めているだけです。最初のほうで一度確認メッセージが表示されますが,これすらも--yesオプションを付けておけば,問い合わせが来ることすらなくなります。

インストール時の完全なログは次のとおりです。おおよそどんなことをしているかが把握できるでしょう。

$ sudo bash minione --marketapp-name='Ubuntu 20.04'

### Checks & detection
Checking augeas is installed  SKIP will try to install
Checking apt-transport-https is installed  SKIP will try to install
Checking AppArmor  SKIP will try to modify
Checking for present ssh key  SKIP
Checking (iptables|netfilter)-persistent are installed  SKIP will try to install

### Main deployment steps:
Install OpenNebula frontend version 5.12
Configure bridge minionebr with IP 172.16.100.1/24
Enable NAT over enp0s31f6
Modify AppArmor
Install OpenNebula KVM node
Export appliance and update VM template
Install  augeas-tools apt-transport-https iptables-persistent netfilter-persistent

Do you agree? [yes/no]:
yes

### Installation
Updating APT cache  OK
Install  augeas-tools apt-transport-https iptables-persistent netfilter-persistent  OK
Creating bridge interface minionebr  OK
Bring bridge interfaces up  OK
Enabling IPv4 forward  OK
Configuring NAT using iptables  OK
Saving iptables changes  OK
Installing DNSMasq  retry 1 OK
Starting DNSMasq  OK
Configuring repositories  OK
Updating APT cache  OK
Installing OpenNebula packages  OK
Installing OpenNebula kvm node packages  OK
Updating AppArmor  OK
Disable default libvirtd networking  OK
Restart libvirtd  OK

### Configuration
Switching OneGate endpoint in oned.conf  OK
Switching OneGate endpoint in onegate-server.conf  OK
Switching keep_empty_bridge on in OpenNebulaNetwork.conf  OK
Switching scheduler interval in oned.conf  OK
Setting initial password for current user and oneadmin  OK
Changing WebUI to listen on port 80  OK
Starting OpenNebula services  OK
Enabling OpenNebula services  OK
Add ssh key to oneadmin user  OK
Update ssh configs to allow VM addresses reusig  OK
Ensure own hostname is resolvable  OK
Checking OpenNebula is working  OK
Disabling ssh from virtual network  OK
Adding localhost ssh key to known_hosts  OK
Testing ssh connection to localhost  OK
Updating datastores template  OK
Creating KVM host  OK
Creating virtual network  OK
Exporting [Ubuntu 20.04] from Marketplace to local datastore  OK
Waiting until the image is ready  OK
Updating VM template  OK

### Report
OpenNebula 5.12 was installed
Sunstone [the webui] is running on:
  http://192.0.2.1/
Use following to login:
  user: oneadmin
  password: BozivjTFKf

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。