演習 - リソースのデプロイ順序を制御する

完了

この部分では、最初にいくつかの基本的なセットアップ タスクを実行します。 Visual Studio Code で、無料の Azure サンドボックス環境によって提供される Azure サブスクリプションに、ターミナル セッションを接続します。 これにより、Azure に対してコマンドの認証を行うことができるようになります。

次に、Linux 仮想マシン (VM) をプロビジョニングする基本的な ARM テンプレートを実行します。 デプロイが完了したら、VM が実行されていて接続可能であることを確認します。

VM の操作は一般的なタスクですが、VM リソースで VM を作成するには、その前にネットワークとストレージ コンポーネントが存在している必要があることがわかります。 dependsOn コンストラクトを使用して、リソースのプロビジョニング順序を設定できることがわかります。

セットアップ

ここでは、Visual Studio Code を開き、PowerShell セッションを作成して、無料の Azure サンドボックス環境によって提供される Azure サブスクリプションに接続します。

これらのセットアップ タスクは、このモジュールの間に 1 回実行する必要があります。 後の演習でサインアウトしたり切断された場合は、これらの手順に戻って参照できます。

Visual Studio Code で PowerShell を開く

  1. Visual Studio Code を開きます。

  2. [ターミナル] メニューを使用してターミナル ウィンドウを開きます。

  3. ターミナル ウィンドウの右側のドロップダウン メニューに pwsh が表示されている場合は、正しいシェルが設定されているため、次のセクションにスキップできます。

    Screenshot of Terminal window, terminal type.

  4. それ以外の場合は、ドロップダウンを選択し、[既定のシェルの選択] を選択します。

  5. pwsh を選択します。

    Screenshot that shows selecting a shell from the drop-down menu.

  6. ターミナルで + を選択して、pwsh をシェルとして使用する新しいターミナルを作成します。

Azure へのサインイン

  1. Connect-AzAccount を実行してアカウントにサインインします。

    Connect-AzAccount
    

    ブラウザー ウィンドウが開きます。

  2. サンドボックスのアクティブ化に使用したアカウントを選択し、プロンプトが表示されたらブラウザー ウィンドウを閉じます。

アクティブなサブスクリプションを設定する

  1. Get-AzSubscription を実行して、サンドボックス環境のサブスクリプション ID を取得します。

    Get-AzSubscription
    

    Concierge Subscription を探し、2 番目の列をコピーします。 これは、cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0 のようになります。

  2. Set-AzContext を実行して、アクティブなサブスクリプションをコンシェルジェ サブスクリプションに変更します。

    Note

    {Your subscription ID} は、最後のコマンドで取得したコンシェルジェ サブスクリプションの ID に置き換えてください。

    $subscription = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $subscription
    

既定のリソース グループを設定する

通常は、Azure CLI コマンドを実行するときは、リソース グループを指定する必要があります。

サンドボックスにより、既定のリソース グループが自動的に提供されます。 Azure CLI コマンドを後で実行しやすくするには、ここで既定のリソース グループを設定します。

Set-AzDefault コマンドレットを実行して、既定のリソース グループを設定します。

Set-AzDefault -ResourceGroupName <rgn>resource group name</rgn>

Note

通常、PowerShell を使用して Azure にリソースをデプロイするときは、リソース グループを指定する必要があります。 Set-AzDefault を使用してデプロイのコンテキストを設定することにより、この要件を回避しています。

一般的な VM デプロイの内容

VM をデプロイするとき、VM を動作させるには、いくつかのリソースをデプロイする必要があることに注意してください。

通常、VM と共にデプロイする必要があるリソースの種類の概要を次に示します。

  • Microsoft.Storage/storageAccounts。 ストレージ アカウントにより、オペレーティング システムとファイル用のディスク領域が提供されます。
  • Microsoft.Network/publicIPAddresses。 パブリック IP アドレスを使用すると、インターネットから VM に接続できます。
  • Microsoft.Network/networkSecurityGroups。 ネットワーク セキュリティ グループには、仮想ネットワークのインバウンドとアウトバウンドのトラフィックを処理するための規則が含まれています。
  • Microsoft.Network/virtualNetworks。 仮想ネットワーク内に VM を配置する必要があります。 このリソースを使用するには、その前にネットワーク セキュリティ グループをデプロイする必要があります。
  • Microsoft.Network/networkInterfaces。 このリソースは、パブリック IP アドレスと仮想ネットワークの 2 つのリソースに依存します。
  • Microsoft.Compute/virtualMachines。 仮想マシンは、デプロイする主要なリリソースです。 それは、ストレージ アカウントとネットワーク インターフェイスの 2 つの異なるリソースに依存しています。

