2

(Apache Brooklyn プロジェクト経由で) Apache jclouds 1.8.0 を使用して HP Helion クラウドにアクセスしたいのですが、以前に使用した構成が機能しなくなりました。ドキュメントでは、コンソールと同じユーザー名とパスワードを使用することが推奨されていますが、これにより HTTP 401 認証エラーが発生します。

送信される POST データはログに記録され、次のようになります (フォーマットされ、ユーザー名/パスワードが編集されています)。

{
  "auth":{
    "apiAccessKeyCredentials":{"accessKey":"user@example.org","secretKey":"XXXXXXXX"},
    "tenantName":"user@example.org.com-tenant1"
  }
}

jclouds の構成は、次のようにID資格情報を設定することで構成されます。

identity = user@example.org-tenant1:user@example.org
credential = XXXXXXXX

例外トレースは次のとおりです。

java.lang.IllegalStateException: Not authorized to access cloud JcloudsLocation[HP Helion (US East):user@example.org-tenant1:user@example.org] to resolve PortableTemplateBuilder[ports=[22], os=ubuntu, locationId=region-b.geo-1, osVersionRegex=12.04, is64bit=true, imageChooserFunction=brooklyn.location.jclouds.BrooklynImageChooser$3@5ec6379b, minRam=2048]
at brooklyn.location.jclouds.JcloudsLocation.buildTemplate(JcloudsLocation.java:1052) ~[brooklyn-locations-jclouds-0.7.0-20140817.024657-169.jar:0.7.0-SNAPSHOT]
Caused by: org.jclouds.rest.AuthorizationException: POST https://region-a.geo-1.identity.hpcloudsvc.com:35357/v2.0/tokens HTTP/1.1 -> HTTP/1.1 401 Unauthorized
at org.jclouds.openstack.nova.v2_0.handlers.NovaErrorHandler.handleError(NovaErrorHandler.java:93) ~[openstack-nova-1.8.0.jar:1.8.0]
Caused by: org.jclouds.http.HttpResponseException: request: POST https://region-a.geo-1.identity.hpcloudsvc.com:35357/v2.0/tokens HTTP/1.1  [{"auth":{"apiAccessKeyCredentials":{"accessKey":"user@example.org","secretKey":"XXXXXXXX"},"tenantName":"user@example.org-tenant1"}}] failed with response: HTTP/1.1 401 Unauthorized
at org.jclouds.openstack.nova.v2_0.handlers.NovaErrorHandler.handleError(NovaErrorHandler.java:78) ~[openstack-nova-1.8.0.jar:1.8.0]
4

1 に答える 1

3

結局のところ、これにはいくつかの問題があります。まず、jclouds が 1.8.0 で機能する方法が変更されました。リリース ノートに記載されています。

1.8.0 以降、HP Cloud Object Storage プロバイダーでは、地域属性を明示的に指定する必要があります。この属性は、適切なエンドポイントを選択するために使用されるようになりました。リージョンが明示的に設定されていない場合、任意のエンドポイントが選択されます。これは、以前のバージョンの jclouds を使用するときに選択されたエンドポイントとは異なる場合があります。

これは私にとっては問題ではありませんが、とにかく構成でリージョンを明示的に設定しています。

次に、いくつかの POST リクエストを異なるコンテンツでエンドポイントに送信した後、jclouds はユーザー名とパスワードによる認証ではなく、アクセス キー ベースの認証を使用しているようです。そのため、HP Helionコンソールにログインした後、ページ上部のユーザー名ドロップダウンから[アクセス キーの管理]を選択しました。次に、 Show Secret keysをクリックして、必要なアクセスと秘密鍵のデータを表示することができました。既存のキーの有効期限が切れている場合は、新しいキーを作成する必要があるかもしれませんが、その必要はありませんでした。次に、jclouds のID資格情報データを適切に変更する必要がありました。

identity = user@example.org-tenant1:ACCESSKEYDATA
credential = SECRETKEYDATA

これにより、jclouds API が正常に接続して VM を作成できるようになります。

最後に、ブルックリンの場所記述子の一部として地域名を構成する必要がありましたが、他の jclouds アプリケーションではこれが異なる場合があります。

brooklyn.location.named.hpcloud-west = jclouds:hpcloud-compute
brooklyn.location.named.hpcloud-west.region = region-a.geo-1
brooklyn.location.named.hpcloud-west.displayName = HP Helion (US West)
于 2014-08-17T16:41:08.453 に答える