今回のテーマは「ConoHa API」と「OpenStack」です。ConoHa にはAPIが用意されており、各機能を操作できることはすでにお話ししてきました。一方、ConoHaはOpenStackを基盤として採用しており、APIの仕様もほぼOpenStackがそのまま使われています(一部独自の拡張がありますが、互換性を損なわないように考慮されています) 。今回は「OpenStackとして」APIを使うことにフォーカスし、OpenStack公式のCLIツールを使ってみたり、VagrantからOpenStack APIを通じてConoHaにvagrant upしてみたいと思います。
OpenStack
ところで、みなさんはOpenStack をご存じでしょうか? OpenStackはオープンソースで開発されている、クラウドを構築するためのソフトウェア群です。サーバ、ネットワーク、ストレージなどを仮想化して扱い、統合されたダッシュボードから操作し、一方でAPIを通じて管理することもできます。OpenStackはプライベートクラウドやパブリッククラウドの基盤として急速に普及が進んでおり、ConoHaも2013年のサービスリリース時からOpenStackをベースに構築されています。
OpenStackは各機能がコンポーネントとして分かれています。コンピュート(仮想サーバ)を扱う「Nova」 、ネットワークを扱う「Neutron」 、ブロックストレージを扱う「Cinder」 、仮想マシンイメージを扱う「Glance」 、認証を扱う「Keystone」などです。これらがREST APIやAMQP(Advanced Message Queuing Protocol)を通じて通信することでクラウドシステムを構成します(図1 ) 。
図1 OpenStackのアーキテクチャ
出典: http://docs.openstack.org/juno/install-guide/install/apt/content/ch_overview.html
公式CLIツールを使ってみる
OpenStackにはPython実装のCLIツールが公式に用意されていて 、コマンドラインからOpenStackの各コンポーネントを操作できます。CLIツールはコンポーネントごとに用意されていて、たとえばNovaの場合は「python-nova-client」という名前になります。これをpipでインストールします。
また最近は「python-openstackclient」という、いくつかのコンポーネントをまとめて操作できるツールも出てきました。これらのツールは、もちろんConoHaでも使えます。今回は一番新しい「python-openstackclient」を使ってみましょう。CLIツールを利用するには、Pythonがインストールされていてpipが利用できる必要があります。2系、3系どちらでも動作が保証されています。まずは次のようにインストールしてみましょう。
$ pip install python-openstackclient
インストールが完了したら、起動する前にAPIの認証情報をセットします。これはConoHaのコントロールパネルに情報があるので、「 APIユーザ名」「 APIパスワード」「 テナント名」「 Identity Serviceのエンドポイント」を見つけてください。そして認証情報を環境変数で指定します(注1 ・リスト1 ) 。
リスト1 環境変数の設定
export OS_USERNAME=APIユーザ名
export OS_TENANT_NAME=APIテナント名
export OS_PASSWORD=APIパスワード
export OS_AUTH_URL=Identity Serviceのエンドポイント
CLIツールを起動するには、その名のとおり「openstack」と実行します。すると対話的なシェルが起動します。まずはhelpと実行してみましょう。コマンドリストが表示されます。helpのあとにコマンド名を指定すると、コマンドの説明が表示されます。図2 ではserver listコマンドのヘルプを表示しています。
図2 server listコマンドのヘルプ
$ openstack
(openstack) help
(略)
(openstack) help server list
help server list
usage: server list [-h] [-f {csv,json,table,value,yaml}] [-c COLUMN]
[--max-width <integer>] [--noindent]
[--quote {all,minimal,none,nonnumeric}]
[--reservation-id <reservation-id>]
[--ip <ip-address-regex>] [--ip6 <ip-address-regex>]
[--name <name-regex>] [--instance-name <server-name>]
[--status <status>] [--flavor <flavor>] [--image <image>]
[--host <hostname>] [--all-projects] [--project <project>]
[--project-domain <project-domain>] [--user <user>]
[--user-domain <user-domain>] [--long]
(以下略)
server listは仮想サーバ(ConoHaではVPSと呼んでいます)の一覧を表示します。実行すると、図3 のようになります。
図3 server listコマンド
(openstack) server list
+--------------------------------------+---------------+--------+--------------------------------------------------------------------------+
| ID | Name | Status | Networks |
+--------------------------------------+---------------+--------+--------------------------------------------------------------------------+
| 1e5b583b-e10c-4bd0-be67-************ | 157-7-***-*** | ACTIVE | ext-cnode-157-7-***-0-**=2400:8500:1301:704:157:7:***:***, 157.7.***.*** |
+--------------------------------------+---------------+--------+--------------------------------------------------------------------------+
では、サーバを作成するにはどうすればよいのでしょうか? これにはserver createコマンドを使います。このコマンドはオプションが多いので複雑そうに見えますが、ConoHaで作成する場合は次のようにすればOKです。
(openstack) server create
--flavor g-1gb
--image vmi-ubuntu-14.04-amd64
--security-group default
--security-group gncs-ipv4-all
--keyname hironobu-key
test-server-1
ConoHaではflavorはプラン名、imageはVPSのテンプレートです。指定できる値はそれぞれflavor listとimage listコマンドで取得できます。security-groupオプションはコントロールパネルの「接続許可ポート」に相当し、security group listコマンドで取得できます。ConoHaではdefaultとgncs-ipv4-allを指定すれば、すべてのTCPポートで通信ができます。key-nameはSSHの公開鍵名を指定するパラメータで、あらかじめコントロールパネルかAPI経由で公開鍵を登録しておく必要があります。key-nameは任意指定ですが、指定しないとVPSにSSHなどでログインできません。最後のtest-server-1は任意の文字列で、サーバ名を指定します。
server createが成功すると、作成したサーバの詳細情報が返されます。ConoHaのコントロールパネルを見ると、サーバが増えていることが確認できます。
このように公式のCLIツールを使うと、簡単なコマンドでConoHaを操作できます。これは、ConoHaがOpenStackのAPIを使えるから可能なのです。CLIツールにはほかにもさまざまな機能がありますので、ヘルプを参照しながら試してみてください。
ConoHaをvagrant upしてみよう
Vagrant は環境の構築(いわゆるプロビジョニング)を自動化できるもので、仮想マシンの設定、作成、環境構築などを定義ファイル(Vagrantfile)に従って実行してくれます。よく使われるのは、ローカルPCにVirtualBoxなどをインストールして使うケースです。そして、VagrantにはProviderというプラットフォームをプラグインのように扱うしくみがあります。VirtualBoxもそうですし、ほかの仮想環境やクラウドプロバイダなどのProviderも用意されていて、もちろんOpenStack用のProvider もあります。
ConoHaについては、筆者がOpenStackのProviderをforkして開発したものが利用できます。OpenStack APIの機能に加えて、ConoHa独自のパラメータを扱うことができます。VagrantのホストとしてConoHaを使うことで、ローカルPC上に仮想環境を用意する必要がなくなり、クラウド上の仮想マシンを使って環境を構築できます。
では、さっそく使ってみましょう。Vagrantのインストール方法はオフィシャルサイトにあるので、プラグインのインストールから進めます。コマンドラインから図4 のコマンドを実行してください。
図4 ConoHa用Providerのインストール
$ vagrant plugin install vagrant-conoha
Installing the 'vagrant-conoha' plugin. This can take a few minutes...
Installed the plugin 'vagrant-conoha (0.1.3)'!
インストールが完了したら、リスト2 のようにVagrantfileを準備してvagrant upしてみましょう(図5 ) 。
リスト2 Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = 'conoha'
config.ssh.username = 'root'
config.vm.provider :conoha do |conoha|
conoha.openstack_auth_url = 'https://identity.tyo1.conoha.io/v2.0'
conoha.username = 'gncu*******'
conoha.password = '***********'
conoha.tenant_name = 'gnct*******'
conoha.flavor = 'g-1gb'
conoha.image = 'vmi-ubuntu-14.04-amd64'
conoha.region = "tyo1"
conoha.admin_pass = "AdminPass123*"
conoha.metadata = {
instance_name_tag: "vagrant_conoha"
}
conoha.security_groups = [
"default",
"gncs-ipv4-all",
"gncs-ipv6-all"
]
# conoha.keypair_name = "hironobu-key"
end
# config.ssh.private_key_path = "~/.ssh/id_rsa"
end
図5 vagrant upコマンド
$ vagrant up --provider conoha
Bringing machine 'default' up with 'conoha' provider...
==> default: Finding flavor for server...
==> default: Finding image for server...
==> default: Launching a server with the following settings...
==> default: -- Tenant : gnct********
==> default: -- Name : default
==> default: -- Flavor : g-1gb
==> default: -- FlavorRef : 7eea7469-0d85-4f82-8050-6ae742394681
==> default: -- Image : vmi-ubuntu-14.04-amd64
==> default: -- ImageRef : 4952b4e5-67bb-4f84-991f-9f3f1647d63d
==> default: -- KeyPair : vagrant-generated-bnbggrsi
(以下略)
これ以降は、Vagrantのコマンドを使ってprovisionなどを行えます。またConoHaのコントロールパネルを確認すると、新しくVPSが作成されているはずです。
おわりに
今回はConoHaのAPIとOpenStackにフォーカスして話をしました。ConoHaには使いやすいコントロールパネルがあり、インフラ運用に慣れていない方でも手軽に使えるという特徴があります。一方、ConoHaはOpenStackベースのクラウドという側面も持っており、OpenStackのAPIを使って高度な運用も行えます。今回は公式CLIクライアントとVagrantを例に、使い方を見ていきました。ほかにもさまざまなOpenStack対応のソフトウェアがあるので、ぜひ試してみてください。
さて「個人利用から大規模開発までConoHaで始めるクラウド開発入門」というタイトルで6回にわたってお送りしてきましたが、今回が最終回となりました。この連載をご覧になったみなさまが少しでも「ConoHaを使ってみたい!」と思っていただけたら幸いです。