演習 - Azure PowerShell でスクリプトを作成して保存する
このユニットでは、引き続き、Linux 管理ツールを作成している会社の例を扱います。 Linux VM を使用して自社のソフトウェアを潜在顧客にテストしてもらう計画であることを思い出してください。 リソース グループの準備はできているので、次に VM を作成します。
会社では Linux の大規模なトレード ショーでブースを確保するための費用を支払いました。 デモンストレーション領域を設け、そこにはそれぞれ別々の Linux VM に接続された 3 台の端末を設置する計画です。 1 日の終わりに VM を削除して再作成します。そうすることで、VM は毎朝新しい状態で開始されます。 仕事の後、疲れているときに手動で VM を作成すると、間違いやすくなります。 VM の作成プロセスを自動化するための PowerShell スクリプトを記述します。
仮想マシンを作成するスクリプトを記述する
このスクリプトを記述する、次の手順を右側の Cloud Shell で実行します。
Cloud Shell で自分のホーム フォルダーに切り替えます。
cd $HOME\clouddrive
ConferenceDailyReset.ps1 という名前の新しいテキスト ファイルを作成します。
touch "./ConferenceDailyReset.ps1"
統合エディターを開いて、ConferenceDailyReset.ps1 ファイルを選択します。
code "./ConferenceDailyReset.ps1"
ヒント
vim、nano、および emacs のいずれかを使用する場合、統合された Cloud Shell ではこれらのエディターもサポートされています。
変数の入力パラメーターをキャプチャすることから開始します。 次の行をスクリプトに追加します。
param([string]$resourceGroup)
注意
通常、
Connect-AzAccount
を使用する認証情報を使用して Azure を認証する必要があります。 ただし、Cloud Shell 環境では、お客様は既に認証されているため、この認証は必要ありません。VM の管理者アカウント用のユーザーとパスワードを求めるプロンプトを表示し、その結果を変数内に取り込みます。
$adminCredential = Get-Credential -Message "Enter a username and password for the VM administrator."
3 回実行されるループを作成します。
For ($i = 1; $i -le 3; $i++) { }
ループの本体で、各 VM の名前を作成し、それを変数内に格納してコンソールに出力します。
$vmName = "ConferenceDemo" + $i Write-Host "Creating VM: " $vmName
次に、
$vmName
変数を使用して VM を作成します。New-AzVm -ResourceGroupName $resourceGroup -Name $vmName -Credential $adminCredential -Image Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest
ファイルを保存します。 エディターの右上隅にある [...] メニューを使用できます。 [保存] に対する共通のアクセス キーもあります (Ctrl + S キーなど)。
完成したスクリプトは次のコードのようになります。
param([string]$resourceGroup)
$adminCredential = Get-Credential -Message "Enter a username and password for the VM administrator."
For ($i = 1; $i -le 3; $i++)
{
$vmName = "ConferenceDemo" + $i
Write-Host "Creating VM: " $vmName
New-AzVm -ResourceGroupName $resourceGroup -Name $vmName -Credential $adminCredential -Image Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest
}
スクリプトを実行する
ファイルを保存し、エディターの右上にある [...] コンテキスト メニューを使用してエディターを閉じます (または、Ctrl + Q キーを使用します)。
スクリプトを実行します。
./ConferenceDailyReset.ps1 <rgn>[sandbox resource group name]</rgn>
このスクリプトは、完了までに数分かかります。 完了したら、リソース グループ内にあるリソースを確認することで、スクリプトが正常に実行されたことを確認します。
Get-AzResource -ResourceType Microsoft.Compute/virtualMachines
それぞれに一意の名前がある、3 つの VM があるはずです。
スクリプト パラメーターで指定したリソース グループ内に 3 つの VM を自動的に作成するスクリプトを記述しました。 このスクリプトは短く単純ですが、Azure portal を使って手動で完了する場合は長い時間がかかるプロセスが自動化されています。