Linux VM のデプロイ

ここでは、用意されている GitHub リポジトリから ARM テンプレートをダウンロードします。 そのテンプレートを使用すると、Linux VM とその実行に必要なすべてのリソースがプロビジョニングされます。

  1. 次の curl コマンドを実行して、ARM テンプレートをダウンロードします。

    curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
    
  2. ConvertTo-SecureString コマンドレットを実行し、結果を $secure という名前の PowerShell 変数に割り当てます。

    $secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
    

    これで、暗号化されたバージョンのパスワードが作成され、次に配置スクリプトを渡すことができます。

  3. New-AzResourceGroupDeployment コマンドを実行して、テンプレートをデプロイします。

    New-AzResourceGroupDeployment `
      -TemplateFile "./azuredeploy.json" `
      -adminUsername "azureuser" `
      -vmName "vm1" `
      -adminPasswordOrKey $secure
    

    コマンドの実行には数分かかることがあります。 コマンドが実行されている間に、必要に応じて、別のブラウザー タブで ARM テンプレートを調べることができます。

    dependsOn キーを検索して、リソースの依存関係を確認します。 たとえば、仮想マシン リソースは、ネットワーク インターフェイスに依存します。

    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2020-06-01",
    "name": "[parameters('vmName')]",
    "location": "[parameters('location')]",
    "dependsOn": [
      "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]"
    ],
    

デプロイを検証する

VM がプロビジョニングされていて、SSH 経由で接続できることを確認します。 次の手順に従います。

  1. Invoke-Expression コマンドを実行して、SSH 経由で VM に接続します。

    Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
    

    メッセージが表示されたら、「yes」と入力して接続を続けます。 次に、管理者パスワード insecurepassword123! を入力します。

    重要

    実際には、パスワードは安全に保持しておきます。 一般にパスワードを使用するより安全な公開キー認証を使用することもできます。

  2. VM への SSH 接続から、hostname を実行して VM のホスト名を出力します。

    hostname
    

    VM の内部ホスト名 vm1 が表示されます。

    vm1
    
  3. exit を実行して、SSH セッションを終了します。

    exit
    

おめでとうございます。ARM テンプレートを使用して Linux VM が正常にデプロイされました。 VM は、依存リソースが含まれる一般的なリソースの種類です。

セットアップ

ここでは、Visual Studio Code を開き、ターミナル セッションを作成して、無料の Azure サンドボックス環境によって提供される Azure サブスクリプションに接続します。

これらのセットアップ タスクは、このモジュールの間に 1 回実行する必要があります。 後の演習でサインアウトしたり切断された場合は、これらの手順に戻って参照できます。

Visual Studio Code でシェルを開く

  1. Visual Studio Code を開きます。

  2. [ターミナル] メニューを使用してターミナル ウィンドウを開きます。

  3. ドロップダウン メニューに好みのシェル (bashzsh など) が表示されている場合は、次のセクションに進むことができます。

  4. それ以外の場合は、ドロップダウンを選択し、[既定のシェルの選択] を選択します。

  5. 目的のシェルの種類を選択します。

    Screenshot that shows selecting a shell from the drop-down menu.

  6. ターミナルで [+] を選択し、選択したシェルの種類で新しいターミナルを作成します。

Azure へのサインイン

  1. ターミナルから az login を実行します。

    az login
    

    ブラウザー ウィンドウが開きます。

  2. サンドボックスのアクティブ化に使用したアカウントを選択し、プロンプトが表示されたらブラウザー ウィンドウを閉じます。

アクティブなサブスクリプションを設定する

次の az account set コマンドを実行し、Azure サンドボックス環境をアクティブなサブスクリプションとして設定します。

az account set -s "Concierge Subscription"

Note

コマンドが失敗する場合は、az account list --refresh --all を実行してから、az account set コマンドを再度実行します。

既定のリソース グループを設定する

通常は、Azure CLI コマンドを実行するときは、リソース グループを指定する必要があります。

サンドボックスにより、既定のリソース グループが自動的に提供されます。 Azure CLI コマンドを後で実行しやすくするには、ここで既定のリソース グループを設定します。

既定のリソース グループを設定するには、次の az configure コマンドを実行します。

az configure --defaults group=<rgn>resource group name</rgn>

