- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
正在寻找有关我面临的以下问题的指导...
我们在 .tfvars 中定义映射,使用 for_each 引用这些映射来部署我们的模块。这已经运行了一段时间了......但是,我们最近部署了一个集群环境。因此,我们现在有两个应用程序服务器,在 .tfvars 中定义:
tfvars 中的 app_servers 映射:
app_servers = {
sr-app-1 = {
size = "Standard_E2s_v3"
admin_username = "azureuser"
data_disks = [64]
zone_vm = "1"
zone_disk = ["1"]
os_disk_size = 64
web_server = "sr-web-1"
},
sr-app-2 = {
size = "Standard_E2s_v3"
admin_username = "azureuser"
data_disks = [64]
zone_vm = "1"
zone_disk = ["1"]
os_disk_size = 64
web_server = "sr-web-2"
}
}
tfvars 中的 db_servers 映射
db_servers = {
sr-fdb-1 = {
size = "Standard_D4s_v3"
admin_user = "azureuser"
data_disks = [64, 64, 128]
zone_vm = "1"
zone_disk = ["1"]
os_disk_size = 128
app_server = "sr-app-1"
etl_server = "sr-etl-1"
}
sr-sdb-1 = {
size = "Standard_D4s_v3"
admin_user = "azureuser"
data_disks = [64, 64, 128]
zone_vm = "1"
zone_disk = ["1"]
os_disk_size = 128
app_server = "sr-app-1"
etl_server = "sr-etl-1"
}
}
我们使用 outputs.tf
填充 NSG 规则的 source_address_prefixes
(在模块外部,在 main.tf
中)来自底层 linux_vm 模块。由于我们在 db_servers
映射(如下)上使用 for_each
,因此我们无法访问 app_servers
映射。因此,我们向 db_servers
映射添加了一个键,以标识为每个 app_servers
运行的特定模块(请参见上面的 db_servers
映射):
outputs.tf(在 linux_vm 模块内):
output "linux_vm_ip" {
value = azurerm_network_interface.uks_network_interface.private_ip_address
}
output "linux_vm_nsg" {
value = azurerm_network_security_group.uks_network_security_group.name
}
main.tf:
module "fico_db_vm" {
for_each = var.db_servers
source = "../modules/compute/windows_vm"
source_image_id = var.db_image_id
vm_name = each.key
vm = each.value
subnet_name = "back-end-01"
resource_group = azurerm_resource_group.rg_uks_fico_db.name
data_disks = each.value["data_disks"]
enable_management_locks = true
}
resource "azurerm_network_security_rule" "fico-db-sr-1433" {
for_each = var.db_servers
name = "nsr-${var.location}-${var.environment}-${var.directorate}-${var.business_unit}-sql"
priority = 100
direction = "Inbound"
access = "Allow"
protocol = "*"
source_port_range = "*"
destination_port_range = "1433"
source_address_prefixes = [module.fico_app_vm[each.value.app_server].linux_vm_ip, module.fico_etl_vm[each.value.etl_server].windows_vm_ip]
destination_address_prefix = "VirtualNetwork"
resource_group_name = azurerm_resource_group.rg_uks_fico_db.name
network_security_group_name = module.fico_db_vm[each.key].windows_vm_nsg
}
这在我们的 SBOX/DEV 环境中运行良好,这些环境都是单实例 - 但是,我们现在已经将集群应用程序部署到我们的测试环境中。我无法找到将辅助应用程序服务器 IP 添加到上述 NSG 规则的好方法。
最初,我尝试向 db_servers 映射添加一个新 key (app_server2),以便可以以相同的方式引用:source_address_prefixes = [module.fico_app_vm[each.value.app_server].linux_vm_ip, module.fico_app_vm[each.value.app_server2].linux_vm_ip, module.fico_etl_vm[each.value.etl_server].windows_vm_ip]
它在 TEST 中按预期工作,但这并不可行,因为在我们现有的 SBOX/DEV 环境中运行相同的代码时,Terraform 计划会提示 app_server2
未定义...
我尝试将 app_server2
添加到 SBOX/DEV tfvars 作为“null”或只是一个空值,但这也提示因为 map 不能为空/null?
也许我在兔子洞里太远了,看不到明显的解决方案,任何建议/指导将不胜感激。
最佳答案
我最终通过删除我的 map 中对其他 map 的引用来解决这个特定问题......
相反,我在 main.tf 中添加了一些局部变量
locals {
app_vm_ips = [
for key, val in module.fico_app_vm :
module.fico_app_vm[key].linux_vm_ip
]
web_vm_ips = [
for key, val in module.fico_web_vm :
module.fico_web_vm[key].linux_vm_ip
]
etl_vm_ips = [
for key, val in module.fico_etl_vm :
module.fico_etl_vm[key].windows_vm_ip
]
}
然后,我在 azurerm_network_security_group_rule
资源中使用这些局部变量,如下所示:
resource "azurerm_network_security_rule" "fico-db-sr-1433" {
for_each = var.db_servers
name = "nsr-${var.location}-${var.environment}-${var.directorate}-${var.business_unit}-sql"
priority = 100
direction = "Inbound"
access = "Allow"
protocol = "*"
source_port_range = "*"
destination_port_range = "1433"
source_address_prefixes = concat(local.app_vm_ips, local.etl_vm_ips)
destination_address_prefix = "VirtualNetwork"
resource_group_name = azurerm_resource_group.rg_uks_fico_db.name
network_security_group_name = module.fico_db_vm[each.key].windows_vm_nsg
}
关于azure - Terraform NSG 使用 for_each 从多个模块输出规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67908112/
我最近开始使用 azure 开发 terraform。作为其中的一部分,我尽可能多地浏览了文档来创建资源。在此我尝试创建 AKS 集群。我能够创建成功。但我有一些担忧(我觉得有错误,如果我错了请纠正)
我正在尝试编写一个脚本来自动为我们的生产 NSG 创建 NSG 规则。我很确定我有一些接近工作的东西,但我遇到的问题是 Get-AZNetworkSecurityGroup 命令返回一个字符串,因此我
出于安全目的,是否可以将 NSG 启用到云服务?我尝试创建一个 Vnet,但无法将 NSG 添加到我创建的 vnet,不确定是否可以这样做。 最佳答案 您无法将 NSG 分配给云服务。云服务是 Azu
我正在将现有的 Azure 经典 VM 迁移到基于资源管理器的新 VM,希望得到一些建议。 新架构将具有 负载均衡器绑定(bind)到公共(public) IP 1 个虚拟网络 1 个网络安全组 1
我正在致力于备份 Azure Stack 的 Azure 网络安全。 我已经使用了 Azure Powershell,并且使用该模块我可以导出 CSV 中的现有配置,并使用导出的 CSV 重新部署内容
我在创建 VNET/子网时遇到一些困难。我也在使用 ASE,为此我只能使用经典 VNET。 Azure 提供两种类型的 VNET。根据创建方式(通过 Azure 门户、xplat-cli、旧门户、po
我的要求很简单。我需要将 NSG 关联到包含我的应用程序网关的子网。 一旦将 NSG 关联到此子网,我就会收到连接超时错误。 根据 Microsoft 文档,我添加了端口范围 65503-65534
我在创建 VNET/子网时遇到一些困难。我也在使用 ASE,为此我只能使用经典 VNET。 Azure 提供两种类型的 VNET。根据创建方式(通过 Azure 门户、xplat-cli、旧门户、po
我的要求很简单。我需要将 NSG 关联到包含我的应用程序网关的子网。 一旦将 NSG 关联到此子网,我就会收到连接超时错误。 根据 Microsoft 文档,我添加了端口范围 65503-65534
我有一个关于云中客户服务器的网络问题。 我们仅使用标准 2012R2 虚拟机,其中通过 NSG 防火墙设置了一些端点,并且我们在网络前端有一个 LoadBalancer,其中一些端口转发到同一 VPC
正在处理自定义策略强制子网和 nsg 关联的项目。如果子网没有与其关联的 NSG,则无法配置。 使用 terraform 部署资源 - 资源组、VNET、NSG,在创建子网之前,我创建了与子网关联的
我现在使用 Azure NSG 仅允许受信任的 IP 访问我自己的 VNET 中的 Azure IaaS VM 上托管的后端服务。 我的问题是,IP白名单策略足够安全吗?我想知道黑客是否有可能将源IP
我终于正确设置了一个 azure 的 sftp 容器实例,但在为其配置安全性时遇到了困难(很像 here )。 我的基本流程是这样的: Azure 上的 PIP -> -> 使用 PIP 的负载均衡器
尝试创建策略以启用现有 NSG 的 NSG 流日志(如果处于禁用状态)。完成任务的任何建议或引用。提前致谢。 最佳答案 现在可以通过 Azure Policy 运行 { "mode": "All"
我正在向 NSG 添加一条安全规则,允许访问端口 4239,1128,1129。通过 Azure 门户,它可以工作。通过 Powershell,它拒绝。 我使用以下代码来获取 NSG、添加安全规则并更
尝试创建策略以启用现有 NSG 的 NSG 流日志(如果处于禁用状态)。完成任务的任何建议或引用。提前致谢。 最佳答案 现在可以通过 Azure Policy 运行 { "mode": "All"
我正在向 NSG 添加一条安全规则,允许访问端口 4239,1128,1129。通过 Azure 门户,它可以工作。通过 Powershell,它拒绝。 我使用以下代码来获取 NSG、添加安全规则并更
我想为我的 NSG 出站部分创建一组规则,以仅允许连接到 Azure 服务。有 article了解如何使用 PowerShell 实现此目的,但我将 Linux 与 Azure CLI 结合使用。 除
问题描述 对Azure上的虚拟机资源,需要进行安全管理。只有指定的IP地址才能够通过RDP/SSH远程到虚拟机上, 有如下几点考虑: 1) 使用Azure Policy服务,扫描订阅中全部的网络安
我正在使用 ARM 模板创建新的 NSG,并更新同一 ARM 模板中的子网。我希望能够通过“引用”获取子网地址前缀,但这样做时我总是检测到循环依赖关系。有什么办法解决吗?我的子网臂模板部分如下所示:
我是一名优秀的程序员,十分优秀!