web-dev-qa-db-ja.com

OpenStackでイメージを提供するためにMAASを準備するにはどうすればよいですか?

MAASでOpenstack ready があります。Ubuntuイメージでクラウドを準備し、Jujuでデプロイできるようにするにはどうすればよいですか?

5
Jorge Castro

Simplestreamsを使用してJujuおよびOpenStack用にMAASを準備する

Jujuがクラウドをブートストラップするとき、2つの重要な情報が必要です。

  1. 新しい計算インスタンスを開始するときに使用するイメージのuuid。
  2. ツールtarballの正しいバージョンをダウンロードするURL。

この必要な情報は、「シンプルストリーム」と呼ばれるjsonメタデータ形式で保存されます。アマゾンウェブサービス、HPクラウド、Azureなどのサポートされているパブリッククラウドサービスの場合、エンドユーザーによるアクションは不要です。ただし、プライベートクラウドを設定している人、または物事の動作を変更したい(たとえば、別のUbuntuイメージを使用したい)人は、動作方法について少し理解した後、独自のメタデータを作成できます。

Simplestreams形式は、関連するアイテムを構造的に記述するために使用されます。 Launchpadプロジェクト lp:simplestreams を参照してください。以下では、使用するメタデータをJujuがどのように決定するか、独自のイメージとツールを作成し、Jujuがデフォルトの代わりにそれらを使用する方法について説明します。

基本的なワークフロー

画像でもツールでも、Jujuは検索パスを使用して適切なメタデータを探します。パスコンポーネント(ルックアップ順)は次のとおりです。

  1. ユーザー指定の場所(tools-metadata-urlまたはimage-metadata-url構成設定で指定)。
  2. 環境のクラウドストレージ。
  3. プロバイダー固有の場所(たとえば、Openstackの場合のキーストーンエンドポイント)。
  4. サポートされているパブリッククラウドのメタデータを含むWebロケーション- https://streams.canonical.com

メタデータは、インラインで署名される場合と署名されない場合があります。 「.sjson」拡張子を使用してメタデータファイルに署名することを示します。パス内の各場所で最初に署名されたメタデータが検索され、見つからない場合は、次のパスの場所に移動する前に署名されていないメタデータが試行されます。

Jujuには、 https://streams.canonical.com から取得した画像とツールのメタデータの整合性を検証するために使用される公開キーが付属しています。そのため、Jujuはそのままで、署名されたメタデータを使用して、サポートされているすべてのパブリッククラウドで「そのまま動作」します。プライベート(Openstackなど)クラウドのメタデータを設定するには、Jujuに付属のツールを使用してメタデータを生成する必要があります。

画像メタデータのコンテンツ

画像メタデータは、「image-ids」のsimplestreamsコンテンツタイプを使用します。製品IDは次のように形成されます。

com.ubuntu.cloud:server:<series_version>:<Arch> 

例えば:

com.ubuntu.cloud:server:14.04:AMD64 

リリースされていない画像(例:ベータ版、毎日など)の製品IDは次のとおりです。

com.ubuntu.cloud.daily:server:13.10:AMD64

メタデータインデックスと製品ファイルは、次のディレクトリツリーにある必要があります(各パスコンポーネントに関連付けられたURLに関連)。

<path_url>
  |-streams
      |-v1
         |-index.(s)json
         |-product-foo.(s)json
         |-product-bar.(s)json

インデックスファイルは、「index。(s)json」(署名された場合はjjson)と呼ばれる必要があります。さまざまな製品ファイルは、インデックスファイルに含まれるパス値に従って名前が付けられます。

ツールのメタデータは、「content-download」というsimplestreamsコンテンツタイプを使用します。製品IDは次のように形成されます。

"com.ubuntu.juju:<series_version>:<Arch>"

例えば:

"com.ubuntu.juju:12.04:AMD64"

メタデータインデックスと製品ファイルは、次のディレクトリツリーにある必要があります(各パスコンポーネントに関連付けられたURLに関連)。さらに、Jujuがダウンロードする必要のあるツールtarballも期待されています。

  |-streams
  |   |-v1
  |      |-index.(s)json
  |      |-product-foo.(s)json
  |      |-product-bar.(s)json
  |
  |-releases
      |-tools-abc.tar.gz
      |-tools-def.tar.gz
      |-tools-xyz.tar.gz

インデックスファイルは、「index。(s)json」(署名された場合はjjson)と呼ばれる必要があります。製品ファイルとツールのtarball名は、インデックス/製品ファイルにあるものと一致します。

設定

サポートされているパブリッククラウドの場合、追加の構成は必要ありません。すぐに動作します。ただし、テスト目的、またはサポートされていないクラウド展開の場合、Jujuはツールの場所と実行するイメージを知る必要があります。必要なすべてのメタデータが利用可能なサポートされているパブリッククラウドであっても、ユーザーは独自のメタデータを検索パスに配置して、クラウドによって提供されるものをオーバーライドできます。

これらは、最初に.juju/environments.yamlファイルで指定されます(その後、環境がブートストラップされるときにjenvファイルにコピーされます)。画像の場合は、image-metadata-url;を使用します。ツールの場合は、tools-metadata-urlを使用します。 URLは、クラウド内の世界で読み取り可能なコンテナ/バケット、httpサーバーが提供するアドレス、またはクラウドで実行されているすべてのノードインスタンスからアクセス可能な共有ディレクトリを指すことができます。

ベースURL https://juju-metadataを持つApache httpサーバーを想定し、<base>/imagesおよび<base>/toolsの情報へのアクセスを提供します。 Juju環境のyamlファイルには、次のエントリ(1つまたは両方)を含めることができます。

