MAASでOpenstack ready があります。Ubuntuイメージでクラウドを準備し、Jujuでデプロイできるようにするにはどうすればよいですか?
Jujuがクラウドをブートストラップするとき、2つの重要な情報が必要です。
この必要な情報は、「シンプルストリーム」と呼ばれるjsonメタデータ形式で保存されます。アマゾンウェブサービス、HPクラウド、Azureなどのサポートされているパブリッククラウドサービスの場合、エンドユーザーによるアクションは不要です。ただし、プライベートクラウドを設定している人、または物事の動作を変更したい(たとえば、別のUbuntuイメージを使用したい)人は、動作方法について少し理解した後、独自のメタデータを作成できます。
Simplestreams形式は、関連するアイテムを構造的に記述するために使用されます。 Launchpadプロジェクト lp:simplestreams を参照してください。以下では、使用するメタデータをJujuがどのように決定するか、独自のイメージとツールを作成し、Jujuがデフォルトの代わりにそれらを使用する方法について説明します。
画像でもツールでも、Jujuは検索パスを使用して適切なメタデータを探します。パスコンポーネント(ルックアップ順)は次のとおりです。
tools-metadata-url
またはimage-metadata-url
構成設定で指定)。メタデータは、インラインで署名される場合と署名されない場合があります。 「.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は、ツールをローカルにミラーリングしてアクセスできるようにする必要があることを意味します。
画像とツールのメタデータの生成と検証を支援するJujuツールが存在します。ツールについては、単にhttps://streams.canonical.com/tools
をミラーリングするのが最も簡単です。ただし、イメージIDはクラウドストレージプロバイダーから取得されるため、イメージメタデータを単純にミラーリングすることはできません。したがって、以下で説明するコマンドを使用して、これを生成および検証する必要があります。
利用可能なJujuメタデータツールは、helpコマンドを使用して表示できます。
juju help metadata
全体的なワークフローは次のとおりです。
を使用して画像メタデータを生成する
juju metadata generate-image -d <metadata_dir>
少なくとも、上記のコマンドは、使用するイメージIDと、ファイルを書き込むディレクトリを知っている必要があります。
地域、シリーズ、アーキテクチャなどの他の必須パラメーターは、現在のJuju環境(または-eオプションで指定された環境)から取得されます。これらのパラメーターは、コマンドラインでオーバーライドすることもできます。
イメージメタデータコマンドは、異なる地域、シリーズ、アーキテクチャで複数回実行でき、メタデータファイルに追加し続けます。必要なすべての画像IDを追加したら、インデックスと製品jsonファイルをJujuメタデータ検索パスの場所にアップロードできます。構成セクションにあるように、これはimage-metadata-url
設定またはクラウドのストレージなどによって指定されたどこかにあります。
例:
画像メタデータURL
http://somelocation
にアップロードしますhttp://somelocation/images
に設定しますクラウドストレージ
パラメーターなしで実行すると、検証コマンドは現在のJuju環境から(または-eで指定されたとおりに)必要なすべての詳細を取得し、インスタンスのスピンアップに使用するイメージIDを出力します。あるいは、コマンドラインでシリーズ、地域、アーキテクチャなどを指定して、環境設定の値を上書きできます。
通常、ツールと関連メタデータはhttps://streams.canonical.com/tools
からミラーリングされます。ただし、カスタムビルドツールのtarballのメタデータを手動で生成することは可能です。
まず、関連ツールのtarballを作成し、次のような構造のディレクトリに配置します。
<tools_dir>/tools/releases/
次のコマンドを実行して、ツールに関連するメタデータを生成します。
juju generate-tools -d <tools_dir>
最後に、のコンテンツをJujuメタデータ検索パスの場所にアップロードできます。構成セクションに従って、これはtools-metadata-url設定またはクラウドのストレージパス設定などによって指定されたどこかにあります。
例:
tools-metadata-url
http://somelocation
にアップロードしますhttp://somelocation/tools
に設定しますクラウドストレージ
のコンテンツを環境のクラウドストレージに直接アップロードする
画像のメタデータと同様に、検証コマンドを使用して、Jujuが使用できるツールを使用できるようにします。
juju metadata validate-tools
同じコメントが適用されます。パラメーターなしで検証ツールを実行してJuju環境の詳細を使用するか、コマンドラインで必要に応じて値をオーバーライドします。詳細については、juju help metadata validate-tools
を参照してください。
次のステップ: