5

EC2 ユーザーが慣れ親しんでいる機能 (特にタグ付け) の多くが OpenStack には存在しないという事実に、私は諦めました。ただし、その機能がないと気が狂いそうな機能が 1 つあります。

OpenStack は (EC2 のように) インスタンス タグを完全にはサポートしていませんがインスタンス名の概念があります。この名前は Web UI によって公開され、設定することもできます。

インスタンスリストのインスタンス名

インスタンス名の編集

nova listこの名前は、コマンド ライン ユーティリティからも公開されます。

ただし (これは私の問題です)、このフィールドはAPI レイヤーを介して公開されません。nova-ec2これを既存の EC2 プラットフォーム ツールと統合する最もクリーンな方法は、"Name" という名前のインスタンス タグをシミュレートすることですが、彼らはこれを行いません。さらに、名前の読み取りと書き込みに使用できる Nova API エンドポイントがわかりません ( API リファレンスには記載されていないようです)。もちろん、Webクライアントとnova-client両方が何らかの形でそれを行うことができるので、それは何らかの形で可能でなければなりません.

現時点では、新しいインスタンスを起動するたびに Web サイトから手動で変更する必要があります。(コマンド ライン クライアントnova-ec2ではなく APIを使用しているため、インスタンスの作成中は実行できません)。nova

私の質問は:

  1. EC2 API レイヤーを介してインスタンス名を読み書きする方法はありますか?
  2. それができない場合、プログラムで設定するための REST エンドポイントは何ですか?
  3. (BONUS) : 一般的なインスタンスのタグ付けのサポートに関する Nova の進捗状況は?
4

1 に答える 1

4

Pythonnovaclient.v1_1パッケージには、serverオブジェクトに対するメソッドがあります。

def update(self, server, name=None):
    """
    Update the name or the password for a server.

    :param server: The :class:`Server` (or its ID) to update.
    :param name: Update the server's name.
    """
    if name is None:
        return

    body = {
        "server": {
            "name": name,
        },
    }

    self._update("/servers/%s" % base.getid(server), body)

これは、次の JSON を に POST することで、サーバーの名前を更新できることを示していますhttp://nova-api:port/v2.0/servers/{server-id}

{
  "server": {
      "name": "new_name"
  }
}

もちろん、通常の認証ヘッダー (つまりX-Auth-Token 、Keystone サーバーから) はすべて引き続き必要なので、それらすべてを管理したい言語のクライアント ライブラリを使用する方がおそらく簡単です。

于 2012-06-04T22:09:44.467 に答える