Terraform - 在 Variables.tf 中添加 type = map(object()) 的验证

2024-02-01

首先感谢这篇文章在 variavles.tf 中添加 type = map(object()) 的默认字段 https://stackoverflow.com/questions/64336021/adding-a-default-field-for-type-mapobject-in-variavles-tf?newreg=16ddc077eee64236930ba88ab1789e40,这回答了我在获取默认值以与类型 map(object()) 一起使用时遇到的困难的第一部分。我试图开始工作的最后一部分是如何验证输入值。

terraform {
  experiments = [module_variable_optional_attrs]
}

variable "dns_server" {
  description = "Add DNS Servers for domain resolution.  You can configure a maximum of two servers.  Only one can be preferred 'true'."
  type = map(object({
    preferred = optional(bool)
    server    = optional(string)
  }))
  default = {
    default = {
      preferred = false
      server    = "198.18.1.1"
    }
  }
  validation {
    condition = (
      can(regexall("^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$", var.dns_server["server"]))
    )
    error_message = "The DNS Server is not a valid IPv4 Address."
  }
}

locals {
  dns_server = {
    for k, v in var.dns_server : k => {
      preferred = coalesce(v.preferred, false)
      server = coalesce(v.server, "198.18.1.1")
    }
  }
}

我知道变量字段中的默认值未使用,但我将其用作 terraform 文档输出的占位符。

我还知道上面的验证内容不正确,因为如果用户使用默认服务器 IPv4,则在本地定义之前不会设置该服务器。我只是不知道如何进行验证,因为我可靠的谷歌搜索没有找到任何类似的例子。

如果您需要有关如何使用该代码的更多详细信息,该代码位于此处:

https://github.com/scotttyso/terraform-aci-fabric/tree/main/test https://github.com/scotttyso/terraform-aci-fabric/tree/main/test

如果我注释掉验证,其他一切都工作正常。提前致谢。


这就是你所追求的吗?

variable "mapobject" {
 type = map(object({
   cidr_block = string
   destination_type = string
   }
  ))

 validation {
  condition = alltrue([
     for o in var.mapobject : contains(["CIDR_BLOCK","NETWORK_SECURITY_GROUP","SERVICE_CIDR_BLOCK"],o.destination_type)])  error_message = "All destination_types must be one of CIDR_BLOCK,NETWORK_SECURITY_GROUP or SERVICE_CIDR_BLOCK!"
   }
}

变量赋值为

mapobject = {
 "r0" = {cidr_block = "10.1.1.0/24",destination_type = "CIDR_BLOCK" }
}

验证成功,如下失败(按要求)

