我开始编写bash脚本,以便在新的或现有的资源组中提供VM,这样我们就可以强制执行命名约定和配置。
在bash脚本中,如何检查资源是否已经存在,以便不再尝试创建它?
# 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发布于 2019-06-11 13:02:51
这应该适用于bash脚本:
if [ $(az group exists --name $RESOURCEGROUPNAME) = false ]; then
az group create --name $RESOURCEGROUPNAME --location $LOCATION
fi发布于 2017-09-28 02:53:42
在bash脚本中,如何检查资源是否已经存在,以便不再尝试创建它?
我们可以使用CLI2.0命令az group exists来测试资源组存在与否,如下所示:
C:\Users\user>az group exists -n jasontest
false这样,在创建它之前,我们可以测试可用的名称。在新资源组中,我们可以创建新的Vnet和其他资源。
目前,没有CLI2.0命令来测试是否存在其他资源。如果希望在现有资源组中创建资源,也许我们应该使用CLI2.0命令列出资源,并使用bash确保资源是否存在。
发布于 2021-05-04 12:34:37
您可以使用JMESPath查询来执行此操作。所有资源类型都支持这一点,AFAIK。
例如,对于VM:
az vm list --resource-group $RESOURCEGROUPNAME --query "[?name=='$VMNAME'] | length(@)"这将输出匹配VM的数量-- 1或0。
您可以使用它在bash中创建if/ use逻辑,如下所示。
if [[ $(az vm list --resource-group $RESOURCEGROUPNAME --query "[?name=='$VMNAME'] | length(@)") > 0 ]]
then
echo "VM exists"
else
echo "VM doesn't exist"
fihttps://stackoverflow.com/questions/46458034
复制相似问题