tools-metadata-url: https://juju-metadata/tools 
image-metadata-url: https://juju-metadata/images

各場所に必要なファイルは、前述のディレクトリレイアウトに従っています。共有ディレクトリの場合は、file:///sharedpathという形式のURLを使用します。

ユーザーが指定したURLに一致するメタデータが見つからない場合、環境のクラウドストレージが検索されます。ここではユーザー設定は不要です。すべてのJuju環境は、状態情報やチャームなどを保存するために使用されるクラウドストレージでセットアップされます。クラウドストレージのセットアップはプロバイダーに依存します。 AmazonおよびOpenstackクラウドの場合、ストレージは「control-bucket」値で定義され、Azureの場合、「storage-account-name」値が関連します。

クラウドストレージ内の(オプションの)ディレクトリ構造は次のとおりです。

  |-tools
  |   |-streams
  |       |-v1
  |   |-releases
  |
  |-images
      |-streams
          |-v1

もちろん、カスタムイメージメタデータのみが必要な場合、ツールディレクトリは必要ありません。逆も同様です。

Juju bootstrapが--upload-toolsオプションで実行される場合、ツールとメタデータは上記の構造に従って配置されることに注意してください。そのため、Jujuで使用できるツールが利用可能になります。

プロバイダーは、追加の場所でメタデータとツールを検索することを許可できます。 OpenStackの場合、クラウド管理者がKeystoneエンドポイントを作成できます。これらは次のように定義されます。

上記のツールメタデータコンテンツで説明されている値juju-tools product-streams上記の画像メタデータコンテンツで説明されている<path_url>値

他のプロバイダーも同様に場所を指定できますが、実装は異なります。

これは画像とツールのメタデータの検索に使用されるデフォルトの場所であり、上記の場所のいずれかで以前に一致するものが見つからなかった場合に使用されます。ユーザー設定は不要です。

プライベートクラウドを展開する場合、主に2つの問題があります。

  1. イメージIDはクラウドに固有です。
  2. 多くの場合、外部のインターネットアクセスはブロックされます

問題1は、イメージIDメタデータを生成して利用可能にする必要があることを意味します。

問題2は、ツールをローカルにミラーリングしてアクセスできるようにする必要があることを意味します。

画像とツールのメタデータの生成と検証を支援するJujuツールが存在します。ツールについては、単にhttps://streams.canonical.com/toolsをミラーリングするのが最も簡単です。ただし、イメージIDはクラウドストレージプロバイダーから取得されるため、イメージメタデータを単純にミラーリングすることはできません。したがって、以下で説明するコマンドを使用して、これを生成および検証する必要があります。

利用可能なJujuメタデータツールは、helpコマンドを使用して表示できます。

juju help metadata

全体的なワークフローは次のとおりです。

  • 画像メタデータを生成する
  • 画像のメタデータをメタデータ検索パスのどこかにコピーします
  • オプションで、メタデータ検索パスのどこかにツールをミラーリングする
  • オプションで、tools-metadata-urlおよび/またはimage-metadata-urlを構成します

を使用して画像メタデータを生成する

juju metadata generate-image -d <metadata_dir>

少なくとも、上記のコマンドは、使用するイメージIDと、ファイルを書き込むディレクトリを知っている必要があります。

地域、シリーズ、アーキテクチャなどの他の必須パラメーターは、現在のJuju環境(または-eオプションで指定された環境)から取得されます。これらのパラメーターは、コマンドラインでオーバーライドすることもできます。

イメージメタデータコマンドは、異なる地域、シリーズ、アーキテクチャで複数回実行でき、メタデータファイルに追加し続けます。必要なすべての画像IDを追加したら、インデックスと製品jsonファイルをJujuメタデータ検索パスの場所にアップロードできます。構成セクションにあるように、これはimage-metadata-url設定またはクラウドのストレージなどによって指定されたどこかにあります。

例:

  1. 画像メタデータURL

    • のコンテンツをhttp://somelocationにアップロードします
    • image-metadata-urlをhttp://somelocation/imagesに設定します
  2. クラウドストレージ

パラメーターなしで実行すると、検証コマンドは現在のJuju環境から(または-eで指定されたとおりに)必要なすべての詳細を取得し、インスタンスのスピンアップに使用するイメージIDを出力します。あるいは、コマンドラインでシリーズ、地域、アーキテクチャなどを指定して、環境設定の値を上書きできます。

通常、ツールと関連メタデータはhttps://streams.canonical.com/toolsからミラーリングされます。ただし、カスタムビルドツールのtarballのメタデータを手動で生成することは可能です。

まず、関連ツールのtarballを作成し、次のような構造のディレクトリに配置します。

<tools_dir>/tools/releases/

次のコマンドを実行して、ツールに関連するメタデータを生成します。

juju generate-tools -d <tools_dir>

最後に、のコンテンツをJujuメタデータ検索パスの場所にアップロードできます。構成セクションに従って、これはtools-metadata-url設定またはクラウドのストレージパス設定などによって指定されたどこかにあります。

例:

  1. tools-metadata-url

    • ツールdirの内容をhttp://somelocationにアップロードします
    • tools-metadata-urlをhttp://somelocation/toolsに設定します
  2. クラウドストレージ

のコンテンツを環境のクラウドストレージに直接アップロードする

画像のメタデータと同様に、検証コマンドを使用して、Jujuが使用できるツールを使用できるようにします。

juju metadata validate-tools

同じコメントが適用されます。パラメーターなしで検証ツールを実行してJuju環境の詳細を使用するか、コマンドラインで必要に応じて値をオーバーライドします。詳細については、juju help metadata validate-toolsを参照してください。

次のステップ:

9
Jorge Castro