2015.05.25
新しくなったConoHaをMacのターミナルで○○してみた
こんにちは、次世代システム研究室のN.O.です。
ConoHaがリニューアルしました。ストレージにSSDを採用し、時間単位での課金と柔軟になった料金体系、スケーラビリティ、簡単な操作はそのままに海外のリージョンも選べるようになりとてつもなくパワーアップしています。
そんな中で従来のオブジェクトストレージだけだったAPIが大量に追加されています。これはコマンドラインやスクリプトで色々とできるようになったのではないかと夢が広がります。ざっと見たところOpenStack互換とは特に書いてないんですが、たぶん大丈夫だよね、、、という事でOpenStack Command-line Clientsを使って色々と試したいと思います。
OpenStackのCLIについてはこちらの記事で解説しております。今回はこのOpenStack CLIをmacにインストールしてサーバへ接続するところまでやってみます。
環境はMacbook Air、OS X Yosemite、Homebrew、python-novaclient 2.25.0を使用しています。
※本記事はOpenStack Command-line ClientsからConoHaへの接続性を保証するものではありません。
python-novaclientをインストールする
python-novaclient(コマンドはnova)はpythonのプログラムでpipでインストールします。OS Xビルトインのpythonだとsudoが必要だったりと色々手間がかかりますのでHomebrewのものを使います。ビルトインのpythonを使う場合はsudoが必要かもしれません。ターミナルを起動して以下のコマンドを実行します。
brew install python pip install python-novaclient
ダッシュボードから認証に必要な情報を拾います。
API→テナント情報、エンドポイント、APIユーザーを確認します。APIユーザーは最初にパスワードを設定する必要があります。
エンドポイントはリージョンを間違え無いように気をつけましょう。
適当なファイル(ここではkeystonercとします)に以下の情報を記載しておきますと
export OS_USERNAME=[APIユーザーのユーザー名] export OS_PASSWORD=[APIユーザーのパスワード] export OS_TENANT_NAME=[テナント情報→テナント名] export OS_AUTH_URL=[エンドポイント→Identity ServiceのURL]
sourceで読み込めばコマンドを打つ度に入力する必要が無くなります。
source keystonerc
novaはサブコマンドが多いので補完できるようにしたいと思います。こちらは無くても大丈夫ですので不要な場合は飛ばしてください。今回の環境はzshのためzsh-completionsをインストールします。
brew install zsh zsh-completions curl -o /usr/local/Cellar/zsh-completions/0.12.0/share/zsh-completions/_nova https://raw.githubusercontent.com/openstack/python-novaclient/master/tools/nova.zsh_completion cd /usr/local/share/zsh-completions ln -s ../../Cellar/zsh-completions/0.12.0/share/zsh-completions/_nova rm -f ~/.zcompdump; compinit
ssh公開鍵を登録する
公開鍵を登録します。新しいConoHaでは従来通りキーペアの自動生成もできますが、自身の公開鍵を登録する事もできます。秘密鍵をダウンロードする事に抵抗感のあるおじさんとしては嬉しい限りです。
ここでは鍵に[mac]と名前をつけます。
nova keypair-add --pub-key ~/.ssh/id_rsa.pub mac
サーバを起動してみる
プランとイメージを選択します。プランはnova flavor-list
で、
イメージはnova image-list
で調べることができます。
$ nova flavor-list +--------------------------------------+--------+-----------+------+-----------+------+-------+-------------+-----------+ | ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | +--------------------------------------+--------+-----------+------+-----------+------+-------+-------------+-----------+ | 294639c7-72ba-43a5-8ff2-513c8995b869 | g-2gb | 2048 | 50 | 0 | | 3 | 1 | True | | 3aa001cd-95b6-46c9-a91e-e62d6f7f06a3 | g-16gb | 16384 | 50 | 0 | | 8 | 1 | True | | 62e8fb4b-6a26-46cd-be13-e5bbf5614d15 | g-4gb | 4096 | 50 | 0 | | 4 | 1 | True | | 7eea7469-0d85-4f82-8050-6ae742394681 | g-1gb | 1024 | 50 | 0 | | 2 | 1 | True | | 965affd4-d9e8-4ffb-b9a9-624d63e2d83f | g-8gb | 8192 | 50 | 0 | | 6 | 1 | True | | a20905c6-3733-46c4-81cc-458c7dca1bae | g-32gb | 32768 | 50 | 0 | | 12 | 1 | True | | c2a97b05-1b4b-4038-bbcb-343201659279 | g-64gb | 65536 | 50 | 0 | | 24 | 1 | True | +--------------------------------------+--------+-----------+------+-----------+------+-------+-------------+-----------+
$ nova image-list +--------------------------------------+-----------------------------------+--------+--------+ | ID | Name | Status | Server | +--------------------------------------+-----------------------------------+--------+--------+ | 861f7a60-9da2-4362-a32c-f924da53f006 | gncvmi-centos-6.6-i386 | ACTIVE | | | 14961158-a69c-4af1-b375-b9a72982837d | gncvmi-centos-6.6-x86_64 | ACTIVE | | | edf7c65e-9515-4889-bba1-8d15ea898ef3 | gncvmi-centos-7.1-x86_64 | ACTIVE | | | 7d7c979a-4c6f-4a1e-9296-fee49ee83743 | gncvmi-debian-7-amd64 | ACTIVE | | | 2bcae54a-4383-446b-8eeb-ed8eb929c3a6 | gncvmi-debian-7-i386 | ACTIVE | | | aa28ff6d-a697-499d-a071-563ea7afdbab | gncvmi-fedora-21-x86_64 | ACTIVE | | | 0ecb7b16-9fe1-4982-9717-e087dfc65ab3 | gncvmi-freebsd-10.1-x86_64 | ACTIVE | | | 55bccf40-8092-47ce-9714-11a78ce34da8 | gncvmi-jenkins-1.6-centos-6.6 | ACTIVE | | | 1b5dad09-8d5b-4fa8-9e37-18d023873d3f | gncvmi-lamp-centos-6.6 | ACTIVE | | | ab31a576-3a4f-4e56-bf83-867dcb38b1c6 | gncvmi-opensuse-13.2-x86_64 | ACTIVE | | | fc70d101-4f61-44d7-8e63-f31fd46933f4 | gncvmi-redmine-3.0-centos-6.6 | ACTIVE | | | 0e32bc8f-95bf-4ef4-8cb0-12ed1cca5196 | gncvmi-ror-4.2-centos-6.6 | ACTIVE | | | ae60f83f-2454-4428-96fd-187509a8b07b | gncvmi-scientificlinux-7.1-x86_64 | ACTIVE | | | eaa4c34f-cab8-445a-a03d-ffee9ff51c92 | gncvmi-ubuntu-12.04-amd64 | ACTIVE | | | 737f0b24-c80b-462f-80c2-624409fd1e30 | gncvmi-ubuntu-12.04-i386 | ACTIVE | | | 2b03327f-d453-4c7d-91c9-8b9924b6ea88 | gncvmi-ubuntu-14.04-amd64 | ACTIVE | | | 7297eba6-42f9-4fbb-bb8d-ab1a8fde17a8 | gncvmi-ubuntu-14.04-i386 | ACTIVE | | +--------------------------------------+-----------------------------------+--------+--------+
起動の準備ができましたのでnova boot
を実行します。オプションの解説をします。
--image
イメージを指定します。--flavor
flavorはIDじゃないと通りませんでした。1GBのプランを起動するのでflavorのIDは7eea7469-0d85-4f82-8050-6ae742394681を利用します。--meta
GUI上のネームタグはinstance_name_tagで指定できます。--key-name
登録した鍵を指定します。--security-groups
セキュリティグループを指定します。何も指定しないと「defaults」というセキュリティグループがつくのですが通信が許可されて無いので外部と通信する事ができません。そこで「接続許可ポート→全て」に相当するセキュリティグループを指定しています。<name>
最後に<name>を指定しますが、ここで指定した名前は無視され、IPアドレスのドット”.”をハイフン”-“に変換した形の名前になります。しかしながら無いとエラーが出るのでダミーとして「test」と入力しておきます。
nova boot \ --image gncvmi-centos-7.1-x86_64 \ --flavor 7eea7469-0d85-4f82-8050-6ae742394681 \ --meta instance_name_tag="mac" \ --key-name mac \ --security-groups gncs-ipv4-all,gncs-ipv6-all \ test
起動に成功すると以下のような表示になります
+--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | nova | | OS-EXT-SRV-ATTR:host | - | | OS-EXT-SRV-ATTR:hypervisor_hostname | - | | OS-EXT-SRV-ATTR:instance_name | tyo1-0000XXXX | | OS-EXT-STS:power_state | 0 | | OS-EXT-STS:task_state | scheduling | | OS-EXT-STS:vm_state | building | | OS-SRV-USG:launched_at | - | | OS-SRV-USG:terminated_at | - | | accessIPv4 | | | accessIPv6 | | | adminPass | XXXXXXXX | | config_drive | True | | created | 2015-05-21T08:15:07Z | | flavor | g-1gb (7eea7469-0d85-4f82-8050-6ae742394681) | | hostId | | | id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | | image | gncvmi-centos-7.1-x86_64 (edf7c65e-9515-4889-bba1-8d15ea898ef3) | | key_name | mac | | metadata | {"instance_name_tag": "mac", "backup_status": "active", "backup_id": "", "properties": "{\"vnc_keymap\":\"ja\",\"hw_video_model\":\"vga\",\"hw_vif_model\":\"virtio\",\"hw_disk_bus\":\"virtio\",\"cdrom_path\":\"\"}", "backup_set": "0"} | | name | XXX-XXX-XXX-XXX | | os-extended-volumes:volumes_attached | [] | | progress | 0 | | security_groups | gncs-ipv4-all, gncs-ipv6-all | | status | BUILD | | tenant_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | | updated | 2015-05-21T08:15:09Z | | user_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | +--------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
ここでnameのハイフン”-“をドット”.”に直すとIPアドレスになります。
公開鍵が登録済みなのですぐにsshできます。
ssh [email protected]
サーバはnova delete
で削除する事ができます。
$ nova delete XXX-XXX-XXX-XXX Request to delete server XXX-XXX-XXX-XXX has been accepted.
さいごに
いかがでしたでしょうか。 CLIでサーバ起動->接続までターミナル上で一通りできるようになってますます便利になりました。時間課金なので1時間1.3円〜で利用できるのもありがたいです。ちょっとした検証でも活用できます。個人的にも今後はConoHaの利用が更に増えていきそうです。皆様も是非お試し下さい!!
グループ研究開発本部の最新情報をTwitterで配信中です。ぜひフォローください。
Follow @GMO_RD