クイック スタート: Azure CLI で最初の Batch ジョブを実行するQuickstart: Run your first Batch job with the Azure CLI

Azure CLI は、コマンドラインやスクリプトで Azure リソースを作成および管理するために使用します。The Azure CLI is used to create and manage Azure resources from the command line or in scripts. このクイック スタートでは、Azure CLI を使用して Batch アカウント、コンピューティング ノード (仮想マシン) の "プール"、そのプールで "タスク" を実行する "ジョブ" を作成する方法を示します。This quickstart shows how to use the Azure CLI to create a Batch account, a pool of compute nodes (virtual machines), and a job that runs tasks on the pool. 各サンプル タスクでは、プール ノードの 1 つに対して基本的なコマンドが実行されます。Each sample task runs a basic command on one of the pool nodes. このクイック スタートを完了すると、Batch サービスの主要な概念を理解し、より大規模でより現実的なワークロードで Batch を試せるようになります。After completing this quickstart, you will understand the key concepts of the Batch service and be ready to try Batch with more realistic workloads at larger scale.

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

Azure Cloud Shell を使用するUse Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。You can use either Bash or PowerShell with Cloud Shell to work with Azure services. ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell を開始するには:To start Azure Cloud Shell:

オプションOption 例とリンクExample/Link
コード ブロックの右上隅にある [使ってみる] を選択します。Select Try It in the upper-right corner of a code block. [使ってみる] を選択しても、コードは Cloud Shell に自動的にコピーされません。Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell の [使ってみる] の例
https://shell.azure.com に移動するか、 [Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. 新しいウィンドウで Cloud Shell を起動するLaunch Cloud Shell in a new window
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Azure Portal の [Cloud Shell] ボタン

Azure Cloud Shell でこの記事のコードを実行するには:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell を開始します。Start Cloud Shell.

  2. [コピー] ボタンを選択して、コード ブロックをコードにコピーします。Select the Copy button on a code block to copy the code.

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードを Cloud Shell セッションに貼り付けます。Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Enter キーを選択して、コードを実行します。Select Enter to run the code.

CLI をローカルにインストールして使用する場合、このクイック スタートを実施するには、Azure CLI バージョン 2.0.20 以降を実行している必要があります。If you choose to install and use the CLI locally, this quickstart requires that you are running the Azure CLI version 2.0.20 or later. バージョンを確認するには、az --version を実行します。Run az --version to find the version. インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。If you need to install or upgrade, see Install Azure CLI.

リソース グループを作成するCreate a resource group

az group create コマンドを使用して、リソース グループを作成します。Create a resource group with the az group create command. Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。An Azure resource group is a logical container into which Azure resources are deployed and managed.

次の例では、myResourceGroup という名前のリソース グループを eastus2 に作成します。The following example creates a resource group named myResourceGroup in the eastus2 location.

az group create \
    --name myResourceGroup \
    --location eastus2

ストレージ アカウントの作成Create a storage account

Azure ストレージ アカウントを Batch アカウントとリンクできます。You can link an Azure Storage account with your Batch account. このクイック スタートには必要ありませんが、ストレージ アカウントは、アプリケーションをデプロイしたり、ほとんどの実際のワークロードの入力データと出力データを保存したりする際に役立ちます。Although not required for this quickstart, the storage account is useful to deploy applications and store input and output data for most real-world workloads. az storage account create コマンドを使用して、リソース グループ内にストレージ アカウントを作成します。Create a storage account in your resource group with the az storage account create command.

az storage account create \
    --resource-group myResourceGroup \
    --name mystorageaccount \
    --location eastus2 \
    --sku Standard_LRS

Batch アカウントを作成するCreate a Batch account

az batch account create コマンドを使用して Batch アカウントを作成します。Create a Batch account with the az batch account create command. コンピューティング リソース (コンピューティング ノードのプール) や Batch ジョブを作成するには、アカウントが必要です。You need an account to create compute resources (pools of compute nodes) and Batch jobs.

次の例では、mybatchaccount という名前の Batch アカウントを myResourceGroup に作成し、作成したアカウントをリンクします。The following example creates a Batch account named mybatchaccount in myResourceGroup, and links the storage account you created.

az batch account create \
    --name mybatchaccount \
    --storage-account mystorageaccount \
    --resource-group myResourceGroup \
    --location eastus2

コンピューティング プールとジョブを作成および管理するには、Batch による認証が必要です。To create and manage compute pools and jobs, you need to authenticate with Batch. az batch account login コマンドを使用してアカウントにログインします。Log in to the account with the az batch account login command. ログインしたら、az batch コマンドでこのアカウントのコンテキストを使用します。After you log in, your az batch commands use this account context.

az batch account login \
    --name mybatchaccount \
    --resource-group myResourceGroup \
    --shared-key-auth

コンピューティング ノードのプールの作成Create a pool of compute nodes

