2017-10-15 9 views
1

私はプールをPythonで作成したいと思っています。マーケットプレイスからイメージ(Ubuntu Server 16.04)を使用しているときにこれを行うことができますが、カスタムイメージ(Ubuntu Server 16.04も使用したい)を使用したいと思います。Azureバッチプール:Python経由でカスタムVMイメージを使用するにはどうすればよいですか?

これは私が私のプールを作成しています方法です:私は私のイメージの参照を作成するためにbatch.models.ImageReference()を使用する必要が

new_pool = batch.models.PoolAddParameter(
     id=pool_id, 
     virtual_machine_configuration=batchmodels.VirtualMachineConfiguration(
      image_reference=image_ref_to_use, # ?? 
      node_agent_sku_id=sku_to_use), 
     vm_size=_POOL_VM_SIZE, 
     target_dedicated_nodes=_POOL_NODE_COUNT, 
     start_task=start_task, 
     max_tasks_per_node=_CORES_PER_NODE 
) 

Iイメージング...しかし、私はそれを使用する方法がわかりません。

Azureの仮想マシンMarketplaceの画像やカスタム Azureの仮想マシンイメージへの参照:

はい、私は次のよう述べてい documentationをチェック。

それはパラメータを示しますよう:

  • 出版社(STR)
  • プラン(STR)
  • SKU(STR)
  • バージョン(文字列)
  • virtual_machine_image_id(STR)

ただし、tパラメータvirtual_machine_image_idが存在しません。つまり、batch.models.ImageReference(virtual_machine_image_id)は使用できません。

プールにカスタム画像を使用するにはどうすればよいですか?

UPDATE

だから私はそれが私が紺碧のpythonライブラリをアンインストールし、再度インストールして何回に関係なく、virtual_machine_image_idが利用可能になることはありませんことが判明...カスタムイメージを使用する方法を考え出しました。

その後、hereがダウンロードされました。それを開き、ImageReferenceクラスをチェックし、低いと見て、virtual_machine_image_idは、ImageReferenceクラスの__init__関数で利用できました。私はpythonのホイールをダウンロードし、それをインストールするpipを使用しました。それはうまくいった。

そう思った。

私はnode_agent_sku_idが何であるか把握しようとしましたが、手作業でプールを作成し、Batch Node Agent SKU IDフィールドを見るだけで見つけることができました。

は、今私は、認証に苦しんでいます...私は取得しています

エラーは次のとおりです。

Serverは要求を認証に失敗しました。署名を含めて Authorizationヘッダーの値が正しく形成されていることを確認してください。

AuthenticationErrorDetail:指定した認証タイプ Computeタイプの外部リソースがリンクされている場合、SharedKeyは許可されません。 。

azure.batch.models.batch_error.BatchErrorException:{ 'LANG': 'EN-US'、 '値':「サーバーは、要求の認証に失敗しました。 を確認してくださいAuthorizationヘッダの値が 署名など正しく形成されている\ nRequestId:f8c1a3b3-65c4-4efd-9c4f-75c5c253f992用の\ n後やり直し:2017-10-15T20:36:06.7898187Z '}

エラーから、私は私がSharedKeyCredentialsを使用することはできませんだということを理解して:

credentials = batchauth.SharedKeyCredentials(_BATCH_ACCOUNT_NAME, 
              _BATCH_ACCOUNT_KEY) 

batch_client = batch.BatchServiceClient(
    credentials, 
    base_url=_BATCH_ACCOUNT_URL) 

私は何をしなければなりませんか?

UPDATE 2

OK。

from azure.batch import BatchServiceClient 
from azure.common.credentials import ServicePrincipalCredentials 

credentials = ServicePrincipalCredentials(
    client_id=CLIENT_ID, 
    secret=SECRET, 
    tenant=TENANT_ID, 
    resource="https://batch.core.windows.net/" 
) 
    batch_client = BatchServiceClient(
    credentials, 
    base_url=BATCH_ACCOUNT_URL 
) 

を認証するために:ユーザーfparkは、私が使用する必要があることを私に伝えています。残念ながら、上記のコードはhereと記載されており、CLIENT_IDなどの参照はありません。あります。

私はその後、同じものであるように思われるドキュメントの別の部分を見つけることができた:https://azure-sdk-for-python.readthedocs.io/en/v2.0.0rc3/resourcemanagementauthentication.html

別のWebページに私を指摘このページに:私はそのチュートリアルを、最後に自分のアプリケーションを認証するために管理https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal

...

NOTE

アプリケーションを作成し、チュートリアルでは、あなたを教えてくれます:

アプリケーションの名前とURLを入力します。作成するアプリケーションのタイプにWeb app/ APIまたはNativeのいずれかを選択します。 の値を設定したら、[作成]を選択します。

アプリケーション・キーを取得するためのオプションを持っていないので、Nativeを選択しないでください ...

+0

完成したコードを投稿できますか? – RedPanda

+0

これは非常に役立ちます - 画像名の前に/購読を/する必要があるとどう思いましたか? – RedPanda

+0

最後に、AzureがHTTPロガーでodata.metadataの下に返す詳細なエラー・テキストを見つけました。ここでは、virtual_machine_image_idの適切なフォーマットが指定されています。これにより、Azureポータルのイメージの「リソースID」フィールドをコピーして、VMイメージの詳細を表示するときに表示する必要があることに気付きました。 – RedPanda

答えて

0

あなたがazure-batchのPython SDKのv4.0.0以降をインストールする必要があります。通常はpip install --upgrade azure-batchで、最新バージョンを入手するだけです。それでも機能しない場合は、--force-reinstallオプションを追加して強制的に(--upgradeで)処理することができます。

node_agent_sku_idの適切な値については、オペレーティングシステムとサポートされているノードエージェントskus間のマッピングを確認するには、list_node_agent_skus操作を使用する必要があります。

この問題を使用するには、認証の問題に関してAzure Active Directory authenticationを使用する必要があります。共有キー認証では機能しません。残念ながら、この機能を取り巻くドキュメントは欠けており、現在更新中です。

+0

ありがとう、「Azure Active Directory認証」の使い方の例がありますか?これどうやってするの? 'batch.BatchServiceClient( 資格情報、 base_url = _BATCH_ACCOUNT_URL)'に何を渡しますか? – pookie

+0

これを行う方法を示すリンクを追加しました。 – fpark

関連する問題