これまでの連載では、
python-openstackclientと各コンポーネント(nova、neutronなど)のクライアント
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」
- 形式:csv、
コマンド一覧をCLIで確認するには、
$ openstack command list -f yaml
コマンド体系を見る限り、
OpenStack CLIのインストール
OSCをインストールします。筆者の手元の環境
$ sudo easy_install pip $ sudo pip install python-openstackclient==1.7.1
CLIを使うには、
CLI環境変数
環境変数を使うことで、
$ 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公開鍵の登録
まず、
(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仕様では、
Webパネルで表示させる名称は
(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
セキュリティグループの作成と設定
セキュリティグループを確認します。最初はdefaultというルールしかなく、
(env_us)$ openstack security group list -c 'Name' -f value default gncs-ipv4-ssh gncs-ipv4-web
ConoHaでは、
- novaでは、
VM全体に対してセキュリティグループを設定する - neutronでは、
VMのNIC (Port) に対してセキュリティグループを設定する
neutronで複数のネットワークを使っている場合は、
(env_us)$ neutron security-group-create docker-works --description "allow docker-machine connect" (env_us)$ neutron security-group-rule-create --direction ingress --ethertype IPv4 --protocol tcp --port-range-min 22 --port-range-max 22 docker-works -f value
neutronコマンドは、
作ったセキュリティグループは、
(env_us)$ openstack security group show docker-works -f yaml
作成済みのVMのNICポートにセキュリティグループを設定するには、
(env_us)$ neutron port-list -f value (env_us)$ neutron port-show -f yaml 94c23b1b-f922-4070-84ba-baf42c66eff8 | grep 'device_id' - {Field: device_id, Value: b7ba7ea9-6145-4ae5-aba8-0377d16bdf77} (env_us)$ openstack server list -f value b7ba7ea9-6145-4ae5-aba8-0377d16bdf77 163-44-112-102 ACTIVE ext-163-44-112-0-23=163.44.112.102, 2400:8500:2500:624:163:44:112:102 (env_us)$ neutron port-update --security-group docker-works 94c23b1b-f922-4070-84ba-baf42c66eff8 Updated port: 94c23b1b-f922-4070-84ba-baf42c66eff8
セキュリティグループは同じリージョン内で使い回せますので、
(env_us)$ openstack server create --image vmi-docker-1.8.1-ubuntu-14.04 --flavor g-2gb --key-name my-rsa-key --security-group docker-works --property "instance_name_tag=docker_base2" new-server2 -f value
新規に作成したセキュリティグループ
サーバ一覧を
(env_us)$ openstack server list --long -c 'ID' -c 'Properties' -f yaml
Propertiesのところに
(env_us)$ openstack server ssh -4 --address-type fixed --login root 11fca3ff-6029-4c3c-8a61-cf1c365a7378 Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.16.0-45-generic x86_64) (中略) root@163-44-112-111:~#
ここではupdateをかけて、
root@163-44-112-111:~# aptitude update root@163-44-112-111:~# aptitude upgrade -y root@163-44-112-111:~# docker --version Docker version 1.8.2, build 0a8c2e3 root@163-44-112-111:~# shutdown -h now (env_us)$ openstack server image create 11fca3ff-6029-4c3c-8a61-cf1c365a7378 --name "docker-182-u1404" -f yaml _info
イメージが保存されていることを確認します。
(env_us)$ openstack image list -f value | grep docker 87817478-06a7-4e7f-acbd-db823f7c3377 docker-182-u1404 f05fe793-1d30-4760-9946-70440372dce1 vmi-docker-1.8.1-ubuntu-14.04
これで次回からは、
(env_us)$ openstack server create --image docker-182-u1404 --flavor g-2gb --key-name my-rsa-key --security-group docker-works --property "instance_name_tag=docker01" new-server3 -f value
おわりに
今回は、