mapobject = {

“r0”= {cidr_block =“10.1.1.0/24”,destination_type =“CIRD_块" } }

Error: Invalid value for variable

  on main.tf line 86:
  86: variable "mapobject" {

All destination_types must be one of CIDR_BLOCK,NETWORK_SECURITY_GROUP or
SERVICE_CIDR_BLOCK!

This was checked by the validation rule at main.tf:93,2-12.

如果是的话,那么荣誉就在这里:https://discuss.hashicorp.com/t/validate-list-object-variables/18291/2 https://discuss.hashicorp.com/t/validate-list-object-variables/18291/2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Terraform - 在 Variables.tf 中添加 type = map(object()) 的验证 的相关文章

  • Rails 3 UJS 干客户端 + 服务器端表单验证

    使用 jQuery 进行表单验证就像向字段添加类名一样简单 使用 Rails 进行表单验证就像将条件放入控制器 和 或模型 中一样简单 我认为应该有一种方法可以编写一次验证并将它们应用到客户端和服务器端 我一直热衷于编写自己的 javasc
  • 电话号码的正则表达式,不允许全零

    需要您的正则表达式帮助 我当前的正则表达式是 d 8 最小长度为 8 不允许包含字母 特殊字符和空格 我还想禁止全零 如 00000000 Thanks 该模式应该可以满足您的需求 0 d 8 The 0 部分是负前瞻 将阻止仅输入零 Ex
  • 如何使用 terraform 创建 azure 应用程序注册和客户端密钥

    我正在尝试为 Azure 应用程序注册和客户端密钥创建 Terraform 代码 对订阅具有读取访问权限的服务主体 基本上 我正在尝试将 Azuresafe 与 Terraform 集成 并尝试确定如何逐步配置 https docs saf
  • 该捆绑包无效。 Apple 目前不接受使用此版本操作系统构建的应用程序。 (小牛队)

    我首先说我已经安装了 Mavericks 我很好奇看到新功能 最好还是等待 因为 显然 没有什么耸人听闻的变化 无论如何 我正在尝试将我的应用程序提交到应用程序商店 但经过与代码签名的真正艰苦斗争后 我最终得到了以下消息 此捆绑包无效 Ap
  • python 中未定义变量

    你好 我对 python 编程很陌生 我正在开始我的第一个程序 但我遇到了一些麻烦 有没有更好的方法来执行下面的代码片段 当我运行该程序时 我得到 yes no 未定义 def main print n Welcome to registr
  • AJAX Rails 验证

    我的表单和验证可以很好地处理常规的 http 请求 我希望它使用 AJAX 我知道我可以在客户端进行验证 但这似乎是多余的 因为我已经在模型中定义了验证 当用户填写表单时 我想就他们的条目向他们提供反馈 在 AJAX 表单中使用 Rails
  • django如何将字符串转换为模块?

    我试图了解 django 的另一个神奇之处 它可以将字符串转换为模块 In settings py INSTALLED APPS声明如下 INSTALLED APPS django contrib auth django contrib c
  • `docker run` 输出到 bash 变量 - 奇怪的行为

    我看到一些奇怪的行为从docker run到 bash 变量中 简单的例子 bin bash PWD docker run rm ti ubuntu pwd 2 gt 1 also tried with PWD docker run wit
  • 使用 React Hook Form 和 Yup 进行文件输入验证

    我尝试使用 React Hook Form 进行文件输入验证 是的 我写了下面的代码 但是当我测试文件的大小时 它在这里显示console log value 0 size 即使我在文件输入中选择了一个文件 该值也是未定义的 这有什么问题吗
  • 如何在 Ruby 中列出局部变量?

    def method a 3 b 4 some method that gives a b end 局部变量 http ruby doc org core Kernel html method i local variables 它输出符号
  • 使用 ASP.NET MVC Linq To SQL 进行验证:如何避免编辑生成的源?

    我正在阅读一些关于验证的文档ASP NET MVC 忽略那些建议重新发明轮子编写自己的验证逻辑的人 大多数文章提倡使用xVal或数据注释验证器 两者都允许通过装饰模型的属性 进行声明性验证 我想我会去xVal 因为它似乎是最受建议的 因此
  • 在 Spring 中为 @Pathvariable 添加类级别验证

    在发布这个问题之前 我已经做了很多研究并尝试了很多可用的解决方案 这是我陷入的棘手情况 我有一个 Spring 控制器 它有多个请求映射 它们都有 PathVariables 控制器如下所示 Controller EnableWebMvc
  • 角度 4 单击按钮功能未触发

    我正在尝试检查文本输入是否为空或不在角度 4 中 我没有为此使用表单 这只是一个输入字段 当我在下面的按钮中执行 addLocaton 函数时 需要进行检查 我的输入字段
  • 使用正则表达式验证器上传文件不适用于仅 Firefox IE

    我有一个带有 RegularExpressionValidator 的 FileUpload 和以下验证表达式 a zA Z 2 w w w gif jpg JPG JPEG GIF jpeg png bmp 3dm 3dmf ai drw
  • 必填字段验证器中的数字验证

    是否可以将数字验证放入 asp net 文本框中的必填字段验证器中 您应该使用比较验证器 http msdn microsoft com en us library system web ui webcontrols comparevali
  • 如何对我的自定义验证属性进行单元测试

    我有一个自定义的 asp net mvc 类验证属性 我的问题是如何对其进行单元测试 测试类是否具有该属性是一回事 但这实际上并不能测试其中的逻辑 这就是我想测试的 Serializable EligabilityStudentDebtsA
  • 如何在字段值无效的情况下更改 Struts2 验证错误消息?

    我在 Web 表单上使用 Struts2 验证 如果字段假设为整数或日期 则
  • WPF 中列表框的数据验证

    我有一个 ListBox 绑定到类型 T 的 ObservableCollection 每个 ListBoxItem 都是一个复选框 IsChecked 绑定到 T 中的 bool 属性 我想验证 ListBox 中的选中项 以便至少必须选
  • EditText 中的验证允许 IP 或 Web Url 主机

    我需要对我的 EditText 进行验证 以便它允许我输入有效的 IP 地址格式 即示例 132 0 25 225 or 网址格式 www 例如 www example com 逻辑是 如果用户首先输入任何数值 则验证 IP 将执行操作 否
  • 验证纬度和经度

    我想验证纬度和经度 现在 我只是检查该值是否不为空 但我想要进行验证以检查它是否是有效的纬度或经度 我怎么做 我的财产是这样的 public string Lat get return this lat set base Validatio

随机推荐

  • Safari 7 中忽略的断点

    我在 Safari 7 中调试 JavaScript 时遇到问题 我设置的断点被忽略了 我知道您启用 禁用所有断点 并且它们肯定已启用 它只是根本不停止代码执行 还有其他人经历过这个吗 有什么想法吗 也许您禁用断点 https develo
  • 从 DataGridView 中获取选定的行

    每当用户单击 添加到购物车 按钮时 我都会将用户在 找到的项目 网格 屏幕截图的左侧 中选择的那些行添加到 选择的项目 网格 屏幕截图的右侧 中 屏幕截图 链接http img856 imageshack us img856 3015 da
  • android - 将 dp 转换为 float

    我的字体大小是12dp 我正在使用设置字体TextPaint 因为我使用的是跨度 问题是参数TextPaint接受是浮动的 我想知道如何将 12 dp 转换为浮点数 From android content res Resources ge
  • 系统调用位于 glibc 源代码中的哪里

    所以我正在查看 linux glibc 源代码 但我没有看到它实际上在哪里做了任何事情 以下内容来自io chdir c但它表明了许多源文件 这里发生了什么 显然我错过了一些东西 秘密是什么 它在哪里进行系统调用或实际执行某些操作 stub
  • 创建有角度的彩色横幅

    您好 我正在尝试在 HTML 和 CSS 中创建以下斜条外观 只是蓝色和紫色区域 后面是白色 我显然可以看到如何使用图像来做到这一点 但是仅 HTML CSS 又如何呢 这可能吗 它在网站上使用 www africa dating 我知道我
  • 如果“git push heroku master”失败怎么办?

    我的本地 Windows XP 计算机上有一个可以运行的 Rails 应用程序 我想将其上传到 Heroku 上 我按照这个教程https devcenter heroku com articles rails3 https devcent
  • Bootstrap 响应式网格布局(3 列),每个网格元素下方具有折叠/隐藏的 col-12

    我试图使 100 列出现在引导网格列内的元素下方 因为用图片更容易理解 所以我想要实现的目标是 选择其中一张图像 1 到 x 时 隐藏的 div 具有不同的内容 应以完整的 12 列大小显示在图像下方 我设法做到了这一点 但是 当使用较小的
  • Rpm 构建限制

    我是 rpm 打包的初学者 据我了解 由于 cpio 限制 rpm build 在文件大小 gt 4GB 时存在问题 因此 我使用 gnu split 将包中的大文件拆分为 512MB 的文件 这是作为 rpmbuild 的一部分完成的 因
  • 我应该在本地存储 Google Web Fonts API 生成的 CSS 吗?

    我正在使用一些谷歌网络字体 我听说 Google 处理不同浏览器之间的所有问题 并根据请求标头中的浏览器提供不同的媒体 我的问题是 它在什么时候执行此操作 原因是对于 API 您可以简单地包含一个 CSS 文件 其中包含 font face
  • 在 Mac 中启动并运行 appium [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我刚刚安装了 Java 和 appium 如下面的链接所述 在 macOS sierra 10 12 3 上安装 appium https
  • json 和多维数组

    我有一个像这样的多维数组 Array 1 gt Array product id gt 1 product model gt HFJ5G1 5 product type gt plat product return gt graviteit
  • 如何迭代 RecyclerView 中的所有视图/项目?

    我需要遍历所有RadioGroups in my RecyclerView 我尝试过的代码 for int i 0 i
  • 在 datefiled 中覆盖 Django auto_now

    有没有办法将日期传递到覆盖 auto now 的数据字段 如果日期未通过 我只想使用 auto now 根据文档 请注意 始终使用当前日期 这不仅仅是默认设置 您可以覆盖的值 https docs djangoproject com en
  • 如何在 Eclipse 中使用 MATLAB?

    在我的计算机科学课程中 我们使用 MATLAB 来编写所有作业 测验问题等 我已经使用 Eclipse 进行 Java 编码和 Android 编码 是否可以使用 Eclipse 在 MATLAB 中进行编码 Eclipse 的 MATLA
  • 我真的需要将“&”编码为“&”吗?

    我正在使用一个 我的网站中带有 HTML5 和 UTF 8 的 符号
  • 耙子中止!无法加载此类文件——El Capitan 上的 mysql2/mysql2

    从过去两周开始 我一直在尝试在 Mac 上设置我的代码 以前我使用的是 Ubuntu 设置代码从未如此困难 我几乎遵循了所有教程 但没有运气 请任何人指导我在 mac 上设置 RoR 在遵循所有教程之后 我最终只遇到 mysql 错误 ra
  • 为什么cursorLoader没有通知源数据的变化?

    我有一个简单的 contentProvider 一个带有 ListView 的布局以及一个用于在内容提供程序和 CursorLoader 中添加项目的按钮 这android content Loader D http developer a
  • 如何使用 wget 下载页面但如果页面不存在则忽略 404 错误消息?

    有什么办法可以拥有wget下载 URL 或抓取网页时忽略 HTTP 错误响应代码 假设我理解你所说的 忽略错误 的意思 你可以尝试 content on error争论 根据 wgetmanual http www gnu org soft
  • 图标、资产目录和 Info.plist 混乱

    我有一个应用程序 它最初是在 iOS 5 上运行的 并且从那时起就一直在更新 对于 iOS 7 我已改用资产目录来存储所有资源 这很好 而且看起来效果很好 但是 当我尝试提交给 Apple 时 我收到验证错误 图像路径无效 在键 CFBun
  • Terraform - 在 Variables.tf 中添加 type = map(object()) 的验证

    首先感谢这篇文章在 variavles tf 中添加 type map object 的默认字段 https stackoverflow com questions 64336021 adding a default field for t