Сбой развертывания шаблона ARM для балансировщика нагрузки Azure - Jenkins не выдает ошибок

В настоящее время я пытаюсь развернуть экземпляр Azure Load Balancer, чтобы обеспечить доступ с балансировкой нагрузки к двум брандмауэрам. Это необходимо для обеспечения конфигурации псевдо-HA.

Однако когда я пытаюсь развернуть этот шаблон с помощью Jenkins, он дает мне следующий бесполезный ответ (даже с командой --debug):

DEBUG: attempting to read file Test/deployment/azuredeploy.json as utf-8-sig
DEBUG: attempting to read file Test/parameters/deploymentParameters.json as utf-8-sig
DEBUG: No tty
available.
ERROR:

Итак, он говорит об ошибке, но не может сказать мне, в чем ошибка.

У меня две просьбы:

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

  2. Если кто-то знаком с синтаксисом Azure Load Balancer для ARM, вы можете взглянуть на мой шаблон развертывания и сообщить мне, есть ли в нем какие-либо немедленные недостатки. Код ниже.

код:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "virtualNetworkName": {
            "type": "string",
            "metadata": {
                "description": "vnet name"
            }
        },
        "subnet1Name": {
            "type": "string",
            "metadata": {
                "description": "Subnet 1 name"
            }
        },
        "subnet2Name": {
            "type": "string",
            "metadata": {
                "description": "Subnet 2 name"
            }
        },
        "loadBalancerName": {
            "type": "string",
            "metadata": {
                "description": "name of the load balancer instance"
            }
        },
        "nicName1": {
            "type": "string",
            "metadata": {
                "description": "name of NIC 1"
            }
        },
        "nicName2": {
            "type": "string",
            "metadata": {
                "description": "name of NIC 2"
            }
        },
        "nicName3": {
            "type": "string",
            "metadata": {
                "description": "name of NIC 3"
            }
        },
        "nicName4": {
            "type": "string",
            "metadata": {
                "description": "name of NIC 4"
            }
        },
        "location": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]",
            "metadata": {
                "description": "Location for all resources."
            }
        }
    },
    "variables": {
        "virtualNetworkName": "[parameters('virtualNetworkName')]",
        "subnet1Name": "[parameters('subnet1Name')]",
        "subnet2Name": "[parameters('subnet2Name')]",
        "loadBalancerName": "[parameters('loadBalancerName')]",
        "nicName1": "[parameters('nicName1')]",
        "nicName2": "[parameters('nicName2')]",
        "nicName3": "[parameters('nicName3')]",
        "nicName4": "[parameters('nicName4')]",
        "subnetRef1": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnet1Name'))]",
        "subnetRef2": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnet2Name'))]"
    },
    "resources": [
        {
            "apiVersion": "2018-08-01",
            "type": "Microsoft.Network/networkInterfaces",
            "name": "[variables('nicName1')]",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[concat('Microsoft.Network/loadBalancers/', variables('loadBalancerName'))]"
            ],
            "properties": {
                "ipConfigurations": [
                    {
                        "name": "ipconfig-firewallBE",
                        "properties": {
                            "subnet": {
                                "id": "[variables('subnetRef1')]"
                            },
                            "loadBalancerBackendAddressPools": [
                                {
                                    "id": "[concat(resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName')),'/backendAddressPools/firewallBE-subnet-pool')]"
                                }
                            ]
                        }
                    }
                ]
            }
        },
        {
            "apiVersion": "2018-08-01",
            "type": "Microsoft.Network/networkInterfaces",
            "name": "[variables('nicName2')]",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[concat('Microsoft.Network/loadBalancers/', variables('loadBalancerName'))]"
            ],
            "properties": {
                "ipConfigurations": [
                    {
                        "name": "ipconfig-firewallBE",
                        "properties": {
                            "subnet": {
                                "id": "[variables('subnetRef1')]"
                            },
                            "loadBalancerBackendAddressPools": [
                                {
                                    "id": "[concat(resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName')),'/backendAddressPools/firewallBE-subnet-pool')]"
                                }
                            ]
                        }
                    }
                ]
            }
        },
        {
            "apiVersion": "2018-08-01",
            "type": "Microsoft.Network/networkInterfaces",
            "name": "[variables('nicName3')]",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[concat('Microsoft.Network/loadBalancers/', variables('loadBalancerName'))]"
            ],
            "properties": {
                "ipConfigurations": [
                    {
                        "name": "ipconfig-firewallFE",
                        "properties": {
                            "subnet": {
                                "id": "[variables('subnetRef2')]"
                            },
                            "loadBalancerBackendAddressPools": [
                                {
                                    "id": "[concat(resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName')),'/backendAddressPools/firewallFE-subnet-pool')]"
                                }
                            ]
                        }
                    }
                ]
            }
        },
        {
            "apiVersion": "2018-08-01",
            "type": "Microsoft.Network/networkInterfaces",
            "name": "[variables('nicName4')]",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[concat('Microsoft.Network/loadBalancers/', variables('loadBalancerName'))]"
            ],
            "properties": {
                "ipConfigurations": [
                    {
                        "name": "ipconfig-firewallFE",
                        "properties": {
                            "subnet": {
                                "id": "[variables('subnetRef2')]"
                            },
                            "loadBalancerBackendAddressPools": [
                                {
                                    "id": "[concat(resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName')),'/backendAddressPools/firewallFE-subnet-pool')]"
                                }
                            ]
                        }
                    }
                ]
            }
        },
        {
            "apiVersion": "2017-08-01",
            "name": "[variables('loadBalancerName')]",
            "type": "Microsoft.Network/loadBalancers",
            "location": "[parameters('location')]",
            "sku": {
                "name": "Standard"
            },
            "properties": {
                "frontendIPConfigurations": [
                    {
                        "name": "firewallBE-FrontEnd",
                        "properties": {
                            "subnet": {
                                "id": "[variables('subnetRef1')]"
                            }
                        }
                    },
                    {
                        "name": "firewallFE-FrontEnd",
                        "properties": {
                            "subnet": {
                                "id": "[variables('subnetRef2')]"
                            }
                        }
                    }
                ],
                "backendAddressPools": [
                    {
                        "name": "firewallBE-subnet-pool"
                    },
                    {
                        "name": "firewallFE-subnet-pool"
                    }
                ],
                "loadBalancingRules": [
                    {
                        "properties": {
                            "frontendIPConfiguration": {
                                "id": "[concat(resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName')), '/frontendIpConfigurations/firewallBE-FrontEnd')]"
                            },
                            "backendAddressPool": {
                                "id": "[concat(resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName')), '/backendAddressPools/firewallBE-subnet-pool')]"
                            },
                            "probe": {
                                "id": "[concat(resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName')), '/probes/firewall-lb-probe')]"
                            },
                            "protocol": "All",
                            "frontendPort": 0,
                            "backendPort": 0
                        },
                        "name": "firewallBE-subnet-rule"
                    },
                    {
                        "properties": {
                            "frontendIPConfiguration": {
                                "id": "[concat(resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName')), '/frontendIpConfigurations/firewallFE-FrontEnd')]"
                            },
                            "backendAddressPool": {
                                "id": "[concat(resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName')), '/backendAddressPools/firewallFE-subnet-pool')]"
                            },
                            "probe": {
                                "id": "[concat(resourceId('Microsoft.Network/loadBalancers', variables('loadBalancerName')), '/probes/firewall-lb-probe')]"
                            },
                            "protocol": "All",
                            "frontendPort": 0,
                            "backendPort": 0
                        },
                        "name": "firewallFE-subnet-rule"
                    }
                ],
                "probes": [
                    {
                        "properties": {
                            "protocol": "Tcp",
                            "port": 0,
                            "intervalInSeconds": 15,
                            "numberOfProbes": 2
                        },
                        "name": "firewall-lb-probe"
                    }
                ]
            }
        }
    ]
}          