一般的な VM デプロイの内容

VM をデプロイするとき、VM を動作させるには、いくつかのリソースをデプロイする必要があることに注意してください。

通常、VM と共にデプロイする必要があるリソースの種類の概要を次に示します。

  • Microsoft.Storage/storageAccounts。 ストレージ アカウントにより、オペレーティング システムとファイル用のディスク領域が提供されます。
  • Microsoft.Network/publicIPAddresses。 パブリック IP アドレスを使用すると、インターネットから VM に接続できます。
  • Microsoft.Network/networkSecurityGroups。 ネットワーク セキュリティ グループには、仮想ネットワークのインバウンドとアウトバウンドのトラフィックを処理するための規則が含まれています。
  • Microsoft.Network/virtualNetworks。 仮想ネットワーク内に VM を配置する必要があります。 このリソースを使用するには、その前にネットワーク セキュリティ グループをデプロイする必要があります。
  • Microsoft.Network/networkInterfaces。 このリソースは、パブリック IP アドレスと仮想ネットワークの 2 つのリソースに依存します。
  • Microsoft.Compute/virtualMachines。 仮想マシンは、デプロイする主要なリリソースです。 それは、ストレージ アカウントとネットワーク インターフェイスの 2 つの異なるリソースに依存しています。

Linux VM のデプロイ

ここでは、用意されている GitHub リポジトリから Azure Resource Manager (ARM) テンプレートをダウンロードします。 そのテンプレートを使用すると、Linux VM とその実行に必要なすべてのリソースがプロビジョニングされます。

  1. 次の wget コマンドを実行して、ARM テンプレートをダウンロードします。

    wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json
    

    wget がインストールされていない場合は、次の curl コマンドを実行できます。

    curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
    
  2. az deployment group create コマンドを実行して、テンプレートをデプロイします。

    az deployment group create \
      --template-file azuredeploy.json \
      --parameters adminUsername=azureuser vmName=vm1 adminPasswordOrKey='insecurepassword123!'
    

    コマンドの実行には数分かかることがあります。 コマンドが実行されている間に、必要に応じて、別のブラウザー タブで ARM テンプレートを調べることができます。

    dependsOn キーを検索して、リソースの依存関係を確認します。 たとえば、仮想マシン リソースは、ネットワーク インターフェイスに依存します。

    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2020-06-01",
    "name": "[parameters('vmName')]",
    "location": "[parameters('location')]",
    "dependsOn": [
      "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]"
    ],
    

デプロイを検証する

VM がプロビジョニングされていて、SSH 経由で接続できることを確認します。 次の手順に従います。

  1. 次の az deployment group list コマンドを実行して、サブスクリプション内の配置グループの一覧を表示します。

    az deployment group list --output table
    

    azuredeploy という名前の配置グループが 1 つあることがわかります。

    Name         ResourceGroup                               State      Timestamp                         Mode
    -----------  ------------------------------------------  ---------  --------------------------------  -----------
    azuredeploy  learn-1ef901aa-3f6a-46aa-8e93-a7f11e5192b8  Succeeded  2020-11-24T17:55:39.762517+00:00  Incremental
    
  2. 次の az deployment group show コマンドを実行して、VM への接続に使用できる SSH コマンドを表示します。

    az deployment group show \
      --name azuredeploy \
      --query properties.outputs.sshCommand.value \
      --output tsv
    

    ARM テンプレートの output セクションでこのプロパティが定義されています。 次に例を示します。

    ssh azureuser@simplelinuxvm-a33zb3sc332ue.westus.cloudapp.azure.com
    
  3. コマンドをもう一度実行し、今度は $() 構文を使用して SSH コマンドを実行します。

    $(az deployment group show \
      --name azuredeploy \
      --query properties.outputs.sshCommand.value \
      --output tsv)
    

    メッセージが表示されたら、「yes」と入力して接続を続けます。 次に、管理者パスワード insecurepassword123! を入力します。

    重要

    実際には、パスワードは安全に保持しておきます。 一般にパスワードを使用するより安全な公開キー認証を使用することもできます。

  4. VM への SSH 接続から、hostname を実行して VM のホスト名を出力します。

    hostname
    

    VM の内部ホスト名 vm1 が表示されます。

    vm1
    
  5. exit を実行して、SSH セッションを終了します。

    exit
    

おめでとうございます。ARM テンプレートを使用して Linux VM が正常にデプロイされました。 VM は、依存リソースが含まれる一般的なリソースの種類です。