在Azure门户中何处查看Terraform Azure Redis缓存设置public_network_access_enabled的效果?

2uluyalo  于 2023-03-24  发布在  Redis
关注(0)|答案(1)|浏览(139)

我一直在学习如何使用Terraform在Azure中提供资源,包括Redis缓存。
我创建了两个示例,内容如下:

resource "azurerm_redis_cache" "my-public-cache" {
  name                = var.name
  location            = var.location
  resource_group_name = var.parent_resource_group.name
  capacity            = 0
  family              = "C"
  sku_name            = "Basic"
  enable_non_ssl_port = false
  minimum_tls_version = "1.2"
  public_network_access_enabled = true
  redis_version = 6
}

resource "azurerm_redis_cache" "my-private-cache" {
  name                = var.name
  location            = var.location
  resource_group_name = var.parent_resource_group.name
  capacity            = 0
  family              = "C"
  sku_name            = "Basic"
  enable_non_ssl_port = false
  minimum_tls_version = "1.2"
  public_network_access_enabled = false
  redis_version = 6
}

除了名称之外,唯一的区别是public_network_access_enabled设置。所以一个是“public”,另一个不是。
这似乎是工作,因为我可以连接到公共一个从我的工作站,但不是另一个。
我的问题是,这实际上对这两个示例产生了什么影响,以及我在Azure门户中的什么地方可以看到这种差异?我一直在门户中查看它们,但我看不到任何不同之处。当同事们询问该设置实际上产生了什么差异时,我希望能够在门户中指出一些东西。但目前,我不能。
编辑:为了清楚起见,问题不是“我如何连接到私有示例?”。另一种表达问题的方式可以是:如何查看这两个示例并区分哪个是公共的,哪个是私有的(假设名称不会给予,并且私有端点的存在不会提供任何线索)?

83qze16e

83qze16e1#

我在自己的环境中尝试,得到了以下结果:

这实际上对两个示例产生了什么不同,我可以在Azure门户的哪里看到这种差异?

  • 当您设置**public_network_access_enabled = true**时,它会将Redis网络的Azure缓存部署为您提到的“公共”。
  • 设置**public_network_access_enabled = false**后,会将Redis网络的Azure Cache部署为“私有”。

当你在azure缓存中创建一个私有网络时,你需要将私有端点添加到terraform代码中。

一米二米一x

provider "azurerm" {
  features {}
}                           
  
data "azurerm_resource_group" "example" {
  name     = "<your resource name>"
}
resource "azurerm_virtual_network" "example" {
  name                = "vnet326"
  address_space       = ["10.0.0.0/16"]
  resource_group_name = data.azurerm_resource_group.example.name
  location            = data.azurerm_resource_group.example.location
}

resource "azurerm_subnet" "example" {
  name                 = "subnet1"
  resource_group_name  = data.azurerm_resource_group.example.name
  virtual_network_name = azurerm_virtual_network.example.name
  address_prefixes     = ["10.0.2.0/24"]
}

resource "azurerm_redis_cache" "example" {
  name                = "privatecache"
  location            = data.azurerm_resource_group.example.location
  resource_group_name = data.azurerm_resource_group.example.name
  capacity            = 2
  family              = "C"
  sku_name            = "Standard"
  enable_non_ssl_port = false
  minimum_tls_version = "1.2"
  public_network_access_enabled = false
  redis_version = 6
}
resource "azurerm_private_endpoint" "example" {
  count               = 1
  name                =  "endpoint1"
  resource_group_name = data.azurerm_resource_group.example.name
  location            = data.azurerm_resource_group.example.location
  subnet_id           = azurerm_subnet.example.id

  private_service_connection {
    name                           = "service1"
    private_connection_resource_id = azurerm_redis_cache.example.id
    is_manual_connection           = false
    subresource_names              = ["redisCache"]
  }
}

输出:

上面的代码已成功执行,您可以在门户中看到差异。

门户网站:

参考:How to implement in terraform azure for redis with private endpoint? - Stack Overflow by Tom Lime。

相关问题