Обновление агента агента Ubuntu в Azure DevOps при обновлении шлюза приложений - PullRequest
0 голосов
/ 12 ноября 2018

Я развернул некоторые инфраструктуры с использованием Terraform, включая шлюз приложений.К сожалению, не все настройки могут быть установлены / обновлены с помощью terraform.У меня есть сценарий оболочки, который обновляет шлюз приложения.

#!/bin/bash
SP_ID=${1}
SP_SECRET=${2}
TENANT_ID=${3}
SUBSCRIPTION=${4}
RG=${5}

az login --service-principal -u ${SP_ID} -p ${SP_SECRET} -t ${TENANT_ID}
az account set --subscription ${SUBSCRIPTION}
az account list -o table

# Get the name of the AG
echo "RG = ${RG}"
AG=$(az network application-gateway list --resource-group ${RG} | tail -n 1 | awk '{ print $2 }')
echo "AG = ${AG}"

# Get the AG backend pool name
BP=$(az network application-gateway address-pool list --resource-group ${RG} --gateway-name ${AG} | tail -n 1 | awk '{ print $1 }')
echo "Backend pool = ${BP}"

# Get the frontendip of the load balancer
LB=$(az network lb list --resource-group ${RG} | tail -n 1 | awk '{ print $2         }')
LBFEIP=$(az network lb frontend-ip list --lb-name ${LB} --resource-group    ${RG} | tail -n 1 | awk '{ print $2 }')
echo "Load balancer = ${LB}"
echo "Frontend ip LB =  ${LBFEIP}"

# Update the backend pool of the AG with the frontend ip of the loadbalancer
echo "Updating Backend address pool of AG ${AG}"
az network application-gateway address-pool update --gateway-name $AG --resource-group $RG --name $BP --servers ${LBFEIP}

# Update http settings
echo "Updating HTTP settings of AG ${AG}"
AG_HTS=$(az network application-gateway http-settings list --resource-group     ${RG} --gateway-name ${AG} | tail -n 1 | awk '{ print $2 }')
az network application-gateway http-settings update --resource-group ${RG} --gateway-name ${AG} --name ${AG_HTS} --host-name-from-backend-pool true

# Update health probe
echo "Updating Health probe of AG ${AG}"
AG_HP=$(az network application-gateway probe list --resource-group ${RG} --gateway-name ${AG} | tail -n 1 | awk '{ print $4 }')
az network application-gateway probe update --resource-group ${RG} --gateway-name ${AG} --name ${AG_HP} --host '' --host-name-from-http-settings true

Этот скрипт отлично работает локально с моего ноутбука, но через конвейер выпуска azure devops я получаю сообщение об ошибке:

ERROR: az network application-gateway address-pool list: error: argument --gateway-name: expected one argument

Каким-то образом не удается получить имя шлюза приложения, когда скриптпроходит через конвейер выпуска.Опять же, при локальном запуске этого скрипта он работает нормально.Кто-нибудь знает, чего мне здесь не хватает или можно попробовать?

Я создал сценарий в WSL Ubuntu и использовал размещенный агент ubuntu для публикации артефактов, а также использовал размещенный агент ubuntu для развертывания сценария.

1 Ответ

0 голосов
/ 13 ноября 2018

Ошибка показывает проблему напрямую.Ваш параметр "AG" пуст.Вы можете получить параметр "AG" с помощью команды CLI:

az network application-gateway list -g nancyweb --query "[].name" -o tsv

Или, как вы хотите, с таблицей выходного формата:

az network application-gateway list -g nancyweb -o table | tail -n 1 | awk '{print $3}'

Вы можете получить более подробную информацию о az network application-gateway list.Но если вы хотите получить конкретный, есть момент, на который следует обратить внимание, так как команда list показывает все шлюзы приложений.

...