- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Terraform 代码的架构大致如下:
module "firewall_hub" {
# This creates the Azure Firewall resource
source = "/path/to/module/a"
# attribute = value...
}
module "firewall_spoke" {
# This creates, amongst other things, firewall rule sets
source = "/path/to/module/b"
hub = module.firewall_hub
# attribute = value...
}
module "another_firewall_spoke" {
# This creates, amongst other things, firewall rule sets
source = "/path/to/module/c"
hub = module.firewall_hub
# attribute = value...
}
即,Azure 防火墙资源在 module.firewall_hub
中创建,用作 module.firewall_spoke
和 module.another_firewall_spoke
的输入> 创建必要的资源并将防火墙规则集注入(inject)防火墙资源。重要的是,规则集在分支模块之间是互斥的,并且被设计成它们的优先级不重叠。
当我尝试部署此代码(构建或销毁)时,Azure 抛出错误:
Error: deleting Application Rule Collection "XXX" from Firewall "XXX (Resource Group "XXX"): network.AzureFirewallsClient#CreateOrUpdate: Failure sending request: StatusCode=0 -- Original Error: autorest/azure: Service returned an error. Status= Code="AnotherOperationInProgress" Message="Another operation on this or dependent resource is in progress. To retrieve status of the operation use uri: https://management.azure.com/subscriptions/XXX" Details=[]
我的工作假设是,即使规则集是互斥的,也不能同时针对同一防火墙发出防火墙规则集的多个创建/更新/删除请求。事实上,如果您在部署失败后等待一分钟左右并重新启动它(无需更改任何 Terraform 代码或手动更新 Azure 中的资源),它将愉快地继续运行,不会出现错误并成功完成。
为了测试我的假设,我尝试通过强制模块序列化来解决这个问题:
module "another_firewall_spoke" {
# This creates, amongst other things, firewall rule sets
source = "/path/to/module/c"
hub = module.firewall_hub
# attribute = value...
depends_on = [module.firewall_spoke]
}
但是,不幸的是,按照我的模块的编写方式这是不可能的:
Providers cannot be configured within modules using count, for_each or depends_on.
如果没有重写我的模块(不是一个选项),是否可以解决这个竞争条件 - 如果这是问题 - 或者你会认为它是 azurerm
提供程序的错误(即,它应该识别 API 错误响应并等待轮到它,直到超时)?
(Terraform v1.1.7、azurerm
v2.96.0)
最佳答案
根据 @silent 向 this answer 举报,我能够使用其中描述的方法解决比赛。
类似这样的事情:
module "firewall_hub" {
# This creates the Azure Firewall resource
source = "/path/to/module/a"
# attribute = value...
}
module "firewall_spoke" {
# This creates, amongst other things, firewall rule sets
# Has an output "blockers" containing resources that cannot be deployed concurrently
source = "/path/to/module/b"
hub = module.firewall_hub
# attribute = value...
}
module "another_firewall_spoke" {
# This creates, amongst other things, firewall rule sets
source = "/path/to/module/c"
hub = module.firewall_hub
waits_for = module.firewall_spoke.blockers
# attribute = value...
}
因此,技巧是让您的模块导出一个输出,其中包含需要首先部署的所有依赖资源的列表。然后,这可以作为后续模块的输入,通过线程传递到需要 depends_on
值的实际资源。
也就是说,在我的模块深处,资源有:
resource "some_resource" "foo" {
# attribute = value...
depends_on = [var.waits_for]
}
使用此方法时需要记住两个重要注意事项:
模块中的 wait_for
变量必须类型为 any
; list(any)
不起作用,因为 Terraform 将此解释为同类列表(很可能不是)。
奇怪的是,在我看来,depends_on
子句要求您显式使用列表文字(即 [var.waits_for]
而不仅仅是 var .waits_for
),即使如果您正在线程处理的变量是一个列表。这不会在我的脑海中进行类型检查,但显然 Terraform 不仅可以接受它,而且它期望它!
关于azure - 无法在 Terraform 中同时创建多个 Azure 防火墙规则集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71750621/
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 6年前关闭。 Improve t
我正在尝试部署启用了策略的 Azure 防火墙高级版,并且需要添加网络规则集合负载。 我在参数文件中有规则集合,需要循环遍历每个规则集合并将其添加到策略中。 "FirewallSettings": {
无论如何,我对 symfony 都不陌生,但我一直使用 FOSUserBundle,默认情况下,它会阻止用户使用 2 个不同的登录表单来验证两种不同的用户类型。 我有两个实体,一个是Admins,另一
如果防火墙内的客户端通过 TCP 连接到公共(public)服务器,一旦连接形成,防火墙就允许双向通信。这是我们在日常使用中通常看到的。我的问题是:这也适用于 UDP 吗? 由于UDP没有连接,我将稍
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 9 年前。 Improve
我目前正在为一家公司编写 windows-firewallmanager。 问题是,我只能通过名称而不是 INetFwRule 对象或其他方式删除条目。 有些条目具有两次相同的名称,其中一个用于 TC
我有一个防火墙实现,我想记录在机器上访问过的所有网站。因此,当用户在浏览器(任何浏览器)中输入地址或单击链接时,能够记录访问的地址。 问题是我只想记录访问过的地址,而不是页面请求的其他资源(广告、if
刚好手工装完一台CentOS6.4,就顺便记录一下。 复制代码 代码如下: # sestatus SELinux status:  
我是 Windows 防火墙的新手。我看过这个对话,但无法理解它的含义。 上面的对话框说 “允许 python 在这些网络上通信:” .然后它提供了两个复选框,一个用于每个专用网络,一个用于公共(pu
在我看来,ClickOnce 应用程序无法与 Windows Firewall 顺利运行。 . 我已经成功使用 ClickOnce 部署两年了。现在企业已升级到Windows 7,这遇到了障碍。每个用
我的 C# 应用程序使用端口 777 进行异步通信,使用端口 3306 与 My Sql Server 进行通信。当端口被防火墙阻止时,就会出现问题。我试图创建一个程序来在 Windows 7 的防火
我正在开始研究智能防火墙,但在此之前,我需要清楚地了解非常基本的防火墙如何工作。由于我和我的团队最擅长 C 语言,我们将使用它。 有人可以举一个用 C 语言编写的非常基本的防火墙的例子吗? 最佳答案
我正在尝试以编程方式创建出站 Windows 防火墙规则。此外,我想以编程方式启用和禁用此规则。我怎样才能在 C# 中执行此操作?手动,我可以通过进入控制面板,单击 Windows 防火墙,然后单击高
有人用过android intent firewall吗? http://www.cis.syr.edu/~wedu/android/IntentFirewall/ 我用 genymotion 模拟器
我编写了一个简单的 Java 应用程序,它使用套接字与自身的多个实例进行交互。第一个实例自动承担服务器的角色,监听特定端口,所有后续实例都连接到它。 我遇到的问题是 Windows 防火墙弹出询问我是
我有一个通过 ClickOnce 安装和更新的应用程序。该应用程序通过FTP下载文件,因此需要添加为windows防火墙的异常(exception)。由于 ClickOnce 的工作方式,EXE 的路
我很难在 C++ 中找到与 Windows 防火墙相关的任何内容(关于如何将应用程序添加到除列表之外、关闭端口或禁用对某些应用程序的 Internet 访问)。我发现甚至 MS 网站都显示了 Visu
我有一些使用 docker-compose up 运行的项目。该项目在端口 4200、后端 3000 和 db 5342 上有前端。当我使用 docker-compose 运行它时,所有这些端口都是公
用python编写的程序,它选择可用于TCP和UDP通信的随机端口。如果我通过运行 sudo ufw enable 启用 Linux 防火墙(ufw) .我们可以通过给出允许任何端口 sudo ufw
使用命令提示符修改 Windows 防火墙 我可以允许域/公共(public)/私有(private)复选标记全部出现在同一行中吗(就像我可以手动单击一样)? 到目前为止,我有 3 个条目,每种类型有
我是一名优秀的程序员,十分优秀!