首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure CLI如何检查资源是否存在

Azure CLI如何检查资源是否存在
EN

Stack Overflow用户
提问于 2017-09-27 22:13:50
回答 6查看 21.1K关注 0票数 16

我开始编写bash脚本,以便在新的或现有的资源组中提供VM,这样我们就可以强制执行命名约定和配置。

在bash脚本中,如何检查资源是否已经存在,以便不再尝试创建它?

代码语言:javascript
复制
# 1.    If a new resource group is desired, create it now.  Microsoft Docs
az group create --name $RESOURCEGROUPNAME --location $LOCATION

# 2.    Create a virtual network and subnet if one has not already been created.  Microsoft Docs
#   Consider a separate VNet for each resource group. 
#   az network vnet list -output table
az network vnet create \
  --resource-group $RESOURCEGROUPNAME \
  --name $RESOURCEGROUPNAME-vnet \
  --address-prefix 10.0.x.0/24 \
  --subnet-name default \
  --subnet-prefix 10.0.x.0/24

# x is the next available 3rd octet value

# 3.    Create a public IP Address.  Microsoft Docs
az network public-ip create \
  --resource-group $RESOURCEGROUPNAME \
  --name $VMNAME-ip \
  --dns-name $DNSNAME

# 4.    Create a network security group.  Microsoft Docs
az network nsg create \
  --resource-group $RESOURCEGROUPNAME \
  --name $VMNAME-nsg 

# 5.    Create a rule to allow SSH to the machine.  Microsoft Docs
az network nsg rule create \
  --resource-group $RESOURCEGROUPNAME \
  --nsg-name $VMNAME-nsg \
  --name allow-ssh \
  --protocol tcp \
  --priority 1000 \
  --destination-port-range 22 \
  --access allow

# 6.    Create a virtual NIC.   Microsoft Docs
az network nic create \
  --resource-group $RESOURCEGROUPNAME \
  --name $VMNAME-nic \
  --vnet-name $RESOURCEGROUPNAME-vnet \
  --subnet default \
  --public-ip-address $VMNAME-ip \
  --network-security-group $VMNAME-nsg

# 7.    Create an availability set, if redundancy is required.  Microsoft Docs
az vm availability-set create \
  --resource-group $RESOURCEGROUPNAME \
  --name $AVSETNAME-as

# 8.    Create the VM. Microsoft Docs
az vm create \
  --resource-group $RESOURCEGROUPNAME \
  --location $LOCATION \
  --name $VMNAME \
  --image UbuntuLTS \
  --size $VMSIZE \
  --availability-set $AVSETNAME-as \
  --nics $VMNAME-nic \
  --admin-username $ADMINUSERNAME \
  --authentication-type ssh
  --ssh-key-value @$SSHPUBLICKEYFILE \
  --os-disk-name $VMNAME-osdisk
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2019-06-11 13:02:51

这应该适用于bash脚本:

代码语言:javascript
复制
if [ $(az group exists --name $RESOURCEGROUPNAME) = false ]; then
    az group create --name $RESOURCEGROUPNAME --location $LOCATION
fi
票数 19
EN

Stack Overflow用户

发布于 2017-09-28 02:53:42

在bash脚本中,如何检查资源是否已经存在,以便不再尝试创建它?

我们可以使用CLI2.0命令az group exists来测试资源组存在与否,如下所示:

代码语言:javascript
复制
C:\Users\user>az group exists -n jasontest
false

这样,在创建它之前,我们可以测试可用的名称。在新资源组中,我们可以创建新的Vnet和其他资源。

目前,没有CLI2.0命令来测试是否存在其他资源。如果希望在现有资源组中创建资源,也许我们应该使用CLI2.0命令列出资源,并使用bash确保资源是否存在。

票数 8
EN

Stack Overflow用户

发布于 2021-05-04 12:34:37

您可以使用JMESPath查询来执行此操作。所有资源类型都支持这一点,AFAIK。

例如,对于VM:

代码语言:javascript
复制
az vm list --resource-group $RESOURCEGROUPNAME --query "[?name=='$VMNAME'] | length(@)"

这将输出匹配VM的数量-- 10

您可以使用它在bash中创建if/ use逻辑,如下所示。

代码语言:javascript
复制
if [[ $(az vm list --resource-group $RESOURCEGROUPNAME --query "[?name=='$VMNAME'] | length(@)") > 0 ]]
then
  echo "VM exists"
else
  echo "VM doesn't exist"
fi
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46458034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档