本文简单提供了一个Azure powershell脚本,能实现如下功能
- Azure (China)账户是否已经登陆了,如果没登陆,会提示你登陆。
- 要创建的资源组是否存在,存在的话不再创建,直接部署template,不存在就先创建资源组,再部署template。
1 ## 简单定义变量 2 $ResourceGroupName='myrsg' 3 $Location='china east' 4 ## 检测是否已经登陆azure,如果没登陆,会跳转提示登陆。 5 Try 6 { 7 Get-AzureRmContext -ErrorAction Continue 8 } 9 Catch [System.Management.Automation.PSInvalidOperationException]10 {11 Login-AzureRmAccount -EnvironmentName Azurechinacloud12 }13 ## define the deploy function,指定部署文件的路径。可以是远端文件,也可以是本地文件。14 Function Deployment([string]$deployPath,[string]$deployParameterPath)15 {16 Write-Output "test the deployment"17 test-AzureRmResourceGroupDeployment -ResourceGroupName $ResourceGroupName18 -TemplateFile $deployPath
19 -TemplateParameterFile $deployParameterPath20 Write-Output "deploy begin"21 New-AzureRmResourceGroupDeployment -ResourceGroupName $ResourceGroupName22 -TemplateFile $deployPath
23 -TemplateParameterFile $deployParameterPath24 }25 ## 检测资源组是否存在,逻辑行为可定制。26 ## reousrceGroup的部署是增量的形式,组下的已有资源不再被重新部署。27 $resourceGroup = Get-AzureRmResourceGroup -Name $ResourceGroupName -ErrorAction SilentlyContinue28 if ( -not $ResourceGroup ) {29 30 Write-Output "Could not find resource group '$ResourceGroupName' - will create it"31 32 Write-Output "Creating resource group '$ResourceGroupName' in location '$Location'"33 New-AzureRmResourceGroup -Name $resourceGroupName -Location $Location34 Deployment .\Desktop\template\template\azuredeploy.json .\Desktop\template\template\azuredeploy.parameters.json35 }36 else {37 Write-Output "Using existing resource group '$ResourceGroupName'" 38 Deployment .\Desktop\template\template\azuredeploy.json .\Desktop\template\template\azuredeploy.parameters.json39 }
主体逻辑大致如上,你可以自己优化一下。Line 11是登陆China Azure的,登陆global Azure移除参数即可。
如果你对Azure ARM 不了解,可以参考如下,进行深入学习: