Azure DeployIfNotExist策略评估但不部署符合模板/显示的策略

时间:2019-06-10 08:54:46

标签: azure policy

我正在研究DeployIfNotExist Azure策略,该策略检查所有vnet,检查是否存在特定的对等连接,如果存在,则检查UDR设置。如果与指定的内容不同,则它旨在部署所需的UDR。

我无法使其正常工作,当前状态是初始检查可以正常工作(报告了不符合要求的vnet),但是没有对新的或更新的vnet进行自动修复。此外,如果我进行手动修复,则该vnet仍被标记为不合规。

下面的“蔚蓝政策政策规则”。

{
  "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')]"
                          }
                      }
                  }
              }
          }
      }
  }

1 个答案:

答案 0 :(得分:0)

这似乎是您的ARM模板有问题。我一定会测试并检查它。现在,ARM VSCode扩展具有假设测试功能,可让您了解部署该模板时发生的情况。