打开策略代理定义动态全局变量
Open policy agent define dynamic global variable
我想知道是否有任何方法可以美化我的代码,因为它看起来非常低效而且完全不干。我想要实现的是从资源列表中提取特定资源(从 terraform 计划中命名为 "aks" 的资源),并针对它进行 运行 一些测试。问题是,我使用 some
关键字来获取它,这会阻止我配置全局变量,这会导致很多重复,例如:
aks_default_pool_type_vmss {
some index
input.planned_values.root_module.resources[index].type == "azurerm_kubernetes_cluster"
aks := input.planned_values.root_module.resources[index]
aks.values.default_node_pool[0].type == "VirtualMachineScaleSets"
}
aks_system_assigned_identity {
some index
input.planned_values.root_module.resources[index].type == "azurerm_kubernetes_cluster"
aks := input.planned_values.root_module.resources[index]
aks.values.identity[_].type == "SystemAssigned"
}
有什么方法可以创建一个 "global" 变量来捕获 aks 资源,以防止所有重新计算?
干杯。
您可以创建一个规则来创建一组 aks 对象(参见生成 sets in the OPA documentation):
clusters[aks] {
some index
input.planned_values.root_module.resources[index].type == "azurerm_kubernetes_cluster"
aks := input.planned_values.root_module.resources[index]
}
然后您的规则可以重写为以下内容:
aks_default_pool_type_vmss {
aks := clusters[_]
aks.values.default_node_pool[0].type == "VirtualMachineScaleSets"
}
aks_system_assigned_identity {
aks := clusters[_]
aks.values.identity[_].type == "SystemAssigned"
}
我想知道是否有任何方法可以美化我的代码,因为它看起来非常低效而且完全不干。我想要实现的是从资源列表中提取特定资源(从 terraform 计划中命名为 "aks" 的资源),并针对它进行 运行 一些测试。问题是,我使用 some
关键字来获取它,这会阻止我配置全局变量,这会导致很多重复,例如:
aks_default_pool_type_vmss {
some index
input.planned_values.root_module.resources[index].type == "azurerm_kubernetes_cluster"
aks := input.planned_values.root_module.resources[index]
aks.values.default_node_pool[0].type == "VirtualMachineScaleSets"
}
aks_system_assigned_identity {
some index
input.planned_values.root_module.resources[index].type == "azurerm_kubernetes_cluster"
aks := input.planned_values.root_module.resources[index]
aks.values.identity[_].type == "SystemAssigned"
}
有什么方法可以创建一个 "global" 变量来捕获 aks 资源,以防止所有重新计算?
干杯。
您可以创建一个规则来创建一组 aks 对象(参见生成 sets in the OPA documentation):
clusters[aks] {
some index
input.planned_values.root_module.resources[index].type == "azurerm_kubernetes_cluster"
aks := input.planned_values.root_module.resources[index]
}
然后您的规则可以重写为以下内容:
aks_default_pool_type_vmss {
aks := clusters[_]
aks.values.default_node_pool[0].type == "VirtualMachineScaleSets"
}
aks_system_assigned_identity {
aks := clusters[_]
aks.values.identity[_].type == "SystemAssigned"
}