Batch アカウントが用意できたら、az batch pool create コマンドを使用して、Linux コンピューティング ノードのサンプル プールを作成します。Now that you have a Batch account, create a sample pool of Linux compute nodes using the az batch pool create command. 次の例では、Ubuntu 16.04 LTS を実行している Standard_A1_v2 サイズの 2 つのノードで構成される、mypool という名前のプールを作成します。The following example creates a pool named mypool of 2 size Standard_A1_v2 nodes running Ubuntu 16.04 LTS. 推奨されるノード サイズは、この簡単な例についてパフォーマンスとコストのバランスが取れています。The suggested node size offers a good balance of performance versus cost for this quick example.

az batch pool create \
    --id mypool --vm-size Standard_A1_v2 \
    --target-dedicated-nodes 2 \
    --image canonical:ubuntuserver:16.04-LTS \
    --node-agent-sku-id "batch.node.ubuntu 16.04" 

Batch によってすぐにプールが作成されますが、コンピューティング ノードを割り当てて開始するには数分かかります。Batch creates the pool immediately, but it takes a few minutes to allocate and start the compute nodes. この間、プールの状態は resizing になります。During this time, the pool is in the resizing state. プールの状態を確認するには、az batch pool show コマンドを実行します。To see the status of the pool, run the az batch pool show command. このコマンドによってプールのすべてのプロパティが表示されるため、特定のプロパティを照会できます。This command shows all the properties of the pool, and you can query for specific properties. 次のコマンドは、プールの割り当ての状態を取得します。The following command gets the allocation state of the pool:

az batch pool show --pool-id mypool \
    --query "allocationState"

プールの状態が変化している間にジョブとタスクを作成するには、次の手順を続行します。Continue the following steps to create a job and tasks while the pool state is changing. 割り当ての状態が steady となり、すべてのノードが実行されていると、プールはタスクを実行できるようになります。The pool is ready to run tasks when the allocation state is steady and all the nodes are running.

ジョブの作成Create a job

プールを作成できたら、そこで実行するジョブを作成します。Now that you have a pool, create a job to run on it. Batch ジョブは、1 つ以上のタスクの論理グループです。A Batch job is a logical group for one or more tasks. ジョブには、優先度やタスクの実行対象プールなど、タスクに共通する設定が含まれています。A job includes settings common to the tasks, such as priority and the pool to run tasks on. az batch job create コマンドを使用して、Batch ジョブを作成します。Create a Batch job by using the az batch job create command. 次の例では、プール mypool 上にジョブ myjob を作成します。The following example creates a job myjob on the pool mypool. 最初、ジョブにはタスクがありません。Initially the job has no tasks.

az batch job create \
    --id myjob \
    --pool-id mypool

タスクの作成Create tasks

ここで、az batch task create コマンドを使用して、ジョブで実行するいくつかのタスクを作成します。Now use the az batch task create command to create some tasks to run in the job. この例では、同じタスクを 4 つ作成します。In this example, you create four identical tasks. 各タスクで command-line を実行してコンピューティング ノードで Batch 環境変数を表示した後、90 秒待ちます。Each task runs a command-line to display the Batch environment variables on a compute node, and then waits 90 seconds. Batch を使用する場合、このコマンド ラインは、アプリまたはスクリプトを指定する場所です。When you use Batch, this command line is where you specify your app or script. Batch には、アプリやスクリプトをコンピューティング ノードにデプロイする方法が多数用意されています。Batch provides a number of ways to deploy apps and scripts to compute nodes.

次の Bash スクリプトでは、4 つの並列タスク (mytask1 - mytask4) を作成します。The following Bash script creates 4 parallel tasks (mytask1 to mytask4).

for i in {1..4}
do
   az batch task create \
    --task-id mytask$i \
    --job-id myjob \
    --command-line "/bin/bash -c 'printenv | grep AZ_BATCH; sleep 90s'"
done

コマンドの出力には、タスクごとの設定が表示されます。The command output shows settings for each of the tasks. Batch は、これらのタスクをコンピューティング ノードに配布します。Batch distributes the tasks to the compute nodes.

タスクの状態の表示View task status

作成したタスクは、プールで実行するために Batch によってキューに登録されます。After you create a task, Batch queues it to run on the pool. ノードが実行できるようになると、タスクが実行されます。Once a node is available to run it, the task runs.

az batch task show コマンドを使用して、Batch タスクの状態を表示します。Use the az batch task show command to view the status of the Batch tasks. 次の例では、プールのノードのいずれかで実行されている mytask1 の詳細を表示します。The following example shows details about mytask1 running on one of the pool nodes.

az batch task show \
    --job-id myjob \
    --task-id mytask1

コマンドの出力には、多くの詳細が含まれていますが、タスクのコマンド ラインの exitCode と、nodeId を書き留めておいてください。The command output includes many details, but take note of the exitCode of the task command line and the nodeId. exitCode が 0 の場合は、タスクのコマンド ラインが正常に完了したことを示します。An exitCode of 0 indicates that the task command line completed successfully. nodeId は、タスクが実行されたプール ノードの ID を示します。The nodeId indicates the ID of the pool node on which the task ran.

タスク出力の表示View task output