person iheartnetworks    schedule 04.01.2019    source источник
comment
как вы его вызываете? работает ли тот же шаблон локально?   -  person 4c74356b41    schedule 04.01.2019
comment
Вы имеете в виду запускать его напрямую из интерфейса командной строки, а не через Jenkins? К сожалению, мой администратор безопасности не позволяет мне иметь необходимый доступ для запуска заданий в интерфейсе командной строки. Только наша учетная запись автоматизации имеет необходимые разрешения, а у меня нет доступа к этой учетной записи.   -  person iheartnetworks    schedule 07.01.2019
comment
хорошо, так вы используете какой-то ярлык? вроде встроенного лазурного клита или чего-то в этом роде?   -  person 4c74356b41    schedule 07.01.2019
comment
Это один из способов взглянуть на это. На самом деле это дополнительный уровень, а не ярлык - для дополнительной безопасности. Я не могу напрямую вносить изменения, мне нужно создавать задания Jenkin с параметрами, которые можно изменить для последующих развертываний. Затем Дженкинс автоматизирует работу. Проблема в том, что Дженкинс не всегда может выдать сообщение об ошибке CLI полностью (или в данном случае - вообще), поэтому я не всегда могу понять, что не так с моим кодом. Я собираюсь проконсультироваться напрямую с Microsoft, поскольку мне не удалось убедить службу безопасности предоставить мне прямой доступ к CLI.   -  person iheartnetworks    schedule 07.01.2019
comment
извините, у меня вопрос: вы используете пакет / этап командной строки или какой-то конкретный этап Azure cli?   -  person 4c74356b41    schedule 07.01.2019
comment
Шаг Azure CLI, запуск шаблонов со следующим кодом: `Write-Host *** Deploying Load Balancer *** az group deployment create --resource-group rg-name --template-file Test / deployment / azuredeploy.json - параметры Test / parameters / deploymentParameters.json --debug `   -  person iheartnetworks    schedule 07.01.2019
comment
Я не так часто использую cli, но обычно с шаблонами для рук они не всегда возвращают настоящую ошибку. вам нужно будет копаться в идентификаторе корреляции, чтобы найти настоящую ошибку. вы можете использовать что-то вроде az group deployment show и получить от него выходные данные, а затем получить идентификатор корреляции из ошибки и получить дополнительные данные из az список журналов активности монитора   -  person 4c74356b41    schedule 07.01.2019
comment
Ваше предложение глубже изучить интерфейс командной строки сработало. Удалось убедить начальство разрешить мне запустить его напрямую через интерфейс командной строки, и он запрашивал пропавшую собственность. Спасибо.   -  person iheartnetworks    schedule 10.01.2019


Ответы (1)


в этом случае ошибка возникла из-за отсутствия параметра, который необходимо было передать в шаблон

person 4c74356b41    schedule 10.01.2019