個人利用から大規模開発までConoHaで始めるクラウド開発入門

第5回 OpenStack APIを使ったCLI操作をConoHaでやってみる

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

これまでの連載では,APIを利用するのにおもにcurlコマンドを使ってきました。curlでのRESTful APIのしくみを知り,直接操作することも理解を深めるには重要ですが,シェルスクリプトなどで使われる実際の運用に近いツールも便利で,数多く存在します。ConoHaではOpenStack APIを使ったツールを利用できますが,CLIについてはConoHaの情報サイトこのべんや勉強会でも,意外に説明する機会がありませんでした。そこで今回は,OpenStackのCLIの環境構築と利用の方法について解説します。

python-openstackclientと各コンポーネント(nova,neutronなど)のクライアント

python-openstackclientというプロジェクトは,OpenStackClient(OSC)として開発者ドキュメントにあります。これまで,keystoneなどCLI付きClientライブラリとして開発されていたものを,CLI部の機能を分離して基底ライブラリ(python-keystoneclient)として提供し,CLIのモジュールとして利用していこうという流れから生まれたものです。CLI部が1つになることでユーザインターフェースが統一され,CLIの改善も進みやすくなるということです。

これにより,keystone CLIではdeprecated表示が出て,python-openstackclientに移行するように催促されます。

$ keystone token-get 2>&1 | head -n 2
/Library/Python/2.7/site-packages/keystoneclient/shell.py:64: DeprecationWarning: The keystone CLI is deprecated in favor of python-openstackclient. For a Python library, continue using python-keystoneclient.
  'python-keystoneclient.', DeprecationWarning)

OSCの注目すべき項目には次のものがあります。

プラグインモジュール構造
OpenStackコンポーネントのコマンド化と機能を拡張できる
configファイル
yamlで記載,複数のクラウドを登録できる
longフォーマット
詳細な情報を表示可能
(オプション:⁠--long”)
カラム(列)指定
列のタイトルを指定し,出力可能
(例:⁠-c 'ID'”)
出力フォーマットの変更
(オプション:⁠-f <形式>”)⁠
  • 形式:csv,json,table,value,yaml,shellなど
  • シェルスクリプトの作成に大変便利な機能
  • ガイドラインMachine Output Format

コマンド一覧をCLIで確認するには,次のようにします(yaml形式出力)⁠

$ openstack command list -f yaml

コマンド体系を見る限り,Compute(nova)⁠Identity(keystone)⁠Volume(cinder)⁠Networking(neutron)⁠Object Storage(swift)の機能が利用できます。

OpenStack CLIのインストール

OSCをインストールします。筆者の手元の環境(Mac OS X Yosemite 10.10.5,Homebrew 0.9.5)の場合は,次のような手順でインストールします。どんどん開発が進むので,pipでバージョン指定して,自分に合ったものをインストールするとよいでしょう。

$ sudo easy_install pip
$ sudo pip install python-openstackclient==1.7.1

CLIを使うには,テナントName(またはテナントID)⁠APIユーザ,パスワード,APIエンドポイント,作成するリージョンの情報が必要です。これまでの連載にそって必要な情報を取得しておきます。

CLI環境変数

環境変数を使うことで,毎回のオプション指定を省略できます。使うときだけsourceコマンドで読み込むようにファイルを作ります。PS1変数でプロンプトを変更するのは,セキュリティ上,使い終わったら終了するという備忘録としての意味合いもあります。

$ cat osrc_conoha_us
export OS_TENANT_NAME=gnct29999993
export OS_PASSWORD='hogehogeman2='
export OS_USERNAME=gncu29999993
export OS_AUTH_URL=https://identity.sjc1.conoha.io/v2.0
export PS1='(env_us)\$ '

$ source osrc_conoha_us
(env_us)$

flavorリストの取得,imageリストの取得,ssh公開鍵の登録

まず,flavorリストを取得します。⁠ -f value⁠オプションが出力のFormat指定で,値だけ表示します。何も指定しないと表出力になります。とりあえず,2GBぐらいメモリがほしいので,⁠g-2gb⁠を確認します。 例として,Docker展開用のOSをちょっとカスタマイズすることを考えます。Ubuntu 14.04にdocker engine 1.8.1が入ったものがありますので,imageはこれを選択します。また事前に,作業用クライアントPCのRSA/DSA公開鍵をSSH接続用に登録します。

(env_us)$ openstack flavor list -c 'Name' -c 'RAM' -f value | grep -i 2gb
g-2gb 2048

(env_us)$ openstack image list -c 'Name' -f value | grep docker
vmi-docker-1.8.1-ubuntu-14.04

(env_us)$ openstack keypair create --public-key ~/.ssh/id_rsa.pub my-rsa-key -f yaml

VMの作成

VMを作成します。ConoHaの現在のAPI仕様では,server nameの指定はdummy扱いとなり,内部でIPv4アドレスから生成されたものがデフォルトで割り当てられます。コマンドのオプションで⁠new-server⁠と入れたものはスルーされます。

Webパネルで表示させる名称は⁠--property⁠オプションの⁠instance_name_tag=……⁠で指定するようになっています。

(env_us)$ openstack server create --image vmi-docker-1.8.1-ubuntu-14.04 --flavor g-2gb --key-name my-rsa-key --property "instance_name_tag=docker_base" new-server -f value

著者プロフィール

郷古直仁(ごうこなおと)

GMOインターネット(株) システム本部 アーキテクト

仙台にてホスティングやwebサービスを作っている会社でSEとしてやってきて,2007年12月よりGMOインターネットに参加。

GMOインターネットではホスティングサービスから始まり,GMOアプリクラウド,ConoHaとクラウド基盤のサービス開発をOpenStackで行っている。

いままでUndercloudなインフラの仕事が長かったからか,OpenStackではDesignate(DNS as a service)とIronic(baremetal service)が好き。

OpenStackユーザ会の会長に「おなか出ましたね」と言われつつも,最近はお肉とお酒があれば,どこだって行きます,しゃべります的なイベント駆動開発でものを作ったりする活動を個人的にしている。

Twitter(@naoto_gohko):https://twitter.com/naoto_gohko
GitHub:https://github.com/naototty
Blog:http://blog.docodemo-conoha.red/
Slideshare:http://www.slideshare.net/chroum

GMOインターネット: Webサイト:https://www.gmo.jp/

コメント

コメントの記入