Azure CLI を使用してデプロイを自動化する
データベースの自動化は、もはや大企業向けではありません。現在、あらゆる規模の企業が競争力を維持するために不可欠です。 データベース管理者は、データベース タスクを自動化することがいくつかの理由で非常に重要です。
- アプリケーションとデータベースをきめ細かく制御する
- 容易なスケーラビリティ、多数の資産の管理時の効率の向上
- ルーチン タスクを自動化するためのスクリプトの再利用性
- GUI ツールを使用できない場合の簡単なトラブルシューティング
Azure Command-Line インターフェイス (CLI) は、Azure リソースの作成と管理に役立つクロスプラットフォーム ツールです。 対話型のプロンプトまたはスクリプトを使用して、ターミナルからコマンドを実行できます。
Azure CLI は、Linux、Mac、または Windows コンピューターにインストールできます。 また、Azure portal 上または Docker コンテナー内の Cloud Shell ターミナルを使用して、ブラウザーから実行することもできます。
Azure CLI の構文は、reference name - command - parameter - parameter value パターンに従います。 たとえば、サブスクリプション間の切り替えは一般的なタスクです。 構文を次に示します。
az account set --subscription "my subscription name"
PowerShell と Azure CLI
Azure PowerShell と Azure CLI は、どちらもクロスプラットフォームのコマンド ライン ツールであり、Windows、macOS、Linux で Azure リソースを作成および管理できます。 主な違いは、サポートされているシェル環境にあります。
| シェル環境 | Azure CLI | Azure Powershell |
|---|---|---|
| Cmd (英語の可能性あり) | Yes | |
| Bash | Yes | |
| Windows PowerShell | Yes | Yes |
| PowerShell | Yes | Yes |
適切なツールを選択するには、エクスペリエンスと作業環境を検討してください。
Azure CLI は bash スクリプトに似ています。通常 Linux システムを使用するユーザーにとっては直感的です。 一方、Azure PowerShell には、PowerShell から Azure リソースを管理するのに役立つモジュールが含まれています。 PowerShell コマンドは、標準の動詞名詞構文に従って、Windows システムに慣れているユーザーにとって自然に適しています。
CLI および PowerShell フォームの両方で一般的に使用されるコマンドの簡単な比較を次に示します。
| コマンド | Azure CLI | Azure PowerShell |
|---|---|---|
| Web ブラウザーを使用したサインイン | az login(ログインするためのコマンド) | Connect-AzAccount |
| 利用可能なサブスクリプションの取得 | az account list (アカウントリストを表示) | Get-AzSubscription |
| サブスクリプションの設定 | az account set –subscription | Set-AzContext -Subscription |
| すべての仮想マシンを一覧表示する | az vm list | Get-AzVM |
| 新しい SQL サーバーを作成する | az sql server create | New-AzSqlServer |
Azure CLI を使用した SQL Database のデプロイ
SQL Database をデプロイし、Azure CLI を使用して Azure サービスからのアクセスを許可するファイアウォール規則を作成する方法の例を次に示します。
let "randomIdentifier=$RANDOM*$RANDOM"
$resourceGroup = "<your resource group>"
$location = "<your location preference>"
$server = "dp300-sql-server-$randomIdentifier"
$login = "sqladmin"
$password = "Pa$$w0rD-$randomIdentifier"
az sql server create --name $server --resource-group $resourceGroup --location "$location" --admin-user $login --admin-password $password
az sql server firewall-rule create --resource-group $resourceGroup --server $server -n AllowYourIp --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0
使用可能なすべての Azure SQL CLI コマンドの詳細については、AZURE SQL CLI コマンドを参照してください。
Azure CLI と PowerShell を使用した Azure Resource Manager (ARM) テンプレートのデプロイ
PowerShell では、デプロイのスコープに複数のオプションがあります。 リソース グループ、サブスクリプション、管理グループにデプロイできます。これは、同じ Azure テンプレートの下にあるサブスクリプションのコレクションであり、大企業のデプロイやテナントでよく使用されます。 Azure Resource Manager テンプレートはパラメーター化されるため、次の例に示すように、パラメーターをインラインまたはパラメーター ファイルを介して渡す必要があります。
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
-TemplateFile c:\MyTemplates\azuredeploy.json `
-TemplateParameterFile c:\MyTemplates\storage.parameters.json
パラメーターファイルとテンプレート ファイルは、Git リポジトリ、Azure Blob Storage、またはデプロイするマシンからアクセスできるその他の場所に格納できます。
Azure CLI には、PowerShell と同じデプロイ スコープ オプションが用意されています。 次の例に示すように、PowerShell の場合と同様に、ローカルまたはリモートのパラメーター ファイルとテンプレートを使用できます。
az deployment group create --resource-group ExampleResourceGroup --template-file '\path\template.json'
離れた場所にあり、リンクされているテンプレートを、ストレージ アカウントに格納されている相対パスでデプロイするには、クエリ文字列を使用して SAS トークンを指定します。
az deployment group create \
--name linkedTemplateWithRelativePath \
--resource-group myResourceGroup \
--template-uri "https://stage20210126.blob.core.windows.net/template-staging/mainTemplate.json" \
--query-string $sasToken
注意
現時点では、Azure CLI ではリモート Bicep ファイルの直接デプロイはサポートされていません。 代わりに、Bicep CLI を使用して Bicep ファイルを JSON テンプレートに変換し、リモートの場所から JSON テンプレートをデプロイできます。