Политика Azure DeployIfNotExist завершается, но не развертывает шаблон / не соответствует - PullRequest
0 голосов
/ 10 июня 2019

Я работаю над политикой DeployIfNotExist Azure, которая проверяет все виртуальные сети, проверяет наличие определенного пиринга и, если да, проверяет настройки UDR на месте.Если он отличается от указанного, он предназначен для развертывания требуемого UDR.

Я не могу заставить это работать, и текущее состояние таково, что первоначальная проверка работает нормально (сообщается о несовместимых виртуальных сетях), но автоматическое исправление не выполняется для новых / обновленных виртуальных сетей.Кроме того, если я выполняю исправление вручную, виртуальная сеть по-прежнему помечается как несовместимая.

Правило политики политики Azure ниже.

{
  "if": {
      "anyOf": [
          {
            "allOf": [
                {
                    "field": "type",
                    "equals": "Microsoft.Network/virtualNetworks"
                },
                {
                    "field": "Microsoft.Network/virtualNetworks/VirtualNetworkPeerings[*].peeringState",
                    "equals": "Connected"
                },
                {
                    "field": "Microsoft.Network/virtualNetworks/VirtualNetworkPeerings[*].name",
                    "equals": "peerSpokeToHub"
                }
            ]
          },
          {
            "allOf": [
                {
                    "field": "type",
                    "equals": "Microsoft.Network/virtualNetworks/VirtualNetworkPeerings"
                },
                {
                    "field": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings/remoteVirtualNetwork.id",
                    "exists": "true"
                }
            ]
          }
      ]
    },
    "then": {
          "effect": "deployIfNotExists",
          "details": {
              "type": "Microsoft.Network/virtualNetworks/subnets",
              "existenceCondition": {
                  "allOf": [
                      {
                          "field": "Microsoft.Network/virtualNetworks/subnets/routeTable.id",
                          "exists": "true"
                      },
                      {
                          "field": "Microsoft.Network/virtualNetworks/subnets/routeTable.routes[*].name",
                          "equals": "toNVA"
                      },
                      {
                          "field": "Microsoft.Network/virtualNetworks/subnets/routeTable.routes[*].addressPrefix",
                          "equals": "0.0.0.0/0"
                      },
                      {
                          "field": "Microsoft.Network/virtualNetworks/subnets/routeTable.routes[*].nextHopType",
                          "equals": "VirtualAppliance"
                      },
                      {
                          "field": "Microsoft.Network/virtualNetworks/subnets/routeTable.routes[*].nextHopIpAddress",
                          "in": ["10.0.0.1", "10.0.0.2"]
                      },
                      {
                          "field": "Microsoft.Network/virtualNetworks/subnets/routeTable.routes[*].provisioningState",
                          "equals": "Succeeded"
                      }
                  ]
              },
              "roleDefinitionIds": [
                  "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
              ],
              "deployment": {
                  "properties": {
                      "mode": "incremental",
                      "template": {
                        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                        "contentVersion": "1.0.0.0",
                        "parameters": {
                          "vNetName": {
                            "type": "string",
                            "metadata": {
                              "description": "subnet to attach udr"
                            }
                          },
                          "RouteTableName": {
                            "type": "string",
                            "metadata": {
                              "description": "Name of a route table upon remediation"
                            }
                          },
                          "location": {
                            "type": "string",
                            "metadata": {
                              "description": "location of resource"
                            }
                          },
                          "NVAip": {
                            "type": "string",
                            "metadata": {
                              "description": "NVA IP"
                            }
                          }
                        },
                        "resources": [
                          {
                            "name": "[parameters('RouteTableName')]",
                            "type": "Microsoft.Network/routeTables",
                            "apiVersion": "2018-11-01",
                            "location": "[parameters('location')]",
                            "properties": {
                              "routes": [
                                {
                                  "properties": {
                                    "addressPrefix": "0.0.0.0/0",
                                    "nextHopType": "VirtualAppliance",
                                    "nextHopIpAddress": "[parameters('NVAip')]"
                                  },
                                  "name": "toNVA"
                                }
                              ]
                            }
                          },
                          {
                            "apiVersion": "2017-08-01",
                            "name": "apply-routetable-to-subnet",
                            "type": "Microsoft.Resources/deployments",
                            "resourceGroup": "[resourceGroup().name]",
                            "dependsOn": [
                              "[concat('Microsoft.Network/routeTables/', 'RouteTable')]"
                            ],
                            "properties": {
                              "mode": "Incremental",
                              "template": {
                                "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                                "contentVersion": "1.0.0.0",
                                "resources": [
                                  {
                                    "apiVersion": "2018-08-01",
                                    "type": "Microsoft.Network/virtualNetworks/subnets",
                                    "name": "[concat(parameters('vNetName'),'/default')]",
                                    "location": "[resourceGroup().location]",
                                    "properties": {
                                      "addressPrefix": "[reference(resourceId(resourceGroup().name, 'Microsoft.Network/virtualNetworks/subnets', parameters('vNetName'), 'default'), '2018-03-01').addressPrefix]",
                                      "routeTable": {
                                        "id": "[resourceId('Microsoft.Network/routeTables', parameters('RouteTableName'))]"
                                      },
                                      "networkSecurityGroup": {
                                        "id": "[reference(resourceId(resourceGroup().name, 'Microsoft.Network/virtualNetworks/subnets', parameters('vNetName'), 'default'), '2018-03-01').networkSecurityGroup.id]"
                                      }
                                    }
                                  }
                                ]
                              }
                            }
                          }
                        ]
                      },
                      "parameters": {
                          "vNetName":    {
                            "value": "[field('fullName')]"
                          },
                          "RouteTableName": {
                            "value": "[parameters('RouteTableName')]"
                          },
                          "NVAip": {
                            "value": "[parameters('fortigateIp')]"
                          },
                          "location": {
                            "value": "[field('location')]"
                          }
                      }
                  }
              }
          }
      }
  }
...