Habréのブログでは、DevOpsアプローチの実装と、開発およびテストの自動化のために開発したツールについて多くのことを話します。 今日は、VMware vSphereとの対話の問題をどのように解決したかについてお話します。
ちょっとした歴史
vSphereは、ビルドサーバーとテストサーバーの両方のすべての仮想マシンを実行します。
数年前、当社の
継続的インテグレーションシステムが登場する前に
、ほとんどのアセンブリがTeamCityツールに転送されました。 当時、テストと展開の構成はありませんでしたが、開発の必要性はますます明らかになりました。
2014年半ばに、仮想マシンでの作業を自動化するための2つのソリューションを認識しました。vSphereを操作
するためのネイティブ
VMware API (VIX APIライブラリ)と
pysphereライブラリの使用です。 これらの各ツールには欠陥がありました。
VIX APIには、私たちにとって高すぎるエントリしきい値がありました。
- このツールは、複雑で不十分に文書化されたCライブラリのコレクションでした。
- CIシステムとの統合はすべて、Cで個別に作成する必要があります。
pysphereライブラリは一般的にほとんど文書化されておらず、いくつかの問題がありました。
- ツールはPython 2.7で書かれています。
- コマンドラインインターフェイスはありませんでした。
- 製品は、パッケージスクリプトにランダムに散在する異種クラスのセットでした。
- このプロジェクトは開発中であり、多くのバグが含まれていました。
ただし、pysphereをVIX APIと比較すると、前者には独自の利点がありました。
- http rest APIを使用してvSphere機能にアクセスすることにより、はるかに高速に動作します。
- 弊社のPythonの専門知識ははるかに高いため、このツールを使用するためのエントリーしきい値は低くなりました。
- VIX APIに基づく独自のPT.VIXライブラリに関するフィードバックは、サポートと信頼性に関する批判に耐えられませんでした。
したがって、このライブラリを使用し、それに基づいて独自のソリューションを作成することが決定されました。
VSphereToolsプロジェクト
プログラミングを開始する前に、一連の自動化ツールの要件を作成しました。
- この製品は、幅広いコマンドを備えたコンソールからの作業をサポートすることになっていた。
- 通常のpythonライブラリとしてインポートするための明確なAPIがあります。
- 構成ステップで選択できるメタバナーとしてTeamCityに組み込まれます。
vSphereToolsとSphere自体の間の相互作用の概念モデルを以下に示します。
すべてが非常に単純です。イニシエーター(ユーザーまたはスクリプト)は、コマンドラインから受け取ったコマンドをvSphereToolsツールに送信し、vSphereToolsツールはデータをpysphereライブラリに転送します。 次に、リクエストはvSphereに送られ、そこで処理されて仮想マシンに送信され、必要なもの(「状態」、属性など)が提供されます。
vSphereToolsの環境要件は最小限でした。
- vSphereにアクセスするにはサービスユーザーが必要です。
- vSphereToolsを実行しているマシンから、vcenterサービスと、ターゲット仮想マシンが実行されているESXが利用可能である必要があります。
- VMware Toolsもターゲット仮想マシンにインストールする必要があります。
- vSphereToolsを実行するマシンには、Python 2 *バージョン2.7以降がインストールされている必要があります。
サンプル付きの完全なドキュメントは
、DevOpsHQオープンソースコミュニティで入手できます。 その結果、
vSphereToolsスクリプトは 、仮想マシンの起動と停止から、目的の仮想マシン内のローカルファイルのコピー、または特定のプログラムの実行まで、多くの機能を実装します。
現在、vSphereToolsメタバナーとスクリプトは、
MaxPatrol SIEM 、
PT Application Firewall 、
Application Inspectorなどの主要なPositive Technologiesのほぼすべての製品の開発とテスト
、および他の多くのプロジェクトで使用されています。
制限と可能な改善
他のツールと同様に、vSphereTools製品には独自の制限があります。
- インデックスで利用可能なpysphere 0.1.8の最新バージョン、つまりvSphereToolsの基礎です。
- vSphereToolsの新しいメソッドは、会社のDevOps部門のみが実装する必要があります。
- VMware vSphereの新しいバージョンは、古いAPIをサポートしていない場合があります。
- 現在、スクリプトはPython 2 *(2.7以降)でのみ動作します。
そのため、多くの改善を計画しています。 たとえば、vSphereToolsをPython for vSphere 6.0用のVMware vCloud Suite SDKに書き換えたいとします。 このツール
のドキュメントは既に利用可能です。それにはpython-apiもあります
-pyvmomiライブラリ。
PS vSphereToolsプロジェクトに関するストーリーは、モスクワの秋に行われたDevOpsミーティングの一部として発表されました。
ビデオ:
スライド:
リンクには、イベント中に提示された16のレポートのプレゼンテーションが表示されます。 この
トピック発表の最後に、すべてのプレゼンテーションとビデオプレゼンテーションがテーブルに追加されます。
Timur Gilmullin による投稿PPS私たちは、Positive Technologiesの支援により、Pythonコア開発者のAndrei Svetlov
によるasyncio + aiohttpのコースがモスクワですぐに開催されることを
お知らせします。
Andreyにとって最高の質問の著者にセミナーの無料チケットを1つ提供したいと考えています。彼はレッスン中に質問を選択して回答します。 質問は
asyncio2016@ptsecurity.comに送信してください。