私はプールを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
を選択しないでください ...
完成したコードを投稿できますか? – RedPanda
これは非常に役立ちます - 画像名の前に/購読を/する必要があるとどう思いましたか? – RedPanda
最後に、AzureがHTTPロガーでodata.metadataの下に返す詳細なエラー・テキストを見つけました。ここでは、virtual_machine_image_idの適切なフォーマットが指定されています。これにより、Azureポータルのイメージの「リソースID」フィールドをコピーして、VMイメージの詳細を表示するときに表示する必要があることに気付きました。 – RedPanda