Terraform:如何在子网提供中附加 NSG 和服务端点
Terraform : How to attach NSG and Service Endpoints in subnet provision
在 Azurerm 中有没有办法提供带有 NSG 附件的子网并提供服务端点。这是考虑到我们有一个在子网上强制执行 NSG 的策略。所以 - - 如果子网是一个单独的资源(作为一个单独的资源 nsg_id 不再是参数) - 它会使策略失败。
作为 vnet 下的子资源,可以附加 nsg_id - 但没有提供服务端点或服务委托的参数。
您可以使用 Terraform 语言 local-exec Provisioner 或 remote-exec provisioner 部署服务端点或服务委托,以在创建资源后调用 PowerShell 或 CLI 脚本。
例如,您可以使用 az network vnet subnet update 为子网启用服务端点。
resource "null_resource" "example" {
provisioner "local-exec" {
command = "az network vnet subnet update -g ${azurerm_resource_group.example.name} -n 'subnet1' --vnet-name ${azurerm_virtual_network.example.name} --service-endpoints 'Microsoft.Sql'"
interpreter = ["PowerShell", "-Command"]
}
}
有关更多参考,您可以阅读 this blog- Terraform 中的多行 PowerShell。
在 Azurerm 中有没有办法提供带有 NSG 附件的子网并提供服务端点。这是考虑到我们有一个在子网上强制执行 NSG 的策略。所以 - - 如果子网是一个单独的资源(作为一个单独的资源 nsg_id 不再是参数) - 它会使策略失败。
作为 vnet 下的子资源,可以附加 nsg_id - 但没有提供服务端点或服务委托的参数。
您可以使用 Terraform 语言 local-exec Provisioner 或 remote-exec provisioner 部署服务端点或服务委托,以在创建资源后调用 PowerShell 或 CLI 脚本。
例如,您可以使用 az network vnet subnet update 为子网启用服务端点。
resource "null_resource" "example" {
provisioner "local-exec" {
command = "az network vnet subnet update -g ${azurerm_resource_group.example.name} -n 'subnet1' --vnet-name ${azurerm_virtual_network.example.name} --service-endpoints 'Microsoft.Sql'"
interpreter = ["PowerShell", "-Command"]
}
}
有关更多参考,您可以阅读 this blog- Terraform 中的多行 PowerShell。