コンピューティング ノード上にタスクによって作成されたファイルを一覧表示するには、az batch task file list コマンドを使用します。To list the files created by a task on a compute node, use the az batch task file list command. 次のコマンドでは、mytask1 によって作成されたファイルの一覧が表示されます。The following command lists the files created by mytask1:

az batch task file list \
    --job-id myjob \
    --task-id mytask1 \
    --output table

次のような出力になります。Output is similar to the following:

Name        URL                                                                                         Is Directory      Content Length
----------  ------------------------------------------------------------------------------------------  --------------  ----------------
stdout.txt  https://mybatchaccount.eastus2.batch.azure.com/jobs/myjob/tasks/mytask1/files/stdout.txt  False                  695
certs       https://mybatchaccount.eastus2.batch.azure.com/jobs/myjob/tasks/mytask1/files/certs       True
wd          https://mybatchaccount.eastus2.batch.azure.com/jobs/myjob/tasks/mytask1/files/wd          True
stderr.txt  https://mybatchaccount.eastus2.batch.azure.com/jobs/myjob/tasks/mytask1/files/stderr.txt  False                     0

出力ファイルの 1 つをローカル ディレクトリにダウンロードするには、az batch task file download コマンドを使用します。To download one of the output files to a local directory, use the az batch task file download command. この例では、タスクの出力は stdout.txt にあります。In this example, task output is in stdout.txt.

az batch task file download \
    --job-id myjob \
    --task-id mytask1 \
    --file-path stdout.txt \
    --destination ./stdout.txt

stdout.txt の内容は、テキスト エディターで表示できます。You can view the contents of stdout.txt in a text editor. 内容は、ノードで設定されている Azure Batch 環境変数を示します。The contents show the Azure Batch environment variables that are set on the node. 独自の Batch ジョブを作成すると、これらの環境変数は、タスクのコマンド ラインのほか、コマンド ラインにより実行されるプログラムとスクリプトで参照できます。When you create your own Batch jobs, you can reference these environment variables in task command lines, and in the apps and scripts run by the command lines. 次に例を示します。For example:

AZ_BATCH_TASK_DIR=/mnt/batch/tasks/workitems/myjob/job-1/mytask1
AZ_BATCH_NODE_STARTUP_DIR=/mnt/batch/tasks/startup
AZ_BATCH_CERTIFICATES_DIR=/mnt/batch/tasks/workitems/myjob/job-1/mytask1/certs
AZ_BATCH_ACCOUNT_URL=https://mybatchaccount.eastus2.batch.azure.com/
AZ_BATCH_TASK_WORKING_DIR=/mnt/batch/tasks/workitems/myjob/job-1/mytask1/wd
AZ_BATCH_NODE_SHARED_DIR=/mnt/batch/tasks/shared
AZ_BATCH_TASK_USER=_azbatch
AZ_BATCH_NODE_ROOT_DIR=/mnt/batch/tasks
AZ_BATCH_JOB_ID=myjobl
AZ_BATCH_NODE_IS_DEDICATED=true
AZ_BATCH_NODE_ID=tvm-257509324_2-20180703t215033z
AZ_BATCH_POOL_ID=mypool
AZ_BATCH_TASK_ID=mytask1
AZ_BATCH_ACCOUNT_NAME=mybatchaccount
AZ_BATCH_TASK_USER_IDENTITY=PoolNonAdmin

リソースをクリーンアップするClean up resources

Batch のチュートリアルとサンプルを続行する場合は、このクイック スタートで作成した Batch アカウントとリンクされているストレージ アカウントを使用します。If you want to continue with Batch tutorials and samples, use the Batch account and linked storage account created in this quickstart. Batch アカウント自体の料金は発生しません。There is no charge for the Batch account itself.

ジョブがスケジュールされていない場合でも、ノードの実行中はプールに対して料金が発生します。You are charged for pools while the nodes are running, even if no jobs are scheduled. プールが不要になったら、az batch pool delete コマンドを使用して削除します。When you no longer need a pool, delete it with the az batch pool delete command. プールを削除すると、ノード上のタスク出力はすべて削除されます。When you delete the pool, all task output on the nodes is deleted.

az batch pool delete --pool-id mypool

必要がなくなったら、az group delete コマンドを使用して、リソース グループ、Batch アカウント、プール、およびすべての関連リソースを削除できます。When no longer needed, you can use the az group delete command to remove the resource group, Batch account, pools, and all related resources. 次のように、リソースを削除します。Delete the resources as follows:

az group delete --name myResourceGroup

次のステップNext steps

このクイック スタートでは、Batch アカウント、Batch プール、Batch ジョブを作成しました。In this quickstart, you created a Batch account, a Batch pool, and a Batch job. このジョブによってサンプル タスクが実行されたため、いずれかのノード上に作成された出力が表示されました。The job ran sample tasks, and you viewed output created on one of the nodes. Batch サービスの主要な概念を理解できたので、より大規模でより現実的なワークロードを使用して Batch を試す準備が整いました。Now that you understand the key concepts of the Batch service, you are ready to try Batch with more realistic workloads at larger scale. Azure Batch の詳細については、Azure Batch のチュートリアルを続行してください。To learn more about Azure Batch, continue to the Azure Batch tutorials.