我的问候消失了,所以你好
使用Azure CLI,我需要通过一个命令来获取我的VMSS实例的instance-id和private ip。
我已经尝试过:
az vmss list-instances
:但是我只有私有IP az network application-gateway show-backend-health
:但我只有实例ID 您知道使用cli命令来获取它们吗?
我需要获取我的应用程序网关(后端池是我的VMSS)中不正常的实例并将其删除。
我成功获取了不正常的IP实例(使用命令az vmss delete-instances
),但是我需要使用实例ID映射这些IP才能使用此命令:self-join
使用所有az vmss命令,我找不到一种方法来映射具有实例ID的私有IP ...
目标是运行可以自动删除不正常实例的作业。
感谢您的帮助! 瓦伦丁
答案 0 :(得分:1)
您可以使用已知的专用IP地址过滤虚拟机ID,
az vmss nic list -g resourcegroupname --vmss-name vmssname --query "[?ipConfigurations[0].privateIpAddress == '10.0.0.7'].virtualMachine.id" -o tsv
答案 1 :(得分:0)
我找到了要搜索的内容,并且使用了南希(Nancy)的查询,所以我将脚本放在这里,如果它可以帮助某人
#!/bin/bash
set -e
set -o pipefail
#############
# VARIABLES #
#############
resource_group="your_rg"
appgw_name="your_appgw"
vmss_name="your_vmss"
subscription="your_sub"
##########
# SCRIPT #
##########
az account set --subscription ${subscription}
# Get Actual Backend IPs
backend_ips=$(az network application-gateway show-backend-health --resource-group ${resource_group} --name ${appgw_name} | grep 'address')
backend_ips=$(sed 's/"//g;s/ //g;s/address://g' <<< ${backend_ips})
# Get Backend Health
backend_health=$(az network application-gateway show-backend-health --resource-group ${resource_group} --name ${appgw_name} | grep 'health\"')
backend_health=$(sed 's/"//g;s/ //g;s/health://g' <<< ${backend_health})
# Get Backend Count
backend_count=$(echo ${backend_ips} | awk -F "," '{print NF-1}')
# Put backend ips and health into tab
IFS=',' read -ra backend_ips <<< "${backend_ips}"
IFS=',' read -ra backend_health <<< "${backend_health}"
# SEARCH FOR A UNHEALTHY INSTANCE
for (( i=0; i < ${backend_count}; i++))
do
echo -e "\n########\n# [IP] ${backend_ips[$i]}"
echo -e "# [Health] ${backend_health[$i]}\n########\n"
if [ "${backend_health[$i]}" == "Unhealthy" ]
then
echo -e " -> L'instance ${backend_ips[$i]} est à l'état Unhealthy."
unhealthy_instance_id=$(az vmss nic list -g ${resource_group} --vmss-name ${vmss_name} --query "[?ipConfigurations[0].privateIpAddress == '${backend_ips[$i]}'].virtualMachine.id" -o tsv | cut -d "/" -f 11)
echo -e " -> Suppression de l'instance n°${unhealthy_instance_id}"
#az vmss delete-instances -g ${resource_group} -n ${vmss_name} --instance-ids ${unhealthy_instance_id}
fi
done
exit 0