Pythonクラウド管理





クラウドコンピューティングは、1年半または2年前に一般大衆の間で人気を博し、 Amazon EC2はこの点で大きな役割を果たしました。 徐々に、この技術の議論の活動は成長しているだけであり、これは単なるもう一つのファッショントレンドであり、それ以上ではないと信じる支持者と反対者が現れました。 クラウドコンピューティングを実験して適用し、問題を解決し始めた人もいました。



長い間、EC2には代替手段がほとんどなかったため、あるクラウドプロバイダーから別のクラウドプロバイダーへの移行の問題について考える人はほとんどいませんでした。 しかし、昨年、より多くの企業が登場し始め、手頃な価格で適切な品質のクラウドサービスを提供しました。



現時点では、おそらくEC2が依然としてリーダーですが、他のいくつかの主要なプレーヤーが登場しています。RackspaceやGoGridのような名前は、少なくともこのトピックに表面的に興味がある人にはよく知られていると思います。 それらに加えて、そのようなサービスを提供する少なくとも10社が現在市場で活躍しています。



この多様性により、プロバイダーの選択の問題をより詳細に検討し、可能な移行計画について考えるようになりました。



なぜlibcloudが必要なのですか?





クラウドサービスの不可欠な部分は、通常RESTfulまたはRESTのようなAPIの存在です。これにより、クラウドインフラストラクチャを完全に制御できます。 残念ながら、ほとんどすべてのプロバイダーは既存のAPIと互換性のない独自のAPIを作成します。これは、あるサービスから別のサービスに切り替える場合は非常に不便であり、同時に複数の異なるサービスをサポートする必要がある場合はさらに困難になります。



libcloudCloudkickついでに Rackspaceが最近購入した)で生まれたとき、目標はPythonからPythonを操作するためのツールを作成することだけでなく、クラウドを操作するための一般化されたインターフェースが(おそらく)どうあるべきかというビジョンを策定することでもありましたAPIサービスから、および異なるプラットフォームで作業する場合のクライアント側から。 たとえば、Pythonバージョンと並行して、Javaバージョンが開発されており、操作の原理と概念はまったく同じです。



ただし、哲学的な側面については詳しく説明しませんが、libcloudで何ができるかを示します。



仕事を始める





インストールとセットアップ




インストールプロセスは、誰にとっても新しいように思われることはほとんどありません。



easy_install apache-libcloud







2番目の準備段階では、APIをアクティブにし、キーとパスワードを取得します。 この手順はクラウドプロバイダーによって異なり、通常はドキュメントに記載されています。 たとえば、rakspaceの場合、次のようになります。manage.rackspacecloud.comに移動してから、 [アカウント]-> [APIアクセス]に移動します



用語とインターフェース




libcloudでは次の用語が使用されます。







上記のすべてのオブジェクトでリスト操作が可能です-オブジェクトの現在のリストを取得します。 ノードではより多くの操作がサポートされています。 作成作成 )、 削除破棄 )、および過負荷再起動 )が可能です。



ノードの使用可能なサイズと画像を表示する




簡単な例から始めましょう。サービスに接続し、CentOSですべての画像のリストと、ノードのすべての可能なサイズのリストを取得します。



 #!/usr/bin/env python from libcloud.types import Provider from libcloud.providers import get_driver from secret import access_id, secret_key if __name__ == "__main__": Driver = get_driver(Provider.GOGRID) conn = Driver(access_id, secret_key) print "images: " for image in conn.list_images(): if "CentOS" in image.name: print " %s %s" % (image.id, image.name) print "sizes: " for size in conn.list_sizes(): print size
      
      







まず、ファイル「secret.py」を作成し、プロバイダーのAPIにアクセスするための適切なユーザーとパスワードで変数access_idとsecret_keyを宣言する必要があります。 次の行に注意してください。



Driver = get_driver(Provider.GOGRID)







ここでは、GoGridのドライバーを使用したいと言います。 サポートされているすべてのプロバイダーのリストを取得するには、シェルで次のコマンドを実行する必要があります。



pydoc libcloud.types.Provider







ノードの作成と削除




ノードを作成および削除する例を考えてみましょう。 作成するには、名前、サイズ、画像など、ノードの基本パラメーターを決定する必要があります。 画像として、再び、CentOSという名前を含む最初の画像を選択し、表示される最初のサイズを取得します。



 #!/usr/bin/env python from libcloud.types import Provider from libcloud.providers import get_driver from secret import access_id, secret_key if __name__ == "__main__": Driver = get_driver(Provider.GOGRID) conn = Driver(access_id, secret_key) image = [image for image in conn.list_images() if "CentOS" in image.name][0] size = conn.list_sizes()[0] new_node = conn.create_node(name='mynode', image=image, size=size) print "node created: ", new_node new_node.destroy()
      
      







おわりに




ご覧のとおり、ここでもすべてが非常にシンプルで透過的です。 そして、2つの短いスクリプトが、ほぼすべての共通インターフェースをカバーすることができました。 もちろん、libcloudの機能はこれに限定されず、詳細な使用ガイドを作成するタスクは設定していませんが、クラウドで作業を始めたばかりの人、特に権利固有のライブラリを使用する人にのみ興味があります。



経験のあるクラウドユーザーは、おそらく、説明されている機能では不十分であると感じるでしょう。 はい、ほとんどの場合、実際にはさらに何かを使用する必要があり、すべてのプロバイダー固有のものを単一のインターフェイスでカバーできないことは明らかです。



この場合、libcloudはプロバイダードライバーのいわゆる「追加」メソッドをサポートします。これにより、たとえば、sshキーペアの作成、独自のノードイメージの作成などが可能になります。 私の観察によると、人気のあるプロバイダーのドライバーはすべての機能を十分にカバーしており、すぐに更新されます。 各ドライバーがサポートするものに関する情報は、libcloud API ドキュメントにあります



libcloudを使用すると、クラウドを操作する人の生活が楽になることを願っています。私の記事は、プロジェクトをすばやくナビゲートするのに役立ちます。



All Articles