演習 - リソースのデプロイ順序を制御する
この部分では、最初にいくつかの基本的なセットアップ タスクを実行します。 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 を開く
Visual Studio Code を開きます。
[ターミナル] メニューを使用してターミナル ウィンドウを開きます。
ターミナル ウィンドウの右側のドロップダウン メニューに pwsh が表示されている場合は、正しいシェルが設定されているため、次のセクションにスキップできます。
それ以外の場合は、ドロップダウンを選択し、[既定のシェルの選択] を選択します。
pwsh を選択します。
ターミナルで + を選択して、pwsh をシェルとして使用する新しいターミナルを作成します。
Azure へのサインイン
Connect-AzAccount
を実行してアカウントにサインインします。Connect-AzAccount
ブラウザー ウィンドウが開きます。
サンドボックスのアクティブ化に使用したアカウントを選択し、プロンプトが表示されたらブラウザー ウィンドウを閉じます。
アクティブなサブスクリプションを設定する
Get-AzSubscription
を実行して、サンドボックス環境のサブスクリプション ID を取得します。Get-AzSubscription
Concierge Subscription
を探し、2 番目の列をコピーします。 これは、cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0 のようになります。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 とその実行に必要なすべてのリソースがプロビジョニングされます。
次の
curl
コマンドを実行して、ARM テンプレートをダウンロードします。curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
ConvertTo-SecureString
コマンドレットを実行し、結果を$secure
という名前の PowerShell 変数に割り当てます。$secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
これで、暗号化されたバージョンのパスワードが作成され、次に配置スクリプトを渡すことができます。
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 経由で接続できることを確認します。 次の手順に従います。
Invoke-Expression
コマンドを実行して、SSH 経由で VM に接続します。Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
メッセージが表示されたら、「
yes
」と入力して接続を続けます。 次に、管理者パスワードinsecurepassword123!
を入力します。重要
実際には、パスワードは安全に保持しておきます。 一般にパスワードを使用するより安全な公開キー認証を使用することもできます。
VM への SSH 接続から、
hostname
を実行して VM のホスト名を出力します。hostname
VM の内部ホスト名
vm1
が表示されます。vm1
exit
を実行して、SSH セッションを終了します。exit
おめでとうございます。ARM テンプレートを使用して Linux VM が正常にデプロイされました。 VM は、依存リソースが含まれる一般的なリソースの種類です。
セットアップ
ここでは、Visual Studio Code を開き、ターミナル セッションを作成して、無料の Azure サンドボックス環境によって提供される Azure サブスクリプションに接続します。
これらのセットアップ タスクは、このモジュールの間に 1 回実行する必要があります。 後の演習でサインアウトしたり切断された場合は、これらの手順に戻って参照できます。
Visual Studio Code でシェルを開く
Visual Studio Code を開きます。
[ターミナル] メニューを使用してターミナル ウィンドウを開きます。
ドロップダウン メニューに好みのシェル (bash や zsh など) が表示されている場合は、次のセクションに進むことができます。
それ以外の場合は、ドロップダウンを選択し、[既定のシェルの選択] を選択します。
目的のシェルの種類を選択します。
ターミナルで [+] を選択し、選択したシェルの種類で新しいターミナルを作成します。
Azure へのサインイン
ターミナルから
az login
を実行します。az login
ブラウザー ウィンドウが開きます。
サンドボックスのアクティブ化に使用したアカウントを選択し、プロンプトが表示されたらブラウザー ウィンドウを閉じます。
アクティブなサブスクリプションを設定する
次の 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 とその実行に必要なすべてのリソースがプロビジョニングされます。
次の
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
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 経由で接続できることを確認します。 次の手順に従います。
次の
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
次の
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
コマンドをもう一度実行し、今度は
$()
構文を使用して SSH コマンドを実行します。$(az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv)
メッセージが表示されたら、「
yes
」と入力して接続を続けます。 次に、管理者パスワードinsecurepassword123!
を入力します。重要
実際には、パスワードは安全に保持しておきます。 一般にパスワードを使用するより安全な公開キー認証を使用することもできます。
VM への SSH 接続から、
hostname
を実行して VM のホスト名を出力します。hostname
VM の内部ホスト名
vm1
が表示されます。vm1
exit
を実行して、SSH セッションを終了します。exit
おめでとうございます。ARM テンプレートを使用して Linux VM が正常にデプロイされました。 VM は、依存リソースが含まれる一般的なリソースの種類です。