我有一个地形化的 Azure MySQL 实例和一个在 Azure 容器实例中运行的 WordPress docker 实例。两者都很好,但我看不到自动允许从容器实例访问 MySQL 的方法,因为 1)流量不是通过外部 IP 地址来的,2)我不知道实际的 IP 地址在哪里正在创建,并且 3) 我看不到确定 IP 地址是什么的方法。
resource "azurerm_container_group" "wp-container-group" {
name = var.container_group_name
location = azurerm_resource_group.wordpress-resource-group.location
resource_group_name = azurerm_resource_group.wordpress-resource-group.name
ip_address_type = "public"
dns_name_label = var.dns_label
os_type = "Linux"
container {
name = "wordpress"
image = "wordpress:latest"
...
}
...
}
resource "azurerm_mysql_server" "wordpress_mysql" {
name = "foo-bar"
location = azurerm_resource_group.wordpress-resource-group.location
resource_group_name = azurerm_resource_group.wordpress-resource-group.name
....
}
resource "azurerm_mysql_database" "wp-db" {
name = "wordpress"
resource_group_name = azurerm_resource_group.wordpress-resource-group.name
server_name = azurerm_mysql_server.wordpress_mysql.name
charset = "utf8"
collation = "utf8_general_ci"
}
这设置为允许来自外部 IP 地址的流量:
resource "azurerm_mysql_firewall_rule" "allow_container" {
name = "allow_wordpress_container"
resource_group_name = azurerm_resource_group.wordpress-resource-group.name
server_name = azurerm_mysql_server.wordpress_mysql.name
start_ip_address = azurerm_container_group.wp-container-group.ip_address
end_ip_address = azurerm_container_group.wp-container-group.ip_address
}
当我 SSH 进入容器实例并尝试通过命令行连接时mysql
,它告诉我它使用的 IP 地址与外部地址不同——内部地址在 52.xxx 范围内。我可以手动将此 IP 地址添加为防火墙规则,但我想自动添加。
所以我的问题是:这个 52.xxx 地址在哪里分配,如何在 Terraform 中访问它,以便我可以自动配置容器实例和 mysql 之间的防火墙规则?